prreviewbuddy 0.95.2 → 0.96.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prreviewbuddy",
3
- "version": "0.95.2",
3
+ "version": "0.96.2",
4
4
  "description": "Understand code changes before you approve them. Local branch and pull request reviews with Claude Code or Codex.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://prreviewbuddy.com",
@@ -0,0 +1 @@
1
+ function e(e,t){e.addEventListener(`pageshow`,e=>{e.persisted&&t()})}var t=[`checkbox`,`radio`,`button`,`submit`,`reset`].map(e=>`:not([type="${e}"])`).join(``);function n(e){if(!e||typeof e.closest!=`function`)return!1;let n=e;return n.isContentEditable?!0:n.closest(`input${t}, textarea, select, [contenteditable=""], [contenteditable="true"]`)!==null}var r=`prbNav`,i=`prb-workspace`,a=`prb-nav-session`,o=`prb-nav-head`,s=`prb-nav-handoff`,c=`prb-nav-places`,l=200,u=15e3,d=`unstored`;function f(e){if(!e||typeof e!=`object`)return null;let t=e[r];if(!t||typeof t!=`object`)return null;let{v:n,owner:i,session:a,idx:o,id:s,ui:c}=t;if(n!==1||i!==`prb-workspace`||typeof a!=`string`||a===``||typeof o!=`number`||!Number.isInteger(o)||o<0)return null;let l=c&&typeof c==`object`&&!Array.isArray(c)?c:null;return{v:n,owner:i,session:a,idx:o,...typeof s==`string`&&s!==``?{id:s}:{},ui:l}}function p(e){if(!e||typeof e!=`object`)return{};let{[r]:t,...n}=e;return n}function m(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.owner===`prb-workspace`&&n.session===t}function h(e,t){try{return e?.getItem(t)??null}catch{return null}}function g(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n)}catch{}}function _(e){let{history:t,storage:n,location:_}=e,v=e.navigation??null,y=[],b=null,x=null,S=null,C=t=>{S!==null&&e.clearTimeout(S),S=t?t():null,e.capturePending(S!==null)},w=null,T=(()=>{if(!n)return d;let t=h(n,a);if(t)return t;let r=e.uuid();return g(n,a,r),h(n,a)===r?r:d})(),E=()=>`${_.pathname}${_.search}`,D=e=>`${E()}${e}`,O=()=>{try{v?.updateCurrentEntry({state:{owner:i,session:T}})}catch{}},k=()=>{for(let e of y)e()},A=(e,n)=>{n===void 0?t.replaceState(e,``):t.replaceState(e,``,n),O()},j=()=>Number(h(n,o)??0)||0,M=()=>{try{let e=JSON.parse(h(n,c)??`{}`);return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}catch{return{}}},ee=(e,t)=>{if(!e||!n)return;let r=M();delete r[e],r[e]=t;let i=Object.keys(r);for(let e of i.slice(0,Math.max(0,i.length-l)))delete r[e];g(n,c,JSON.stringify(r))},te=e=>{if(!e)return null;let t=e.id?M()[e.id]:void 0;return t&&typeof t==`object`&&!Array.isArray(t)?t:e.ui},ne=()=>{if(!b)return null;try{return b()}catch{return null}},re=()=>{let a=f(t.state);if(a&&a.session===T&&a.id){w=a.id,O();return}let c=a?.idx??0;if(!a){let t=h(n,s);g(n,s,null),c=0;try{let n=t?JSON.parse(t):null,r=e.referrer!==``&&new URL(e.referrer).origin===_.origin;n&&r&&n.session===T&&typeof n.idx==`number`&&typeof n.at==`number`&&e.now()-n.at<u&&(c=n.idx+1)}catch{c=0}g(n,o,String(c))}let l=a?.id??e.uuid();w=l;let d={v:1,owner:i,session:T,idx:c,id:l,ui:a?.ui??null};A({...p(t.state),[r]:d})},N=()=>f(t.state)??{v:1,owner:`prb-workspace`,session:T,idx:0,ui:null},P=()=>{S!==null&&C(null);let e=ne();if(!e||!w)return;let n=JSON.stringify(e),i=f(t.state);if(!i||i.id!==w){ee(w,e);return}(n!==x||JSON.stringify(i.ui)!==n)&&(x=n,ee(w,e),A({...p(t.state),[r]:{...i,ui:e}}))},F=e=>{if(v){let t=v.currentEntry?.index;if(typeof t!=`number`||t<0)return!1;let n=v.entries()[t+e];if(!n)return!1;try{return m(n.getState(),T)}catch{return!1}}let n=f(t.state);return!n||n.session!==T||t.length<2?!1:e===-1?n.idx>0:n.idx<j()};re();try{t.scrollRestoration=`manual`}catch{}return{session:T,current(){return{route:p(t.state),ui:te(f(t.state))}},push(a,s){if(a!==``&&!a.startsWith(`#`))throw Error(`Workspace history pushes within this document only; "${a}" is not a fragment.`);if(D(a)===`${E()}${_.hash}`)return!1;P();let c=N().idx+1;g(n,o,String(c));let l=e.uuid(),u={v:1,owner:i,session:T,idx:c,id:l,ui:null};return w=l,t.pushState({...p(s),[r]:u},``,D(a)),x=null,O(),k(),!0},replace(e,t){if(e!==``&&!e.startsWith(`#`))throw Error(`Workspace history replaces within this document only; "${e}" is not a fragment.`);A({...p(t),[r]:N()},D(e))},setCapturer(e){b=e},captureNow:P,scheduleCapture(){C(()=>e.setTimeout(P,250))},leaving(){P(),g(n,s,JSON.stringify({session:T,idx:N().idx,at:e.now()}))},canGoBack:()=>F(-1),canGoForward:()=>F(1),back(){return F(-1)?(P(),t.back(),!0):!1},forward(){return F(1)?(P(),t.forward(),!0):!1},moved(){S!==null&&C(null);let e=ne();e&&ee(w,e),x=null,w=f(t.state)?.id??null;let n=f(t.state);!n||!n.id||n.session!==T?re():O(),k()},onAvailability(e){y.push(e)}}}function v(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function y(e){let t=e?.userAgentData?.platform??e?.platform??``;return/mac|iphone|ipad/i.test(t)}function b(e,t,r){if(e.defaultPrevented||e.isComposing)return null;let i=t?e.metaKey:e.ctrlKey,a=t?e.ctrlKey:e.metaKey;if(!i||a||e.altKey||e.shiftKey)return null;let o=e.key===`[`||e.key!==`]`&&e.code===`BracketLeft`?`back`:e.key===`]`||e.code===`BracketRight`?`forward`:null;return!o||n(e.target)||r.querySelector(`dialog[open], [data-menu-panel]:not([hidden])`)?null:o}var x=[`data-id`,`data-finding-card`,`data-goto-section`,`data-view-nav`,`data-file`,`data-line`,`data-history`,`data-history-toggle`,`data-load-more`,`data-select`,`data-pin`,`data-focus-toggle`,`data-ask-toggle`,`data-rail-toggle`,`data-search`,`data-status-filter`,`data-author-filter`,`data-pr-filter`,`data-card`,`data-placement`,`data-collection`,`data-notification-id`,`data-guide-section`,`data-guide-detail`,`data-view`];function S(e){if(e.id)return{attrs:[[`id`,e.id]]};let t=x.filter(t=>e.hasAttribute(t)).map(t=>[t,e.getAttribute(t)??``]);return t.length>0?{attrs:t}:null}function C(e,t){if(!e||e===t||!t.contains(e))return null;let n=[],r=e;for(;r&&r!==t&&n.length<3;){let t=S(r);t?n.unshift(t):r===e&&n.unshift({tag:r.tagName.toLowerCase(),...r.classList[0]?{cls:r.classList[0]}:{}}),r=r.parentElement}return n.length>0?n:null}function w(e){if(!e||typeof e!=`object`)return!1;let{attrs:t,tag:n,cls:r}=e;return t===void 0?typeof n==`string`&&/^[a-z][a-z0-9-]*$/.test(n)&&(r===void 0||typeof r==`string`):Array.isArray(t)&&t.length>0&&t.every(e=>Array.isArray(e)&&e.length===2&&x.concat(`id`).includes(e[0])&&typeof e[1]==`string`)}function T(e,t){return t.attrs?t.attrs.every(([t,n])=>e.getAttribute(t)===n):e.tagName.toLowerCase()===t.tag&&(t.cls===void 0||e.classList.contains(t.cls))}function E(e,t){let n=t.attrs?`[${t.attrs[0][0]}]`:t.tag;for(let r of e.querySelectorAll(n))if(T(r,t))return r;return null}function D(e,t){if(!Array.isArray(t)||t.length===0||!t.every(w))return null;let n=null,r=e;for(let e of t){let t=E(r,e);if(!t)return n;n=t,r=t}return n}function O(e){let t=e.activeElement;return{focus:C(t,e.body),focusVisible:t!==null&&t!==e.body&&t.matches(`:focus-visible`)}}function k(e,t,n){let r=D(e,t);if(!r)return;let i={preventScroll:!0,focusVisible:n===!0};if(r.tabIndex<0&&!r.matches(`a[href], button, input, select, textarea, summary`)){r.querySelector(`a[href], button:not([disabled]), input, select, textarea, [tabindex="0"]`)?.focus(i);return}r.focus(i)}function A(e,t){let n=e?.[t];return typeof n==`number`&&Number.isFinite(n)&&n>=0?n:null}function j(e,t){let n=e?.[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function M(e){try{return e.sessionStorage}catch{return null}}function ee(e,t){let n=e===`back`?`[`:`]`;return`${e===`back`?`Back`:`Forward`} (${t?`⌘${n}`:`Ctrl+${n}`})`}function te(e,t){if(e.target&&e.target!==`_self`||e.hasAttribute(`download`))return!1;let n;try{n=new URL(e.getAttribute(`href`)??``,t.href)}catch{return!1}return n.origin===t.origin?n.pathname!==t.pathname||n.search!==t.search:!1}function ne(e,t){let n=e.querySelector(`[data-nav-announce]`);!n||!t||(n.textContent=``,e.defaultView?.setTimeout(()=>{n.textContent=t},50))}function re(e={},t=window,n=document){let r=t.navigation??null,i=_({history:t.history,navigation:r,storage:M(t),location:t.location,referrer:n.referrer,now:()=>Date.now(),uuid:()=>t.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,setTimeout:(e,n)=>t.setTimeout(e,n),clearTimeout:e=>t.clearTimeout(e),capturePending:e=>n.documentElement.toggleAttribute(`data-nav-capture-pending`,e)}),a=y(t.navigator),o=[...n.querySelectorAll(`[data-history]`)],s=()=>{for(let e of o)e.disabled=!((e.dataset.history===`forward`?`forward`:`back`)==`back`?i.canGoBack():i.canGoForward())};for(let e of o){let t=e.dataset.history===`forward`?`forward`:`back`;e.dataset.tip=ee(t,a),e.addEventListener(`click`,()=>{t===`back`?i.back():i.forward()})}s(),i.onAvailability(s),r?.addEventListener?.(`currententrychange`,s),t.addEventListener(`keydown`,e=>{let t=b(e,a,n);t&&(e.preventDefault(),t===`back`?i.back():i.forward())}),t.addEventListener(`popstate`,()=>i.moved()),t.addEventListener(`pagehide`,()=>i.captureNow()),n.addEventListener(`visibilitychange`,()=>{n.visibilityState===`hidden`&&i.captureNow()}),n.addEventListener(`click`,e=>{let n=e.target?.closest?.(`a[href]`);!n||!v(e)||e.defaultPrevented||te(n,t.location)&&i.leaving()},!0),n.addEventListener(`pointerdown`,e=>{(e.button===3||e.button===4)&&i.captureNow()},!0);let c=()=>i.scheduleCapture();for(let e of[`scroll`,`click`,`input`,`toggle`,`focusin`])n.addEventListener(e,c,{capture:!0,passive:!0});if(!e.ownsRestore){let e=n.querySelector(`.prb-shell > main`);i.setCapturer(()=>({main:e?.scrollTop??0,...O(n)}));let{ui:t}=i.current(),r=A(t,`main`);e&&r!==null&&(e.scrollTop=r),t&&k(n,t.focus,t.focusVisible)}return i}var N=[{id:`active`,name:`Active`,action:`Move to active`},{id:`waiting`,name:`Waiting`,action:`Mark waiting`},{id:`done`,name:`Done`,action:`Mark done`}];function P(e){if(typeof e!=`object`||!e)return;let{state:t,at:n}=e;if(!(t!==`waiting`&&t!==`done`||typeof n!=`number`||!Number.isFinite(n)))return{state:t,at:n}}function F(e){return N.find(t=>t.id===e).action}function ie(e){return N.find(t=>t.id===(e?.state??`active`)).name}function ae(e){return e?.state===`waiting`?`menu`:e?.state===`done`?`active`:`done`}function oe(e){let t=ae(e);return`${ie(e)}. ${t===`menu`?`Choose what happens next`:F(t)}`}var se=[`created`,`updated`,`merged`,`closed`,`reopened`];function ce(e){return le({at:Number(e.activityAt),kind:e.activityKind,...e.activityMovedAt===void 0?{}:{movedAt:Number(e.activityMovedAt)}})}function le(e){if(typeof e!=`object`||!e)return;let{at:t,kind:n,movedAt:r}=e;if(!(typeof t!=`number`||!Number.isFinite(t)||!se.includes(n)))return{at:t,kind:n,...typeof r==`number`&&Number.isFinite(r)?{movedAt:r}:{}}}function ue(e,t){return!e||e.state===`waiting`&&fe(e,t)?`active`:e.state}function de(e,t){if(!e||!t)return;if(e.state===`waiting`)return fe(e,t)?`Changed while waiting`:void 0;if(t.kind===`reopened`&&t.at>e.at)return`Reopened since done`;let n=t.movedAt??(t.kind===`updated`?t.at:void 0);return n!==void 0&&n>e.at?`Changed since done`:void 0}function fe(e,t){return t!==void 0&&t.kind!==`created`&&t.at>e.at}function pe(e,t,n){return de(t,n)!==void 0||e!==(t?.state??`active`)}function me(e,t,n){return e===`done`&&t?.state===`done`&&de(t,n)!==void 0?`Keep done`:F(e)}var he=[`pinned`,`active`,`waiting`,`done`],ge=[`in-progress`,...he],_e=e=>N.find(t=>t.id===e).name,ve={"in-progress":{title:`In progress`,key:`i`},pinned:{title:`Pinned`,key:`p`},active:{title:_e(`active`),key:`a`},waiting:{title:_e(`waiting`),key:`w`},done:{title:_e(`done`),key:`d`}};function ye(e){return typeof e==`string`&&ge.includes(e)}function be(e){if(ye(e))return!0;if(typeof e!=`string`)return!1;let t=/^collection(?:-done)?:(.*)$/.exec(e);return t!==null&&Se(t[1])}var xe=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Se(e){return typeof e==`string`&&xe.test(e)}function Ce(e,t,n,r){return e&&!I(r)?`pinned`:ue(t,n)}function we(e,t,n,r,i){if(!(r&&!e&&!I(i)))return Ce(e,t,n,i)}function Te(e,t,n,r){if(!(e||I(r)))return ue(t,n)===`done`?`completed`:`active`}function Ee(e,t){let n=`${e} active`;return t===0?n:`${n} · ${t} pinned`}function De(e,t,n){let r=t.filter(t=>t.id!==n&&e.includes(t.id)).map(e=>e.name);if(r.length!==0)return`${n===void 0?`In`:`Also in`} ${r.join(`, `)}`}function Oe(e,t){if(!(e.active>0))return t?`Nothing in this collection matches the filters.`:e.members===0?`Nothing here yet. Add reviews from a card’s menu, or select several and choose Manage collections.`:e.pinned>0&&e.completed===0?`Its reviews are pinned, so they are listed under Pinned.`:`No active reviews`}function ke(e){return`Show completed (${e})`}function Ae(e,t,n){let r=new Map;for(let i of e){let e=t(i);if(e===void 0)continue;let a=r.get(e)??{shown:[],total:0};a.total<n(e)&&a.shown.push(i),a.total+=1,r.set(e,a)}return r}function je(e,t){let n=e.filter(e=>e.includes(t)).length;return n===0?`none`:n===e.length?`all`:`some`}function Me(e){return e===`all`?`remove`:`add`}var Ne=`none`;function Pe(e,t){if(t.length===0)return!0;let n=e??[];return n.length===0?t.includes(Ne):n.some(e=>t.includes(e))}function Fe(e,t){return e.length===0?`All`:e.length>1?`${e.length} chosen`:e[0]===`none`?`Uncollected`:t.find(t=>t.id===e[0])?.name??`All`}function I(e){return e===`queue`}var Ie=[`all`,`queue`,`in-progress`,`complete`],Le=[`any`,`open`,`merged`,`closed`],Re=[`q`,`f`,`by`,`pr`,`col`,`page`],ze={query:``,filter:`all`,author:``,pr:`any`,collections:[]};function Be(e){return e.query.trim()!==``||e.filter!==ze.filter||e.author!==ze.author||e.pr!==ze.pr||e.collections.length>0}function Ve(e,t,n){let r=n===void 0?`${e} review${e===1?``:`s`}`:`${e} of ${n} review${n===1?``:`s`}`;return e===t?r:`${r} · ${t} branch${t===1?``:`es`}`}function He(e,t,n){let r={pinned:{shown:[],total:0},active:{shown:[],total:0},waiting:{shown:[],total:0},done:{shown:[],total:0}};for(let i of e){let e=t(i),a=r[e];a.total<n[e]&&a.shown.push(i),a.total+=1}return r}function Ue(){return{pinned:15,active:15,waiting:15,done:15}}function We(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=t.get(`f`)??``,r=t.get(`pr`)??``,i=new URLSearchParams;for(let[e,n]of t)!Re.includes(e)&&/^[a-z][a-z0-9_-]*$/i.test(e)&&n!==``&&i.append(e,n);let a=i.toString();return{query:t.get(`q`)??``,filter:Ie.includes(n)?n:`all`,author:t.get(`by`)??``,pr:Le.includes(r)?r:`any`,collections:[...new Set((t.get(`col`)??``).split(`,`).filter(e=>e===`none`||Se(e)))],...a===``?{}:{extra:a}}}function Ge(e){let t=new URLSearchParams;e.query!==``&&t.set(`q`,e.query),e.filter!==`all`&&t.set(`f`,e.filter),e.author!==``&&t.set(`by`,e.author),e.pr!==`any`&&t.set(`pr`,e.pr),e.collections.length>0&&t.set(`col`,e.collections.join(`,`));for(let[n,r]of new URLSearchParams(e.extra??``))Re.includes(n)||t.append(n,r);let n=t.toString();return n===``?``:`#${n}`}function Ke(e){return Ge({query:``,filter:`all`,author:``,pr:`any`,collections:[e]})}function qe(e,t){return t===`all`||t===`queue`?!0:t===`in-progress`?e.status!==`complete`:e.status===t}function Je(e,t){return t===`any`||e.prState===t}function Ye(e,t){return t===``||e===t}function Xe(e){return e===`complete`?`Mark reviewed`:`Mark not reviewed`}function Ze(e){return e?`Unpin review`:`Pin review`}function Qe(e){return e?`Remove from review queue`:`Add to review queue`}function $e(e,t){let n=t.query.trim().toLowerCase();return et(e.filter(e=>(!n||e.searchText.includes(n))&&qe(e,t.filter)&&Ye(e.author,t.author)&&Je(e,t.pr)&&Pe(e.collections,t.collections??[])),t.filter)}function et(e,t){return I(t)?e.filter(e=>e.queue!==void 0).sort((e,t)=>(e.queue??0)-(t.queue??0)):e}function tt(e){return e===0?`Queue`:`Queue (${e})`}function nt(e){return e===`complete`?`Reviewed`:e===`in-progress`?`Not reviewed`:`New`}function rt(e){return`${nt(e)}. Mark as ${e===`complete`?`not reviewed`:`reviewed`}`}function it(e){return e===0?`Select reviews to take action`:`${e} review${e===1?``:`s`} selected`}var at=`Use the checkboxes or choose Select all.`;function ot(e,t,n){return e===0?at:[t===null?``:`of ${t}`,n>0?`${n} not shown`:``].filter(Boolean).join(` · `)}function st(e,t=!1){return e===0||t?`Select all`:`Select all ${e}`}function ct(e){return e===0?`Delete`:`Delete ${e} review${e===1?``:`s`}`}function lt(e){return`${ct(e)}?`}function ut(e,t,n){return e===``||t===``||t===e?`wait`:n?`hold`:`reload`}var dt=[`in-progress`,`recent`],ft={"in-progress":{title:`In progress`,key:`i`},recent:{title:`Recent runs and issues`,key:`r`}};function pt(e){return typeof e==`string`&&dt.includes(e)}var mt=[{id:`global`,label:`Global`},{id:`reviews`,label:`Reviews list`},{id:`quickReview`,label:`Quick Review`},{id:`runs`,label:`Runs list`},{id:`notifications`,label:`Activity list`},{id:`findings`,label:`Issues and Questions`},{id:`sections`,label:`Review sections`},{id:`buddy`,label:`Buddy AI`},{id:`actions`,label:`Review actions`},{id:`workspace`,label:`Workspace and focus`}],L=(...e)=>({kind:`chord`,keys:e}),R=(e,t)=>({kind:`key`,key:e,...t?{shift:t}:{}}),ht=e=>({kind:`key`,key:e,primary:!0}),gt=ge.map(e=>({id:`reviews.section.${e}`,label:`${ve[e].title} section`,group:`reviews`,page:`reviews`,binding:L(`l`,ve[e].key)})),_t=dt.map(e=>({id:`runs.section.${e}`,label:`${ft[e].title} section`,group:`runs`,page:`runs`,binding:L(`l`,ft[e].key)})),z=[{id:`palette.open`,label:`Command palette`,group:`global`,page:`global`,binding:{kind:`combo`,key:`k`}},{id:`add.open`,label:`New review`,group:`global`,page:`global`,binding:{kind:`combo`,key:`p`}},{id:`add.pullRequest`,label:`Review pull requests`,group:`global`,page:`global`,binding:L(`p`,`p`)},{id:`add.branch`,label:`Review branch`,group:`global`,page:`global`,binding:L(`p`,`b`)},{id:`navigate.reviews`,label:`Go to Reviews`,group:`global`,page:`global`,binding:L(`r`)},{id:`navigate.runs`,label:`Go to Runs`,group:`global`,page:`global`,binding:L(`e`)},{id:`navigate.notifications`,label:`Go to Activity`,group:`global`,page:`global`,binding:L(`n`)},{id:`sidebar.hide`,label:`Hide or show the sidebar`,group:`global`,page:`global`,binding:L(`h`)},{id:`help.shortcuts`,label:`Keyboard shortcuts`,group:`global`,page:`global`,binding:L(`?`)},{id:`reviews.search`,label:`Search reviews`,group:`reviews`,page:`reviews`,binding:L(`s`)},{id:`reviews.filters`,label:`Filters`,group:`reviews`,page:`reviews`,binding:L(`f`)},...gt,{id:`reviews.collection.new`,label:`New collection`,group:`reviews`,page:`reviews`,binding:L(`l`,`n`)},{id:`reviews.collection.fold`,label:`Expand or collapse a collection`,group:`reviews`,page:`reviews`,binding:L(`l`,`c`)},{id:`reviews.next`,label:`Next review`,group:`reviews`,page:`reviews`,binding:R(`j`)},{id:`reviews.previous`,label:`Previous review`,group:`reviews`,page:`reviews`,binding:R(`k`)},{id:`reviews.open`,label:`Open review`,group:`reviews`,page:`reviews`,binding:R(`Enter`)},{id:`reviews.openInNewTab`,label:`Open review in new tab`,group:`reviews`,page:`reviews`,binding:R(`Enter`,!0)},{id:`reviews.menu`,label:`Open review menu`,group:`reviews`,page:`reviews`,binding:R(`m`)},{id:`reviews.quickReview`,label:`Quick Review`,group:`reviews`,page:`reviews`,binding:R(` `),hint:`[data-quick-review-open]`},{id:`reviews.selection.exit`,label:`Exit selection`,group:`reviews`,page:`reviews`,binding:R(`Escape`),hint:`[data-bulk-exit]`,showHint:!0},{id:`quick.down`,label:`Scroll down`,group:`quickReview`,page:`reviews`,binding:R(`j`),within:`[data-quick-review]`},{id:`quick.downArrow`,label:`Scroll down`,group:`quickReview`,page:`reviews`,binding:R(`ArrowDown`),within:`[data-quick-review]`},{id:`quick.up`,label:`Scroll up`,group:`quickReview`,page:`reviews`,binding:R(`k`),within:`[data-quick-review]`},{id:`quick.upArrow`,label:`Scroll up`,group:`quickReview`,page:`reviews`,binding:R(`ArrowUp`),within:`[data-quick-review]`},{id:`quick.previous`,label:`Previous pull request`,group:`quickReview`,page:`reviews`,binding:R(`h`),within:`[data-quick-review]`,hint:`[data-qr-prev]`},{id:`quick.previousArrow`,label:`Previous pull request`,group:`quickReview`,page:`reviews`,binding:R(`ArrowLeft`),within:`[data-quick-review]`},{id:`quick.next`,label:`Next pull request`,group:`quickReview`,page:`reviews`,binding:R(`l`),within:`[data-quick-review]`,hint:`[data-qr-next]`},{id:`quick.nextArrow`,label:`Next pull request`,group:`quickReview`,page:`reviews`,binding:R(`ArrowRight`),within:`[data-quick-review]`},{id:`quick.menu`,label:`Open review menu`,group:`quickReview`,page:`reviews`,binding:R(`m`),within:`[data-quick-review]`,hint:`[data-qr-menu]`},{id:`quick.shortcuts`,label:`Keyboard shortcuts`,group:`quickReview`,page:`reviews`,binding:R(`?`,!0),within:`[data-quick-review]`},{id:`runs.search`,label:`Search runs`,group:`runs`,page:`runs`,binding:L(`s`)},{id:`runs.next`,label:`Next run`,group:`runs`,page:`runs`,binding:R(`j`)},{id:`runs.previous`,label:`Previous run`,group:`runs`,page:`runs`,binding:R(`k`)},{id:`runs.open`,label:`Open run’s review`,group:`runs`,page:`runs`,binding:R(`Enter`)},{id:`runs.openInNewTab`,label:`Open run’s review in new tab`,group:`runs`,page:`runs`,binding:R(`Enter`,!0)},{id:`runs.menu`,label:`Open run menu`,group:`runs`,page:`runs`,binding:R(` `)},..._t,{id:`notifications.next`,label:`Next activity`,group:`notifications`,page:`notifications`,binding:R(`j`)},{id:`notifications.previous`,label:`Previous activity`,group:`notifications`,page:`notifications`,binding:R(`k`)},{id:`notifications.open`,label:`Open activity`,group:`notifications`,page:`notifications`,binding:R(`Enter`)},{id:`notifications.openInNewTab`,label:`Open activity in new tab`,group:`notifications`,page:`notifications`,binding:R(`Enter`,!0)},{id:`review.findings.next`,label:`Next card`,group:`findings`,page:`review`,binding:R(`j`)},{id:`review.findings.previous`,label:`Previous card`,group:`findings`,page:`review`,binding:R(`k`)},{id:`review.findings.askBuddy`,label:`Ask Buddy about the card`,group:`findings`,page:`review`,binding:R(` `)},{id:`review.findings.copy`,label:`Copy the card`,group:`findings`,page:`review`,binding:ht(`c`)},{id:`review.findings.choose`,label:`Include in feedback, or leave out`,group:`findings`,page:`review`,binding:R(`Enter`)},{id:`review.feedback.prepare`,label:`Prepare feedback from the chosen cards`,group:`findings`,page:`review`,binding:ht(`Enter`),hint:`[data-feedback-prepare]`,showHint:!0},{id:`review.feedback.copyDraft`,label:`Copy the feedback draft`,group:`findings`,page:`review`,binding:ht(`c`),within:`[data-feedback-dialog]`,hint:`[data-feedback-copy]`,showHint:!0},{id:`review.section.review`,label:`Review overview`,group:`sections`,page:`review`,binding:L(`s`,`r`)},{id:`review.section.kiss`,label:`KISS`,group:`sections`,page:`review`,binding:L(`s`,`k`)},{id:`review.section.issues`,label:`Issues`,group:`sections`,page:`review`,binding:L(`s`,`i`)},{id:`review.section.diagrams`,label:`Diagrams`,group:`sections`,page:`review`,binding:L(`s`,`g`)},{id:`review.section.questions`,label:`Questions`,group:`sections`,page:`review`,binding:L(`s`,`q`)},{id:`review.section.files`,label:`Files`,group:`sections`,page:`review`,binding:L(`s`,`f`)},{id:`review.buddy.open`,label:`Open Buddy AI`,group:`buddy`,page:`review`,binding:L(`b`,`o`)},{id:`review.buddy.prompt`,label:`Choose a prompt`,group:`buddy`,page:`review`,binding:L(`b`,`p`)},{id:`review.mark.reviewed`,label:`Mark reviewed`,group:`actions`,page:`review`,binding:L(`m`,`r`),hint:`[data-review-menu] [data-mark-status]`},{id:`review.mark.waiting`,label:`Mark waiting`,group:`actions`,page:`review`,binding:L(`m`,`w`),hint:`[data-review-menu] [data-lifecycle-set="waiting"]`},{id:`review.mark.done`,label:`Mark done`,group:`actions`,page:`review`,binding:L(`m`,`d`),hint:`[data-review-menu] [data-lifecycle-set="done"]`},{id:`review.checkUpdates`,label:`Check for updates`,group:`actions`,page:`review`,binding:L(`a`,`c`),hint:`[data-review-menu] [data-fresh-check]`},{id:`review.update`,label:`Update review`,group:`actions`,page:`review`,binding:L(`a`,`u`)},{id:`review.queue.toggle`,label:`Queue`,group:`actions`,page:`review`,binding:L(`a`,`q`),hint:`[data-review-menu] [data-queue-action]`},{id:`review.feedback.toggle`,label:`Start or exit Prepare feedback`,group:`actions`,page:`review`,binding:L(`a`,`p`)},{id:`review.delete`,label:`Delete`,group:`actions`,page:`review`,binding:L(`a`,`d`),hint:`[data-review-menu] [data-delete]`},{id:`review.focus.toggle`,label:`Expand or collapse this section`,group:`workspace`,page:`review`,binding:R(`\\`),hint:`[data-focus-toggle]`},{id:`review.leave`,label:`Leave the Buddy AI field, Prepare feedback, or focus mode`,group:`workspace`,page:`review`,binding:R(`Escape`)}],vt=[{page:`global`,keys:[`p`],label:`New review`,combo:`p`},{page:`review`,keys:[`s`],label:`Sections`},{page:`review`,keys:[`m`],label:`Mark`},{page:`review`,keys:[`a`],label:`Actions`},{page:`review`,keys:[`b`],label:`Buddy AI`},{page:`reviews`,keys:[`l`],label:`List sections`},{page:`runs`,keys:[`l`],label:`List sections`}];function yt(e,t=z){return t.filter(t=>t.page===`global`||t.page===e)}function bt(e){return z.find(t=>t.id===e)}function xt(e,t=z){let n={kind:`node`,key:``,label:`Commands`,children:[]},r=(t,r)=>{let i=n;for(let[n,a]of t.entries()){let o=i.children.find(e=>e.key===a);if(o?.kind===`leaf`)throw Error(`Chord ${t.slice(0,n+1).join(` `)} is a command and a namespace on ${e}`);if(o){i=o;continue}let s={kind:`node`,key:a,label:vt.find(r=>(r.page===e||r.page===`global`)&&r.keys.join(` `)===t.slice(0,n+1).join(` `))?.label??r??a.toUpperCase(),children:[]};i.children.push(s),i=s}return i};for(let n of yt(e,t)){if(n.binding.kind!==`chord`)continue;let t=n.binding.keys,i=r(t.slice(0,-1)),a=t[t.length-1];if(i.children.some(e=>e.key===a))throw Error(`Chord ${t.join(` `)} is bound twice on ${e}`);i.children.push({kind:`leaf`,key:a,command:n})}return n}function St(e){return yt(e).filter(e=>e.binding.kind===`key`)}var Ct=new Set([`Shift`,`Control`,`Alt`,`Meta`,`CapsLock`,`Fn`,`AltGraph`,`OS`]);function wt(e){return Ct.has(e.key)}function Tt(e){let t=e.key;if(t.length===1){if(/^[a-z]$/i.test(t))return t.toLowerCase();let n=/^Key([A-Z])$/.exec(e.code??``);return n&&/\p{L}/u.test(t)?n[1].toLowerCase():t}return null}var Et=new Set(z.flatMap(e=>e.binding.kind===`combo`?[e.binding.key]:[]));function Dt(e,t){let n=t?e.metaKey:e.ctrlKey,r=t?e.ctrlKey:e.metaKey;if(!n||r||e.altKey||e.shiftKey||e.isComposing)return null;let i=Tt(e);return i!==null&&Et.has(i)?i:null}function Ot(e){return z.find(t=>t.binding.kind===`combo`&&t.binding.key===e)}function kt(e,t,n=!1){if(e.kind!==`key`||t.altKey||t.isComposing)return!1;let r=n?t.metaKey:t.ctrlKey;return(n?t.ctrlKey:t.metaKey)||r!==(e.primary===!0)||t.shiftKey!==(e.shift===!0)?!1:e.key===`\\`?t.key===`\\`||t.code===`Backslash`:e.key.length===1?Tt(t)===e.key:t.key===e.key}function At(e){let t=null,n=[];return{get at(){return t},get path(){return n},start(r=[]){let i=e,a=[];for(let e of r){let t=i.children.find(t=>t.key===e);if(t?.kind!==`node`)break;i=t,a.push(e)}t=i,n=a},press(e){let r=t?.children.find(t=>t.key===e);return r?r.kind===`leaf`?(t=null,n=[],{kind:`run`,command:r.command}):(t=r,n=[...n,e],{kind:`descend`,node:r}):(t=null,n=[],{kind:`cancel`})},reset(){t=null,n=[]}}}var jt={Escape:`Esc`,Enter:`Enter`,"\\":`\\`," ":`Space`,ArrowDown:`↓`,ArrowUp:`↑`,ArrowLeft:`←`,ArrowRight:`→`};function B(e){return jt[e]??(e.length===1?e.toUpperCase():e)}function V(e,t=`k`){let n=t.toUpperCase();return e?`⌘${n}`:`Ctrl+${n}`}function Mt(e,t){let n=vt.find(t=>t.combo!==void 0&&t.keys.every((t,n)=>e[n]===t));return n?[V(t,n.combo),...e.slice(n.keys.length).map(B)]:[V(t),...e.map(B)]}function H(e,t){if(e.kind===`combo`)return t?`⌘${B(e.key)}`:`Ctrl+${B(e.key)}`;if(e.kind===`chord`)return Mt(e.keys,t).join(` `);if(e.primary)return t?`⌘${B(e.key)}`:`Ctrl+${B(e.key)}`;let n=e.key.length===1&&!/[a-z0-9]/i.test(e.key);return e.shift&&!n?`Shift+${B(e.key)}`:B(e.key)}function Nt(e,t){return e.kind===`chord`?Mt(e.keys,t):[H(e,t)]}function Pt(e,t){if(e.kind===`chord`)return null;if(e.kind===`combo`)return`${t?`Meta`:`Control`}+${e.key.toUpperCase()}`;let n=e.key===` `?`Space`:e.key.length===1?e.key.toUpperCase():e.key;return e.primary?`${t?`Meta`:`Control`}+${n}`:e.shift?`Shift+${n}`:n}function Ft(e){return mt.map(t=>({group:t.id,label:t.label,rows:z.filter(e=>e.group===t.id).map(t=>({id:t.id,keys:Nt(t.binding,e),label:t.label}))})).filter(e=>e.rows.length>0)}function U(e,t,n,r){let i=e.createElement(t);return n&&(i.className=n),r!==void 0&&(i.textContent=r),i}function It(e,t){return U(e,`kbd`,`prb-kbd`,t)}function Lt(e,t,n){let r=U(e,`dialog`,`prb-palette`);r.setAttribute(`data-command-palette`,``),r.setAttribute(`aria-labelledby`,`prb-palette-title`);let i=U(e,`div`,`prb-palette-panel`);i.tabIndex=-1,r.append(i),e.body.append(r),r.addEventListener(`click`,e=>{if(e.stopPropagation(),e.target===r)return n();let i=e.target?.closest?.(`[data-palette-key]`);i?.dataset.paletteKey!==void 0&&i.getAttribute(`aria-disabled`)!==`true`&&t(i.dataset.paletteKey)}),r.addEventListener(`cancel`,e=>{e.preventDefault(),n()});let a=(t,n)=>{let r=U(e,`div`,`prb-palette-head`),i=U(e,`span`,`prb-palette-trail`);for(let[n,r]of t.entries())n>0&&i.append(U(e,`span`,`prb-palette-sep`,`›`)),i.append(It(e,r));let a=U(e,`h2`,`prb-palette-title`,n);return a.id=`prb-palette-title`,r.append(i,a),r};return{dialog:r,show:t=>{i.replaceChildren(a(t.trail,t.title));let n=U(e,`div`,`prb-palette-list`);n.setAttribute(`role`,`group`),n.setAttribute(`aria-labelledby`,`prb-palette-title`);let o=null;for(let r of t.rows){t.groupLabels&&r.group!==o&&(n.append(U(e,`p`,`prb-palette-group`,t.groupLabels[r.group]??r.group)),o=r.group);let i=U(e,`button`,`prb-palette-row`);i.type=`button`,i.dataset.paletteKey=r.key,r.available||i.setAttribute(`aria-disabled`,`true`),r.namespace&&i.setAttribute(`aria-haspopup`,`true`),i.append(It(e,r.keyLabel),U(e,`span`,`prb-palette-label`,r.namespace?`${r.label}…`:r.label)),r.state&&i.append(U(e,`span`,`prb-palette-state`,r.state)),n.append(i)}if(t.rows.length===0&&n.append(U(e,`p`,`prb-palette-empty`,`Nothing here on this page.`)),i.append(n),t.footer.length>0){let n=U(e,`div`,`prb-palette-footer`);n.append(U(e,`p`,`prb-palette-group`,`Keys on this page`));let r=U(e,`ul`,`prb-palette-keys`);for(let n of t.footer){let t=U(e,`li`);t.append(It(e,n.keys),U(e,`span`,void 0,n.label)),r.append(t)}n.append(r),i.append(n)}r.open||r.showModal(),i.focus()},showPanel:(t,n,o)=>{i.replaceChildren(a(t,n.title));let s=U(e,`div`,`prb-palette-body`);i.append(s),r.open||r.showModal(),i.dataset.mode=n.title;let c=n.mount(s,o);return()=>{delete i.dataset.mode,c?.()}},close:()=>{r.open&&r.close()},isOpen:()=>r.open}}function Rt(e,t,n){let r=[...e.querySelectorAll(`[data-palette-key]`)];if(r.length===0)return!1;let i=r.indexOf(n),a=t===`ArrowDown`?r[i<0?0:(i+1)%r.length]:t===`ArrowUp`?r[i<0?r.length-1:(i-1+r.length)%r.length]:t===`Home`?r[0]:t===`End`?r[r.length-1]:null;return a?(a.focus(),!0):!1}function zt(e,t){let n=U(e,`div`,`prb-shortcuts-table`);for(let r of t){let t=U(e,`section`,`prb-shortcuts-group`);t.append(U(e,`h3`,`prb-shortcuts-heading`,r.label));let i=U(e,`dl`,`prb-shortcuts-list`);for(let t of r.rows){let n=U(e,`dt`,`prb-shortcuts-keys`);n.dataset.commandId=t.id;for(let r of t.keys)n.append(It(e,r));i.append(n,U(e,`dd`,`prb-shortcuts-label`,t.label))}t.append(i),n.append(t)}return n}function Bt(e,t,n,r){let i=U(e,`dialog`,`prb-dialog prb-shortcuts`);i.setAttribute(`data-shortcuts-dialog`,``),i.setAttribute(`aria-labelledby`,`prb-shortcuts-title`);let a=U(e,`div`,`prb-shortcuts-head`),o=U(e,`h2`,void 0,`Keyboard shortcuts`);o.id=`prb-shortcuts-title`;let s=U(e,`button`,`prb-shortcuts-close`,`Close`);s.type=`button`,s.setAttribute(`data-shortcuts-close`,``),a.append(o,s),i.append(a,U(e,`p`,`prb-shortcuts-hint`,n),zt(e,t)),e.body.append(i);let c=null;return s.addEventListener(`click`,()=>i.close()),i.addEventListener(`click`,e=>{e.target===i&&i.close()}),i.addEventListener(`close`,()=>{c?.isConnected&&c.focus(),c=null,r?.()}),{dialog:i,open:()=>{if(i.open)return;let t=e.activeElement;c=t instanceof HTMLElement&&t!==e.body?t:null,i.showModal(),s.focus()},isOpen:()=>i.open}}var Vt=/https?:\/\/[^\s<>()"'`]+/gi,Ht=/^https?:\/\/(?:www\.)?github\.com\/([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)\/pull\/(\d+)(?:[/?#]|$)/i,Ut=/^https?:\/\/([^/]+)\/((?:[^/?#]+\/)+?)(?:-\/)?merge_requests\/(\d+)(?:[/?#]|$)/i,Wt=/^https?:\/\/(?:www\.)?bitbucket\.org\/([^/?#]+)\/([^/?#]+)\/pull-requests\/(\d+)(?:[/?#]|$)/i;function Gt(e){let t=e.replace(/[.,;:!?)\]]+$/,``),n=Ht.exec(t);if(n){let[,e,t,r]=n,i=t.replace(/\.git$/i,``),a=Number(r);return{kind:`github`,owner:e,repo:i,number:a,url:`https://github.com/${e}/${i}/pull/${a}`,key:`${e}/${i}#${a}`.toLowerCase()}}let r=Wt.exec(t);if(r){let[,e,n,i]=r;return{kind:`unsupported`,provider:`Bitbucket`,label:`${e}/${n} #${i}`,url:t,key:`bitbucket:${e}/${n}#${i}`.toLowerCase()}}let i=Ut.exec(t);if(i){let[,e,n,r]=i,a=n.replace(/\/$/,``);return{kind:`unsupported`,provider:`GitLab`,label:`${a} !${r}`,url:t,key:`gitlab:${e}/${a}!${r}`.toLowerCase()}}return null}function Kt(e){let t=[],n=new Set;for(let r of e.matchAll(Vt)){let e=Gt(r[0]);!e||n.has(e.key)||(n.add(e.key),t.push(e))}return t}function qt(e){return`${e} isn't supported yet`}var Jt=`prb:review-started`;function Yt(e){e.dispatchEvent(new(e.defaultView??window).Event(Jt))}function Xt(e,t){e.addEventListener(Jt,t)}function Zt(e,t){let n=null,r=!1,i=!1,a=!1,o=async()=>{n=null,r=!0;let s=await t();if(r=!1,s===null){a=!0;return}let c=i?0:s;i=!1,n=e.setTimeout(()=>void o(),c)};return o(),{now:()=>{if(!a){if(r){i=!0;return}n!==null&&e.clearTimeout(n),o()}}}}function Qt(e){return e.model?`Keeps its original agent and model: ${e.agent}, ${e.model}`:`Keeps its original agent: ${e.agent}`}var $t={waiting:`Queued`,reviewing:`Analysing`,"already-reviewed":`Already reviewed`,ready:`Ready`,failed:`Failed`},en={waiting:`○`,reviewing:`◐`,"already-reviewed":`✓`,ready:`✓`,failed:`!`},tn=250,nn=1500,rn=6e4;async function W(e,t,n){try{let r=await e.fetch(t,n===void 0?{}:{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}),i=await r.json().catch(()=>({}));if(!r.ok){let e=i;return{...e,ok:!1,status:r.status,error:typeof e.error==`string`?e.error:`Something went wrong. Try again.`}}return{ok:!0,value:i}}catch{return{ok:!1,status:0,error:`The workspace server did not answer. Check it is still running.`}}}function an(e,t,n){let r=null,i=!1,a=o=>{r=e.setTimeout(async()=>{let r=await W(e,`/add-review/batches/${t}`);i||(r.ok?(n.rows(r.value.rows,r.value.finished,r.value.destination),a(r.value.finished?rn:nn)):r.status===404?n.lost(r.error):a(nn))},o)};return a(nn),()=>{i=!0,r!==null&&e.clearTimeout(r)}}function G(e,t,n,r){let i=e.createElement(t);return n&&(i.className=n),r!==void 0&&(i.textContent=r),i}function K(e,t,n){let r=G(e,`option`,void 0,t);return r.value=n,r}function q(e,t,n){let r=G(e,`a`,`prb-addreview-link`,n);return r.href=`/open?id=${encodeURIComponent(t)}`,r}function on(e,t){let n=G(e,`details`,`prb-addreview-technical`);return n.append(G(e,`summary`,void 0,`Technical details`),G(e,`pre`,void 0,t)),n}function J(e){let t=G(e,`div`,`prb-addreview-problemblock`);t.setAttribute(`role`,`alert`);let n=G(e,`p`,`prb-addreview-error`);return n.hidden=!0,t.append(n),{element:t,show(r){n.textContent=r.error,n.hidden=!1,t.querySelector(`.prb-addreview-technical`)?.remove(),r.detail&&t.append(on(e,r.detail))},hide(){n.hidden=!0,t.querySelector(`.prb-addreview-technical`)?.remove()}}}function sn(e,t,n=`prb-addreview-path`){let r=G(e,`span`,n),i=t.replace(/\/+$/,``).lastIndexOf(`/`);return i<=0?r.textContent=t:r.append(G(e,`span`,`prb-addreview-path-parent`,t.slice(0,i+1)),G(e,`span`,`prb-addreview-path-name`,t.slice(i+1))),r}function Y(e,t){return G(e,`code`,void 0,t)}var X=e=>`${e} commit${e===1?``:`s`}`;function cn(e,t){let n=t.options.find(e=>e.where===`remote`)?.display??`origin/${t.name}`,r=G(e,`p`,`prb-addreview-choice-text`),i=t.divergence,a=i&&i.ahead>0&&i.behind>0?[`Your local `,Y(e,t.name),` and `,Y(e,n),` have diverged: ${X(i.ahead)} on the local side, ${X(i.behind)} on the remote.`]:i&&i.ahead>0?[`Your local `,Y(e,t.name),` is ${X(i.ahead)} ahead of `,Y(e,n),`.`]:i&&i.behind>0?[`Your local `,Y(e,t.name),` is ${X(i.behind)} behind `,Y(e,n),`.`]:[`Your local `,Y(e,t.name),` and `,Y(e,n),` are different commits.`];return r.append(...a),r}function ln(e,t,n){let r=t.baseChoice,i=G(e,`div`,`prb-addreview-choice`);i.setAttribute(`data-addreview-base-choice`,``);let a=G(e,`p`,`prb-addreview-choice-title`,`Choose a base branch`);a.id=`prb-addreview-choice-title`;let o=G(e,`div`,`prb-addreview-choice-options`);o.setAttribute(`role`,`radiogroup`),o.setAttribute(`aria-labelledby`,a.id);for(let t of r.options){let i=G(e,`label`,`prb-addreview-choice-option`),a=G(e,`input`);a.type=`radio`,a.name=`prb-addreview-base-choice`,a.value=t.base,a.addEventListener(`change`,()=>{a.checked&&n(t.base)});let s=`${t.where===`remote`?`Remote`:`Local`} ${r.name}`,c=t.commits===void 0?``:t.commits===0?` (no new changes)`:` (${X(t.commits)} to review)`;i.append(a,Y(e,t.display),G(e,`span`,`prb-addreview-choice-what`,` ${s}${c}`)),o.append(i)}return i.append(a,cn(e,r),G(e,`p`,`prb-addreview-choice-text`,`Select which branch to compare against:`),o),t.detail&&i.append(on(e,t.detail)),i}function un(e,t){return t&&e.status===`waiting`?`Not started`:t&&e.status===`reviewing`?`Started`:$t[e.status]}function dn(e,t){let n=e.filter(e=>e.status===`ready`||e.status===`already-reviewed`).length,r=[`reviewing`,`waiting`,`failed`].map(n=>[un({status:n},t).toLowerCase(),e.filter(e=>e.status===n).length]).filter(([,e])=>e>0);return[`${n} of ${e.length} ${e.length===1?`review`:`reviews`} ready`,...r.map(([e,t])=>`${t} ${e}`)].join(` · `)}var fn=e=>e===`added`||e===`already`,pn=e=>e.status===`already-reviewed`&&!e.reviewId;function mn(e){switch(e){case`missing`:return`the collection was deleted`;case`full`:return`the collection is full. It holds 500 reviews at most`;case`gone`:return`its review could not be found`;default:return`the collection could not be saved`}}function hn(e){switch(e){case`full`:return`the review queue is full`;case`gone`:return`its review could not be found`;default:return`the review queue could not be saved`}}function gn(e,t){if(pn(e))return[];let n=[],r=t.collection?.name;if(!e.reviewId){if(e.status!==`failed`)return[];let n=[t.collection?.deleted?void 0:r,t.queue?`your review queue`:void 0].filter(Boolean).join(` or `);return n?[`Not added to ${n}. Retry adds it once its review exists.`]:[]}return t.collection&&e.delivered&&!fn(e.delivered.collection)&&n.push(`Not added to ${r}, because ${mn(e.delivered.collection)}.`),t.queue&&e.delivered&&!fn(e.delivered.queue)&&n.push(`Not added to your review queue, because ${hn(e.delivered.queue)}.`),n}function _n(e,t){let n=Ke(t);e.location.pathname===`/`?(e.location.hash=n,e.location.reload()):e.location.assign(`/${n}`)}function vn(e,t,n,r,i,a={queue:!1}){let o=G(e,`div`,`prb-addreview-progress`);o.setAttribute(`data-addreview-progress`,``);let s=G(e,`p`,`prb-addreview-summary`);s.setAttribute(`aria-live`,`polite`);let c=G(e,`ul`,`prb-addreview-rows`);c.setAttribute(`aria-label`,`Started reviews`);let l=G(e,`p`,`prb-palette-summary`),u=J(e),d=G(e,`div`,`prb-addreview-footer`),f=G(e,`button`,`prb-addreview-start`,`Close`);f.type=`button`,f.setAttribute(`data-addreview-close`,``),f.addEventListener(`click`,i),d.append(f);let p=G(e,`div`,`prb-addreview-destination-result`);p.setAttribute(`data-addreview-destination-result`,``),p.setAttribute(`aria-live`,`polite`),o.append(s,p,c,l,u.element,d);let m=r,h=a,g=null,_=!1,v=!1,y=new Map,b=(t,n)=>{let r=n.contains(e.activeElement),i=n.querySelector(`.prb-addreview-technical`)?.open??!1;n.replaceChildren(),n.dataset.status=v&&t.status===`waiting`?`not-started`:t.status,n.dataset.state=t.status===`failed`?`problem`:`ok`;let a=G(e,`div`,`prb-addreview-row-head`),o=G(e,`span`,`prb-addreview-mark`,en[t.status]);o.setAttribute(`aria-hidden`,`true`),a.append(o,t.reviewId?q(e,t.reviewId,t.label):G(e,`span`,`prb-addreview-row-label`,t.label)),a.append(G(e,`span`,`prb-addreview-badge`,un(t,v))),n.append(a),t.reason&&n.append(G(e,`span`,`prb-addreview-status prb-addreview-${t.status===`failed`?`problem`:`muted`}`,t.reason)),t.kept&&n.append(G(e,`span`,`prb-addreview-status prb-addreview-muted`,Qt(t.kept)));for(let r of gn(t,h)){let t=G(e,`span`,`prb-addreview-status prb-addreview-problem`,r);t.setAttribute(`data-addreview-missed`,``),n.append(t)}if(t.detail){let r=on(e,t.detail);r.open=i,n.append(r)}if(t.status===`failed`&&!v){let r=t.stale===!0,i=G(e,`button`,`prb-addreview-retry`,r?`Start fresh review`:`Retry`);i.type=`button`,i.setAttribute(r?`data-addreview-fresh`:`data-addreview-retry`,``),i.setAttribute(`aria-label`,`${r?`Start a fresh review of`:`Retry`} ${t.label}`),i.addEventListener(`click`,()=>void w(t.key,i,r)),n.append(i)}else if(!v&&t.reviewId&&t.addAgain){let r=G(e,`button`,`prb-addreview-retry`,`Retry adding`);r.type=`button`,r.setAttribute(`data-addreview-redeliver`,``),r.setAttribute(`aria-label`,`Retry adding ${t.label}`),r.addEventListener(`click`,()=>void T(t.key,r)),n.append(r)}r&&n.focus()},x=()=>{let n=m.filter(e=>!pn(e)),r=[],i=h.collection;if(i?.deleted){let t=G(e,`p`,`prb-addreview-destination-line prb-addreview-problem`,`${i.name} was deleted. To collect these reviews, choose another collection in New review.`);t.setAttribute(`data-addreview-collection-deleted`,``),r.push(t)}else if(i){let a=n.filter(e=>fn(e.delivered?.collection)).length,o=G(e,`p`,`prb-addreview-destination-line`);o.setAttribute(`data-addreview-collection-count`,``),o.append(`${a} of ${n.length} added to ${i.name}`);let s=G(e,`a`,`prb-addreview-link prb-addreview-open`,`Open collection`);if(s.href=`/${Ke(i.id)}`,s.setAttribute(`data-addreview-open-collection`,``),s.addEventListener(`click`,e=>{e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),_n(t,i.id))}),o.append(` · `,s),r.push(o),i.created){let t=G(e,`p`,`prb-addreview-destination-line prb-addreview-muted`,`Created ${i.name}.`);t.setAttribute(`data-addreview-created`,``),r.push(t)}}if(h.queue){let t=n.filter(e=>fn(e.delivered?.queue)).length,i=G(e,`p`,`prb-addreview-destination-line`,`${t} of ${n.length} in your review queue`);i.setAttribute(`data-addreview-queue-count`,``),r.push(i)}p.replaceChildren(...r),p.hidden=r.length===0},S=()=>{x();let t=m.map(t=>{let n=JSON.stringify([t,v,h]),r=y.get(t.key);if(!r){let n=G(e,`li`,`prb-addreview-row`);n.dataset.rowKey=t.key,n.tabIndex=-1,r={item:n,json:``},y.set(t.key,r)}return r.json!==n&&(b(t,r.item),r.json=n),r.item});(t.some((e,t)=>c.children[t]!==e)||c.children.length!==t.length)&&c.replaceChildren(...t),s.textContent=dn(m,v),l.textContent=!v&&m.some(e=>e.status===`waiting`)?`Queued reviews start as running ones finish. Reviews carry on in the background, so you can close this; they appear in your reviews list.`:`Reviews carry on in the background, so you can close this; they appear in your reviews list.`},C=()=>{g?.(),g=an(t,n,{rows:(e,t,n)=>{m=e,n&&(h=n),S()},lost:e=>{u.show({error:e}),v=!0,S()}})},w=async(r,i,a)=>{i.disabled=!0;let o=await W(t,`/add-review/batches/${n}/retry`,{key:r,...a?{fresh:!0}:{}});if(o.ok&&Yt(e),!_){if(!o.ok){i.disabled=!1,u.show(o),o.status===404&&(v=!0,g?.(),S());return}u.hide(),m=o.value.rows,S(),C()}},T=async(e,r)=>{r.disabled=!0;let i=await W(t,`/add-review/batches/${n}/deliver`,{key:e});if(!_){if(!i.ok){r.disabled=!1,u.show(i),i.status===404&&(v=!0,g?.(),S());return}u.hide(),m=i.value.rows,i.value.destination&&(h=i.value.destination),S()}};return S(),C(),{element:o,focus:()=>f.focus(),stop:()=>{_=!0,g?.()}}}function yn(e,t,n){let r=G(e,`details`,`prb-addreview-options`);r.append(G(e,`summary`,void 0,`Review options`));let i=G(e,`div`,`prb-addreview-grid`);r.append(i);let a=(t,n)=>{let r=G(e,`label`,`prb-addreview-key`,t),a=`prb-addreview-${t.toLowerCase()}`;n.id=a,r.htmlFor=a,i.append(r,n)},o=G(e,`select`,`prb-addreview-control`);o.setAttribute(`data-addreview-agent`,``);let s=G(e,`input`,`prb-addreview-control`);s.type=`text`,s.placeholder=`Default`,s.spellcheck=!1,s.autocomplete=`off`,s.setAttribute(`data-addreview-model`,``);let c=G(e,`input`,`prb-addreview-control`);c.type=`text`,c.placeholder=`Auto`,c.spellcheck=!1,c.autocomplete=`off`,c.setAttribute(`data-addreview-base`,``),a(`Agent`,o),a(`Model`,s);let l=G(e,`div`,`prb-addreview-modelhelp`),u=G(e,`button`,`prb-addreview-helplink`,`How do I find model names?`);u.type=`button`,u.setAttribute(`aria-expanded`,`false`),u.setAttribute(`data-addreview-model-help`,``);let d=G(e,`p`,`prb-addreview-help`);d.id=`prb-addreview-model-help`,d.hidden=!0,u.setAttribute(`aria-controls`,d.id),l.append(u,d),i.append(l),n&&a(`Base`,c);let f=J(e);r.append(f.element);let p=[],m=()=>{let t=p.find(e=>e.id===o.value);if(!t){d.replaceChildren(`Choose an agent to see how to find its model names.`);return}let n=t.displayName,r=t.modelHelp;d.replaceChildren(...r?.command?[`To see the models ${n} offers, run `,Y(e,r.command),` in a terminal.`]:r?.note?[`To see the models ${n} offers, ${r.note}.`]:[`${n} does not say how to list its models. Use a name from its own documentation.`],` Leave Model empty to use ${n}'s default.`)};u.addEventListener(`click`,()=>{d.hidden=!d.hidden,u.setAttribute(`aria-expanded`,String(!d.hidden)),d.hidden?s.removeAttribute(`aria-describedby`):s.setAttribute(`aria-describedby`,d.id),m()}),o.addEventListener(`change`,m);let h=null,g=!1;return{element:r,base:c,loaded:W(t,`/add-review/options`).then(t=>{if(g=!0,!t.ok)return f.show(t),r.open=!0,null;p=t.value.agents;let{agent:n}=t.value,i=p.filter(e=>e.installed);n.kind!==`resolved`&&o.append(K(e,`Choose an agent`,``));for(let t of i)o.append(K(e,t.displayName,t.id));return n.kind===`resolved`?(h=n.id,i.some(e=>e.id===n.id)||o.append(K(e,n.displayName,n.id)),o.value=n.id):(o.value=``,r.open=!0,n.kind===`refused`&&f.show({error:n.error})),m(),t.value}),complete:()=>g&&o.value!==``,values:()=>({...o.value&&o.value!==h?{agent:o.value}:{},...s.value.trim()?{model:s.value.trim()}:{},...n&&c.value.trim()?{base:c.value.trim()}:{}}),setBasePlaceholder:e=>{c.placeholder=e?`Auto (${e})`:`Auto`},showProblem:e=>{r.open=!0,f.show(e),(e.field===`model`?s:o).focus()},hideProblem:()=>f.hide()}}var bn=`list`,xn=`queue`,Z=`new`,Q=`collection:`;function Sn(e,t){let n=G(e,`div`,`prb-addreview-grid prb-addreview-destination`),r=G(e,`label`,`prb-addreview-key`,`Add to`),i=G(e,`select`,`prb-addreview-control`);i.id=`prb-addreview-destination`,r.htmlFor=i.id,i.setAttribute(`data-addreview-destination`,``),i.autocomplete=`off`;let a=G(e,`label`,`prb-addreview-key`,`Name`),o=G(e,`input`,`prb-addreview-control`);o.type=`text`,o.id=`prb-addreview-collection-name`,a.htmlFor=o.id,o.placeholder=`New collection name`,o.spellcheck=!1,o.autocomplete=`off`,o.setAttribute(`data-addreview-collection-name`,``);let s=G(e,`p`,`prb-addreview-error prb-addreview-destination-note`);s.hidden=!0;let c=G(e,`label`,`prb-addreview-alsoqueue`),l=G(e,`input`);l.type=`checkbox`,l.autocomplete=`off`,l.setAttribute(`data-addreview-also-queue`,``),c.append(l,` Also add to review queue`);let u=J(e);u.element.classList.add(`prb-addreview-destination-note`),n.append(r,i,a,o,s,c,u.element);let d=[],f=t=>{let n=[];if(t===``){let t=K(e,`Choose again`,``);t.disabled=!0,n.push(t)}n.push(K(e,`Reviews list only`,bn),K(e,`Review queue`,xn));let r=G(e,`optgroup`);r.label=`Collections`;for(let t of d)r.append(K(e,t.name,`${Q}${t.id}`));r.append(K(e,`Create collection…`,Z)),n.push(r),i.replaceChildren(...n),i.value=t},p=()=>o.value.trim().length>60,m=()=>{let e=i.value===Z,t=e||i.value.startsWith(Q);a.hidden=!e,o.hidden=!e,s.hidden=!(e&&p()),s.textContent=`Use at most 60 characters for the name.`,c.hidden=!t};return i.addEventListener(`change`,()=>{u.hide(),m(),i.value===Z&&o.focus()}),o.addEventListener(`input`,()=>{u.hide(),m()}),f(bn),m(),t.then(e=>{d=e?.collections??[],f(i.value||bn),m()}),{element:n,complete:()=>i.value!==``&&(i.value!==Z||o.value.trim()!==``&&!p()),values:()=>{let e=l.checked;return i.value===xn?{destination:{kind:`queue`}}:i.value===Z?{destination:{kind:`new-collection`,name:o.value.trim(),queue:e}}:i.value.startsWith(Q)?{destination:{kind:`collection`,id:i.value.slice(11),queue:e}}:{}},showProblem:e=>{if(e.collections){d=e.collections;let t=i.value,n=!t.startsWith(Q)||d.some(e=>`${Q}${e.id}`===t);f(n?t:``),m()}u.show(e),(i.value===Z?o:i).focus()},hideProblem:()=>u.hide()}}function Cn(e){let t=G(e,`button`,`prb-addreview-start`);return t.type=`button`,t.setAttribute(`data-addreview-start`,``),t}function wn(e){return{title:`New review`,escape:`close`,mount(t,n){let r=e.defaultView,i=G(e,`div`,`prb-addreview`);i.setAttribute(`data-addreview`,`pull-requests`);let a=G(e,`div`,`prb-addreview-config`),o=G(e,`label`,`prb-addreview-label`,`Paste PR links`),s=G(e,`textarea`,`prb-palette-input prb-addreview-paste`);s.id=`prb-addreview-paste`,o.htmlFor=s.id,s.rows=3,s.spellcheck=!1,s.autocomplete=`off`,s.placeholder=`https://github.com/owner/repo/pull/123`;let c=G(e,`p`,`prb-palette-summary`);c.setAttribute(`aria-live`,`polite`);let l=G(e,`ul`,`prb-addreview-rows`),u=yn(e,r,!1),d=Sn(e,u.loaded),f=J(e),p=G(e,`p`,`prb-addreview-error`);p.setAttribute(`data-addreview-limit`,``),p.hidden=!0;let m=G(e,`div`,`prb-addreview-footer`),h=Cn(e);m.append(h),a.append(o,s,c,p,l,d.element,u.element,f.element,m),i.append(G(e,`p`,`prb-addreview-mode`,`Pull request`),a),t.append(i);let g=[],_=new Map,v=!1,y=0,b=null,x=null,S=!1,C=!1,w=()=>g.filter(e=>(e.ok||e.needsFolder)&&!!_.get(e.key)),T=0,E=()=>{let e=w().length;h.textContent=e>1?`Review ${e} PRs`:`Review PR`,h.disabled=x!==null||S||v||T>0||e===0||!u.complete()||!d.complete()},D=()=>{p.hidden=T===0,p.textContent=`At most 20 pull requests can be reviewed at once. Remove ${T} to continue.`},O=(t,n)=>G(e,`span`,`prb-addreview-status prb-addreview-${n}`,t),k=()=>{l.replaceChildren(...g.map(t=>{let n=G(e,`li`,`prb-addreview-row`);n.dataset.rowKey=t.key;let r=t.ok||!!_.get(t.key);n.dataset.state=r?`ok`:`problem`;let i=G(e,`div`,`prb-addreview-row-head`),a=G(e,`span`,`prb-addreview-mark`,r?`✓`:`!`);if(a.setAttribute(`aria-hidden`,`true`),i.append(a,G(e,`span`,`prb-addreview-row-label`,t.label)),n.append(i),t.reviewed?.kept){let r=O(``,`muted`);r.append(q(e,t.reviewed.reviewId,`Resumes where it stopped`)),n.append(r,O(Qt(t.reviewed.kept),`muted`))}else if(t.reviewed){let r=O(``,`muted`);r.append(q(e,t.reviewed.reviewId,`Already reviewed`)),n.append(r)}else t.ok?n.append(O(`Ready to start`,`muted`)):t.reason&&n.append(O(t.reason,`problem`));if(t.folders.length>1){let r=G(e,`select`,`prb-addreview-control prb-addreview-folder`);r.setAttribute(`aria-label`,`Local folder for ${t.label}`);for(let n of t.folders)r.append(K(e,n.branch?`${n.display} (${n.branch})`:n.display,n.path));r.value=_.get(t.key)??t.folder??``,r.addEventListener(`change`,()=>_.set(t.key,r.value)),n.append(r)}else if(t.folders.length===1)n.append(sn(e,t.folders[0].display));else if(t.needsFolder){let r=G(e,`input`,`prb-addreview-control prb-addreview-folder`);r.type=`text`,r.placeholder=`Local folder for this repository, e.g. ~/code/repo`,r.setAttribute(`aria-label`,`Local folder for ${t.label}`),r.spellcheck=!1,r.autocomplete=`off`,r.value=_.get(t.key)??``,r.addEventListener(`input`,()=>{r.value.trim()?_.set(t.key,r.value.trim()):_.delete(t.key),n.dataset.state=r.value.trim()?`ok`:`problem`,E()}),n.append(r)}return n}))},A=()=>{let e=Kt(s.value),t=e.filter(e=>e.kind===`github`).length;c.textContent=e.length===0?s.value.trim()?`No pull request links found.`:``:t===1?`1 pull request recognised`:`${t} pull requests recognised`,g=e.map(e=>e.kind===`github`?g.find(t=>t.key===e.key)??{key:e.key,label:`${e.owner}/${e.repo} #${e.number}`,url:e.url,ok:!1,folders:[]}:{key:e.key,label:`${e.provider} ${e.provider===`GitLab`?`merge request`:`pull request`}`,url:e.url,ok:!1,reason:qt(e.provider),folders:[]}),v=e.some(e=>e.kind===`github`),T=Math.max(0,t-20);let n=++y;k(),D(),E(),b!==null&&r.clearTimeout(b),v&&(b=r.setTimeout(async()=>{b=null;let e=await W(r,`/add-review/pull-requests/preview`,{text:s.value});if(!(C||n!==y)){if(v=!1,!e.ok)f.show(e);else{f.hide(),g=e.value.rows;for(let e of g)e.folder&&!_.has(e.key)&&_.set(e.key,e.folder)}k(),E()}},tn))},j=async()=>{if(E(),h.disabled)return;S=!0,E();let t=w().map(e=>({url:e.url,folder:_.get(e.key)})),i=await W(r,`/add-review/pull-requests`,{items:t,...u.values(),...d.values()});if(S=!1,i.ok&&Yt(e),!C){if(!i.ok){i.field===`destination`?(f.hide(),u.hideProblem(),d.showProblem(i)):i.field?(f.hide(),d.hideProblem(),u.showProblem(i)):(u.hideProblem(),d.hideProblem(),f.show(i)),E();return}x=vn(e,r,i.value.batchId,i.value.rows,n,i.value.destination),a.replaceWith(x.element),x.focus()}};return s.addEventListener(`input`,A),h.addEventListener(`click`,()=>void j()),i.addEventListener(`change`,()=>E()),i.addEventListener(`input`,()=>E()),i.addEventListener(`keydown`,e=>{if(x||e.key!==`Enter`||e.shiftKey||e.isComposing)return;let t=e.target;t.tagName!==`SELECT`&&t.tagName!==`BUTTON`&&t.tagName!==`A`&&t.tagName!==`SUMMARY`&&(e.preventDefault(),j())}),u.loaded.then(()=>E()),E(),s.focus(),()=>{C=!0,b!==null&&r.clearTimeout(b),x?.stop()}}}}function Tn(e){return{title:`New review`,escape:`close`,mount(t,n){let r=e.defaultView,i=G(e,`div`,`prb-addreview`);i.setAttribute(`data-addreview`,`branch`);let a=G(e,`div`,`prb-addreview-config`),o=G(e,`label`,`prb-addreview-label`,`Working folder`),s=G(e,`div`,`prb-addreview-pathrow`),c=G(e,`input`,`prb-palette-input`);c.id=`prb-addreview-folder`,o.htmlFor=c.id,c.type=`text`,c.spellcheck=!1,c.autocomplete=`off`,c.placeholder=`~/code/project`;let l=G(e,`button`,`prb-addreview-browse`,`Browse…`);l.type=`button`,l.hidden=!0,s.append(c,l);let u=G(e,`div`,`prb-addreview-detected`);u.setAttribute(`aria-live`,`polite`);let d=G(e,`p`,`prb-palette-group`,`Recent`),f=G(e,`div`,`prb-palette-results prb-addreview-recent`);f.setAttribute(`role`,`group`),f.setAttribute(`aria-label`,`Recent folders`),d.hidden=!0;let p=yn(e,r,!0),m=J(e),h=G(e,`div`,`prb-addreview-footer`),g=Cn(e);g.textContent=`Review branch`,h.append(g),a.append(o,s,u,d,f,p.element,m.element,h),i.append(G(e,`p`,`prb-addreview-mode`,`Branch`),a),t.append(i);let _=null,v=null,y=!1,b=null,x=!1,S=null,C=(e,t)=>`${e}\n${t.trim()}`,w=()=>C(c.value,p.base.value),T=()=>{g.disabled=y||b!==null||!_?.result.ok||_.key!==w()||!p.complete()},E=e=>{S={base:e,path:c.value},p.base.value=e,v!==null&&r.clearTimeout(v),T(),O().then(e=>{!x&&e.ok&&g.focus()})},D=t=>{if(u.replaceChildren(),!t)return;if(!t.ok){if(t.baseChoice){u.append(ln(e,{error:t.error??``,...t.detail?{detail:t.detail}:{},baseChoice:t.baseChoice},E));return}u.append(G(e,`p`,`prb-addreview-error`,t.error??`This folder cannot be reviewed.`)),t.detail&&u.append(on(e,t.detail));return}let n=G(e,`dl`,`prb-addreview-grid prb-addreview-facts`),r=(t,r)=>{let i=G(e,`dd`);i.append(r),n.append(G(e,`dt`,`prb-addreview-key`,t),i)};if(r(`Repository`,t.repo??``),r(`Branch`,t.branch??``),r(`Base`,t.base??`Not found`),t.reviewed?.kept){let n=q(e,t.reviewed.reviewId,`Resumes where it stopped`),i=G(e,`span`,`prb-addreview-kept`,Qt(t.reviewed.kept)),a=G(e,`span`);a.append(n,G(e,`br`),i),r(`Review`,a)}else t.reviewed&&r(`Review`,q(e,t.reviewed.reviewId,t.reviewed.inProgress?`Being reviewed now`:`Already reviewed`));u.append(n),p.setBasePlaceholder(t.base??null)},O=()=>{let e=c.value,t=p.base.value.trim(),n=C(e,t);return _?.key===n?Promise.resolve(_.result):e.trim()?W(r,`/add-review/folder/inspect`,{path:e,...t?{base:t}:{}}).then(e=>{let t=e.ok?e.value:{ok:!1,error:e.error,...e.detail?{detail:e.detail}:{}};return!x&&w()===n&&(_={key:n,result:t},D(t),T()),t}):(_=null,D(null),T(),Promise.resolve({ok:!1}))},k=e=>{c.value=e,A(),v!==null&&r.clearTimeout(v),T(),O(),c.focus()},A=()=>{!S||S.path===c.value||(p.base.value===S.base&&(p.base.value=``),S=null)},j=async()=>{if(y||b)return;y=!0;let t=w(),i=c.value,o=p.values();T(),v!==null&&(r.clearTimeout(v),v=null);let s=await O();if(x)return;if(!s.ok||!p.complete()||w()!==t)return y=!1,T();let l=await W(r,`/add-review/branch`,{path:i,...o});if(y=!1,l.ok&&Yt(e),!x){if(!l.ok){l.baseChoice?(_={key:t,result:{...l,ok:!1}},D(_.result),m.hide()):l.field?p.showProblem(l):m.show(l),T();return}b=vn(e,r,l.value.batchId,l.value.rows,n),a.replaceWith(b.element),b.focus()}},M=()=>{T(),v!==null&&r.clearTimeout(v),v=r.setTimeout(()=>{v=null,O()},tn)};return c.addEventListener(`input`,()=>{A(),M()}),p.base.addEventListener(`input`,M),l.addEventListener(`click`,async()=>{let e=await W(r,`/add-review/folder/choose`,{});if(!x){if(!e.ok){m.show(e);return}e.value.path?k(e.value.path):c.focus()}}),f.addEventListener(`click`,e=>{let t=e.target.closest(`[data-folder-path]`);t?.dataset.folderPath&&k(t.dataset.folderDisplay??t.dataset.folderPath)}),g.addEventListener(`click`,()=>void j()),i.addEventListener(`keydown`,e=>{if(b||e.isComposing)return;let t=[...f.querySelectorAll(`[data-folder-path]`)],n=t.indexOf(e.target);if(e.key===`ArrowDown`||e.key===`ArrowUp`){let r=e.key===`ArrowDown`?e.target===c?t[0]:n>=0?t[n+1]:null:n===0?c:n>0?t[n-1]:null;if(!r)return;e.preventDefault(),r.focus();return}if(e.key!==`Enter`||e.shiftKey||n>=0)return;let r=e.target;r.tagName!==`SELECT`&&r.tagName!==`BUTTON`&&r.tagName!==`A`&&r.tagName!==`SUMMARY`&&(e.preventDefault(),j())}),i.addEventListener(`change`,()=>T()),p.loaded.then(e=>{x||(l.hidden=!e?.canChooseFolder,T())}),W(r,`/add-review/folders`).then(t=>{x||!t.ok||(f.replaceChildren(...t.value.folders.map(t=>{let n=G(e,`button`,`prb-palette-result`);return n.type=`button`,n.dataset.folderPath=t.path,n.dataset.folderDisplay=t.display,n.append(G(e,`span`,`prb-palette-result-title`,t.branch?`${t.repo} · ${t.branch}`:t.repo),sn(e,t.display,`prb-palette-result-where`)),n})),d.hidden=t.value.folders.length===0)}),T(),c.focus(),()=>{x=!0,b?.stop(),v!==null&&r.clearTimeout(v)}}}}function En(e){return e?.compact?`Expand sidebar`:`Collapse sidebar`}function Dn(e,t){let n=e.documentElement,r=()=>({compact:n.hasAttribute(`data-sidebar-compact`),hidden:n.hasAttribute(`data-sidebar-hidden`)}),i=()=>{let t=r();for(let n of e.querySelectorAll(`[data-sidebar-toggle="rail"]`)){let e=n.querySelector(`.prb-rail-title`);e&&(e.textContent=En(t)),n.setAttribute(`aria-expanded`,String(!t.compact))}},a=n=>{let r=e.body,i=r?.dataset.token,a=i?`${r.dataset.apiBase??``}/prefs?t=${encodeURIComponent(i)}`:`/sidebar`;t.fetch(a,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({sidebar:n})}).catch(()=>{})},o=e.querySelector(`.prb-rail`),s,c=!1,l=()=>{let e=r();return e.compact===!0&&!e.hidden},u=e=>{t.clearTimeout(s),s=void 0,n.toggleAttribute(`data-sidebar-peek`,e&&l())},d=e=>{try{return typeof e?.matches==`function`&&e.matches(`:focus-visible`)}catch{return!1}},f=()=>o?.contains(e.activeElement)===!0&&d(e.activeElement);o?.addEventListener(`pointerenter`,()=>{c=!0,l()&&(t.clearTimeout(s),s=t.setTimeout(()=>u(!0),150))}),o?.addEventListener(`pointerleave`,()=>{c=!1,f()||u(!1)}),o?.addEventListener(`focusin`,e=>{d(e.target)&&l()&&u(!0)}),o?.addEventListener(`focusout`,e=>{let t=e.relatedTarget;t&&o.contains(t)||c||u(!1)});let p=e=>{n.toggleAttribute(`data-sidebar-compact`,e),u(!1),i(),a({compact:e})},m=t=>{n.toggleAttribute(`data-sidebar-hidden`,t),u(!1);let r=e.activeElement;t&&r?.closest(`.prb-rail`)&&e.querySelector(`[data-sidebar-toggle="strip"]`)?.focus(),!t&&r?.matches(`[data-sidebar-toggle="strip"]`)&&e.querySelector(`[data-sidebar-toggle="rail"]`)?.focus(),i(),a({hidden:t})};for(let t of e.querySelectorAll(`[data-sidebar-toggle]`))t.addEventListener(`click`,()=>{r().hidden?m(!1):p(!r().compact)});return i(),{hidden:()=>r().hidden===!0,setHidden:m}}function On(e,t,r){return n(r)||r?.closest?.(`input[type="range"], input[type="radio"], [role="radiogroup"], [role="listbox"], [role="menu"]`)||e.querySelector(`[data-menu-panel]:not([hidden])`)?!0:[...e.querySelectorAll(`dialog[open]`)].some(e=>e!==t&&!e.contains(t))}function kn(e){return e.querySelector(`dialog[open], [data-menu-panel]:not([hidden])`)!==null}function An(e){for(let t of e.children)return t.kind===`leaf`?t.command.group:An(t);return`global`}function jn(e,t,r={}){let i=r.win??window,a=r.doc??document,o=r.isMac??y(i.navigator),s=At(xt(e)),c=null,l=e=>{let t=a.querySelector(`a[href="${e}"]:not([target])`);t?t.click():i.location.assign(e)},u=Bt(a,Ft(o),`${V(o)} opens the command palette and ${V(o,`p`)} starts a new review, from anywhere in the workspace. Single keys never act while you are typing.`,()=>r.onSettle?.()),d=Dn(a,i),f={"palette.open":{run:()=>D()},"add.open":{run:()=>D([`p`])},"add.pullRequest":{panel:wn(a)},"add.branch":{panel:Tn(a)},"navigate.reviews":{run:()=>l(`/`)},"navigate.runs":{run:()=>l(`/runs`)},"navigate.notifications":{run:()=>l(`/notifications`)},"help.shortcuts":{run:()=>u.open()},"sidebar.hide":{run:()=>d.setHidden(!d.hidden()),label:()=>d.hidden()?`Show sidebar`:`Hide sidebar`}},p=z.find(e=>e.id===`add.open`),m=H(p.binding,o);for(let e of a.querySelectorAll(`[data-new-review]`)){e.setAttribute(`aria-keyshortcuts`,Pt(p.binding,o)??``),e.dataset.newReview===`strip`&&(e.dataset.tip=`New review (${m})`);let t=e.querySelector(`[data-new-review-key]`);t&&(t.textContent=m),e.addEventListener(`click`,()=>f[`add.open`].run?.())}let h=e=>f[e.id]??t[e.id],g=(e,t)=>{let n=h(e);return!!n&&(n.available?.(t)??!0)},_=null,v=`back`,b=[],x=()=>{_?.(),_=null},S=(e=`dismissed`)=>{x(),s.reset(),C.close();let t=c;c=null,t?.isConnected&&t.focus(),e===`dismissed`&&r.onSettle?.()},C=Lt(a,e=>O(e),S),w=St(e).map(e=>({keys:H(e.binding,o),label:e.label})),T=Object.fromEntries(mt.map(e=>[e.id,e.label])),E=()=>{let e=s.at;if(!e)return;let t=e.children.map(e=>e.kind===`leaf`?{key:e.key,keyLabel:e.key.toUpperCase(),label:h(e.command)?.label?.()??e.command.label,namespace:!1,available:g(e.command),group:e.command.group,state:h(e.command)?.state?.()??null}:{key:e.key,keyLabel:e.key.toUpperCase(),label:e.label,namespace:!0,available:!0,group:An(e)}),n=s.path.length===0?mt.flatMap(e=>t.filter(t=>t.group===e.id)):t;C.show({trail:Mt(s.path,o),title:e.label,rows:n,groupLabels:s.path.length===0?T:null,footer:w})};function D(e=[]){if(C.isOpen())return S();r.onOpen?.();let t=a.activeElement;c=t instanceof HTMLElement&&t!==a.body?t:null,s.start(e),E()}function O(e){let t=s.press(e);if(t.kind===`descend`)return E();let n=t.kind===`run`&&g(t.command)?h(t.command):null;if(n?.panel&&t.kind===`run`)return k(t.command,n.panel);S(n?`running`:`dismissed`),n?.run?.()}function k(e,t){b=e.binding.kind===`chord`?e.binding.keys.slice(0,-1):[],v=t.escape??`back`;let n=e.binding.kind===`chord`?Mt(e.binding.keys,o):[V(o)];_=C.showPanel(n,t,()=>S(`running`))}function A(){x(),s.start();for(let e of b)s.press(e);E()}let j=St(e);return i.addEventListener(`keydown`,e=>{if(C.isOpen()){if(wt(e))return;let t=()=>{e.preventDefault(),e.stopPropagation()};if(_)return e.key===`Escape`&&!e.isComposing?(t(),v===`close`?S():A()):Dt(e,o)?(t(),S()):void 0;if(e.key===`Escape`||Dt(e,o))return t(),S();if([`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)){t(),Rt(C.dialog,e.key,a.activeElement);return}if(e.target?.closest?.(`[data-palette-key]`)&&(e.key===`Enter`||e.key===` `)||e.key===`Tab`||e.metaKey||e.ctrlKey||e.altKey)return;t(),O(Tt(e)??``);return}if(e.defaultPrevented||e.isComposing)return;let t=Dt(e,o),r=t?Ot(t):void 0;if(r){if(a.querySelector(`dialog[open]`))return;e.preventDefault(),e.stopPropagation(),h(r)?.run?.(e);return}for(let t of j){if(!kt(t.binding,e,o))continue;let r=t.within;if(r){let n=a.querySelector(r);if(!n?.matches(`[open]`)||t.binding.kind===`key`&&!t.binding.primary&&On(a,n,e.target))continue}else if(t.binding.kind===`key`&&t.binding.key!==`Escape`&&(n(e.target)||kn(a)))continue;if(g(t,e)){e.preventDefault(),h(t).run?.(e);return}}},!0),i.addEventListener(`pagehide`,()=>{C.isOpen()&&S(`unloading`)}),Mn(a,e,o),{isOpen:()=>C.isOpen()||u.isOpen(),close:()=>S(),showShortcuts:()=>u.open()}}function Mn(e,t,n){for(let r of yt(t)){let t=r.hint;if(t)for(let i of e.querySelectorAll(t))if(r.binding.kind===`chord`)i.dataset.shortcutHint=H(r.binding,n);else{let e=Pt(r.binding,n);if(e&&i.setAttribute(`aria-keyshortcuts`,e),r.showHint&&!i.querySelector(`:scope > .prb-key-hint`)){let e=i.ownerDocument.createElement(`kbd`);e.className=`prb-key-hint`,e.setAttribute(`aria-hidden`,`true`),e.textContent=H(r.binding,n),i.append(e)}}}}function Nn(e){return`${e} more`}function Pn(e){return e===0?`Nothing unread`:`${e} unread`}function Fn(e){return e===`moved-again`?`replaced by a later move`:`replaced when the review caught up`}function In(e){return e===`restarting`?`Workspace server restarting`:e===`unreachable`?`Workspace server not running`:`Workspace server running`}function $(e,t){let n=e.querySelector(`[data-server-status]`);if(!n)return;n.dataset.serverStatus=t;let r=n.querySelector(`[data-server-status-label]`);r&&(r.textContent=In(t))}function Ln(e,t){let n=e.querySelector(`[data-server-status]`);!n||n.dataset.serverStatus===`restarting`||$(e,t?`running`:`unreachable`)}function Rn(e,t){if(typeof t==`number`)for(let n of e.querySelectorAll(`[data-unread-count]`))n.dataset.unreadStyle===`rail`&&(n.textContent=t===0?``:Pn(t)),n.hidden=t===0}function zn(e){return e===0?`Nothing running`:`${e} ${e===1?`run`:`runs`} in progress`}function Bn(e){return e>9?`9+`:String(e)}function Vn(e,t){if(typeof t==`number`)for(let n of e.querySelectorAll(`[data-running-count]`)){let e=n.dataset.runningStyle;e===`rail`?(n.textContent=t===0?``:String(t),n.setAttribute(`aria-label`,zn(t))):n.textContent=e===`digit`?t===0?``:Bn(t):t===0?``:zn(t),e!==`words`&&(n.hidden=t===0)}}var Hn=6e3,Un=5e3;function Wn(e=document){let t=e.querySelector(`.prb-toasts`);if(t)return t;let n=e.createElement(`div`);return n.className=`prb-toasts`,n.setAttribute(`role`,`status`),n.setAttribute(`aria-live`,`polite`),e.body.append(n),n}function Gn(e,t,n=window){return Kn(e,{kind:t.kind,text:t.text},n)}function Kn(e,t,n){let r=e.ownerDocument,i=r.createElement(`div`);i.className=`prb-toast`,i.dataset.kind=t.kind;let a=r.createElement(`span`);a.className=`prb-toast-text`,a.textContent=t.text;let o=r.createElement(`a`);o.className=`prb-toast-open`,t.href!==void 0&&t.link!==void 0&&(o.href=t.href,o.textContent=t.link);let s=r.createElement(`button`);for(s.type=`button`,s.className=`prb-toast-close`,s.setAttribute(`aria-label`,`Dismiss: ${t.text}`),s.textContent=`×`,i.append(a,...t.href===void 0?[]:[o],s),e.append(i);e.children.length>3;)e.firstElementChild?.remove();let c=n.setTimeout(()=>i.remove(),Hn),l=()=>n.clearTimeout(c),u=()=>{n.clearTimeout(c),c=n.setTimeout(()=>i.remove(),Hn)};return i.addEventListener(`mouseenter`,l),i.addEventListener(`mouseleave`,u),i.addEventListener(`focusin`,l),i.addEventListener(`focusout`,u),s.addEventListener(`click`,()=>{n.clearTimeout(c),i.remove()}),i}var qn=`prb-carried-notices`;function Jn(e=document,t=window){let n=[...e.querySelectorAll(`.prb-toast[data-kind="failed"] .prb-toast-text`)].map(e=>e.textContent??``).filter(Boolean);try{n.length>0&&t.sessionStorage.setItem(qn,JSON.stringify(n))}catch{}t.location.reload()}function Yn(e=document,t=window){let n;try{n=JSON.parse(t.sessionStorage.getItem(qn)??`null`),t.sessionStorage.removeItem(qn)}catch{return}if(Array.isArray(n))for(let r of n)typeof r==`string`&&Gn(Wn(e),{kind:`failed`,text:r},t)}function Xn(e,t,n=window){return Kn(e,{kind:t.tone,text:t.headline,href:`/notifications/open?id=${encodeURIComponent(t.id)}`,link:`Open`},n)}function Zn(e,t,n=window){return Kn(e,{kind:`more`,text:Nn(t),href:`/notifications`,link:`View all`},n)}function Qn(e=document,t=window,n={}){let r=Number(e.body.dataset.notificationsSince);if(!Number.isFinite(r)||r<=0)return;let i=Wn(e),a=async()=>{try{let a=await t.fetch(`/notifications/recent?after=${r}`);if(Ln(e,!0),a.status===403)return;if(a.ok){let o=await a.json();n.paintUnread&&(Rn(e,o.unread),Vn(e,o.running)),typeof o.now==`number`&&(r=o.now);for(let e of[...o.notifications??[]].reverse())Xn(i,e,t);typeof o.more==`number`&&o.more>0&&Zn(i,o.more,t)}}catch{Ln(e,!1)}t.setTimeout(()=>void a(),Un)};t.setTimeout(()=>void a(),Un)}function $n(e,t){Rn(e,t.unread),Vn(e,t.running),typeof t.driving==`boolean`&&er(e,t.driving)}function er(e,t){let n=e.querySelector(`[data-restart]`),r=e.querySelector(`[data-restart-note]`);n&&(n.disabled=t),r&&(r.hidden=!t)}var tr=`prb-server-restarted`;function nr(e=document,t=window){let n=null;try{n=t.sessionStorage.getItem(tr),t.sessionStorage.removeItem(tr)}catch{}n!==null&&Gn(Wn(e),{kind:`ready`,text:`Server restarted. Workspace is back online.`},t)}var rr=2e4,ir=300;function ar(e){nr();let t=document.querySelector(`[data-restart]`),n=document.querySelector(`[data-restart-note]`);t&&t.addEventListener(`click`,()=>{t.disabled=!0,or(e,t,n)})}async function or(e,t,n){let r,i=null;try{let a=await fetch(e,{method:`POST`});if(a.status===409){er(document,!0);return}if(!a.ok)return void hr(t,n,await mr(a));let o=await a.json();r=typeof o.startedAt==`number`?o.startedAt:null,i=fr(window.location.href,o.port)}catch{hr(t,n,`The workspace server could not be reached.`);return}if(document.body.dataset.restarting=`true`,$(document,`restarting`),i!==null){if(await ur(Number(new URL(i).port)))return void window.location.assign(i)}else if(await sr(r)){try{window.sessionStorage.setItem(tr,`1`)}catch{}window.location.reload();return}if(delete document.body.dataset.restarting,await pr()){$(document,`running`),hr(t,n,`The server did not restart, and is still the one that was running.`);return}$(document,`unreachable`),hr(t,n,`Server restart failed. Run prreviewbuddy open to start the workspace again.`)}async function sr(e){let t=Date.now()+rr;for(;Date.now()<t;){await new Promise(e=>setTimeout(e,ir));try{let t=await fetch(`/health`,{cache:`no-store`});if(!t.ok)continue;let n=await t.json();if(typeof n.startedAt==`number`&&n.startedAt!==e)return!0}catch{}}return!1}var cr=4,lr={now:()=>Date.now(),sleep:e=>new Promise(t=>setTimeout(t,e))};async function ur(e,t=()=>dr(e),n=lr){let r=n.now()+rr,i=0;for(;n.now()<r;){await n.sleep(ir);let e=await t();if(e===`moved`||(i=e===`gone`?i+1:0,i>=cr))return!0}for(let e=0;e<cr;e+=1){let e=await t();if(e!==`gone`)return e===`moved`;await n.sleep(ir)}return!0}async function dr(e){try{let t=await fetch(`/health`,{cache:`no-store`});return t.ok&&(await t.json()).movedTo===e?`moved`:`here`}catch{return`gone`}}function fr(e,t){if(typeof t!=`number`||!Number.isInteger(t))return null;let n=new URL(e);return t===(n.port===``?n.protocol===`https:`?443:80:Number(n.port))?null:(n.port=String(t),n.href)}async function pr(){try{return(await fetch(`/health`,{cache:`no-store`})).ok}catch{return!1}}async function mr(e){try{return(await e.json()).error??`The server could not be restarted.`}catch{return`The server could not be restarted.`}}function hr(e,t,n){e.disabled=!1,t&&(t.textContent=n,t.hidden=!1)}export{st as $,Fe as A,Be as B,ze as C,e as Ct,Ee as D,Ne as E,lt as F,je as G,Ae as H,$e as I,Ze as J,I as K,Ge as L,ke as M,Ve as N,Oe as O,ct as P,He as Q,we as R,pt as S,n as St,ge as T,Xe as U,be as V,Me as W,tt as X,Qe as Y,ut as Z,zt as _,v as _t,Gn as a,de as at,Ft as b,p as bt,Vn as c,ae as ct,$ as d,le as dt,ot as et,Fn as f,P as ft,Zt as g,y as gt,Xt as h,O as ht,Yn as i,ce as it,De as j,Te as k,Rn as l,oe as lt,jn as m,re as mt,$n as n,nt,Qn as o,me as ot,Pn as p,ne as pt,We as q,Jn as r,rt,Wn as s,ie as st,ar as t,it as tt,Ln as u,pe as ut,bt as v,A as vt,he as w,dt as x,j as xt,H as y,k as yt,Ue as z};
@@ -1 +1 @@
1
- import{z as e}from"./chunk-Cs33-tV3.js";function t(e=document){for(let t of e.querySelectorAll(`.prb-index-status`))t.addEventListener(`click`,e=>{let n=t.querySelector(`select`);if(!(!n||e.target instanceof Node&&n.contains(e.target))){e.preventDefault(),n.focus();try{n.showPicker()}catch{}}})}function n(t,n){r(t,t=>e(t.dataset.section)?t.dataset.section:void 0,n)}function r(e,t,n){let r=Promise.resolve();for(let i of e){let e=t(i);if(e===void 0)continue;let a=i.open;i.addEventListener(`toggle`,()=>{if(i.open===a)return;a=i.open;let t=!i.open;r=r.then(()=>n(e,t)).catch(()=>{})})}}export{n,t as r,r as t};
1
+ import{V as e}from"./chunk-C0JUspm9.js";function t(e=document){for(let t of e.querySelectorAll(`.prb-index-status`))t.addEventListener(`click`,e=>{let n=t.querySelector(`select`);if(!(!n||e.target instanceof Node&&n.contains(e.target))){e.preventDefault(),n.focus();try{n.showPicker()}catch{}}})}function n(t,n){r(t,t=>e(t.dataset.section)?t.dataset.section:void 0,n)}function r(e,t,n){let r=Promise.resolve();for(let i of e){let e=t(i);if(e===void 0)continue;let a=i.open;i.addEventListener(`toggle`,()=>{if(i.open===a)return;a=i.open;let t=!i.open;r=r.then(()=>n(e,t)).catch(()=>{})})}}export{n,t as r,r as t};
@@ -1 +1 @@
1
- import{bt as e}from"./chunk-Cs33-tV3.js";var t=`button:not([disabled])`;function n(e){return e.querySelector(`[data-menu-panel]`)}function r(e){return e.querySelector(`[data-menu-trigger]`)}function i(e){let t=n(e);return t?[...t.querySelectorAll(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)].filter(e=>!e.closest(`[hidden]`)):[]}function a(e){let r=n(e);return r?[...r.querySelectorAll(t)].filter(e=>!e.closest(`[hidden]`)):[]}var o=`data-menu-placement`,s=`data-menu-align`;function c(e){let t=e.ownerDocument.defaultView,n=0,r=t?.innerHeight??1/0,i=0,a=t?.innerWidth??1/0,o=e=>e!==`visible`&&e!==``;for(let s=e.parentElement;s&&t;s=s.parentElement){let e=t.getComputedStyle(s);if(!o(e.overflowY)&&!o(e.overflowX))continue;let c=s.getBoundingClientRect();o(e.overflowY)&&(n=Math.max(n,c.top),r=Math.min(r,c.bottom)),o(e.overflowX)&&(i=Math.max(i,c.left),a=Math.min(a,c.right))}return{top:n,bottom:r,left:i,right:a}}var l=8,u=120;function d(e){let t=n(e),i=r(e);if(!t||!i)return;t.removeAttribute(o),t.removeAttribute(s),t.style.removeProperty(`max-height`),t.style.removeProperty(`overflow-y`),t.style.removeProperty(`box-sizing`),t.scrollTop=0;let a=t.getBoundingClientRect(),d=i.getBoundingClientRect(),f=c(e);a.right>f.right-l&&d.right-a.width>=f.left+l&&t.setAttribute(s,`end`);let p=Math.max(0,a.top-d.bottom),m=f.bottom-d.bottom-p-l,h=d.top-f.top-p-l,g=a.height,_=g<=m?`below`:g<=h||h>m?`above`:`below`;_===`above`&&t.setAttribute(o,`above`);let v=_===`above`?h:m;g<=v||(t.style.boxSizing=`border-box`,t.style.maxHeight=`${Math.max(Math.floor(v),u)}px`,t.style.overflowY=`auto`)}function f(e){return!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey?e.key===`j`?`ArrowDown`:e.key===`k`?`ArrowUp`:e.key:e.key}function p(t,o={}){let s=null,c=null,l=o.within?`${o.within} [data-menu]`:`[data-menu]`,u=e=>e&&(!o.within||e.closest(o.within))?e:null,p=(e,t={})=>{let i=n(e);if(!i||i.hidden)return;i.hidden=!0;let a=r(e);a?.setAttribute(`aria-expanded`,`false`);let l=s===e?c:null;s===e&&(s=null,c=null),o.onClose?.(e),t.returnFocus&&(l??(()=>a?.focus()))()},m=()=>{for(let e of t.querySelectorAll(l))p(e)},h=(e,t,i=null)=>{let l=n(e);l&&(m(),c=i,o.onOpen?.(e),l.hidden=!1,d(e),r(e)?.setAttribute(`aria-expanded`,`true`),s=e,t&&a(e)[0]?.focus())};return t.addEventListener(`click`,e=>{let t=e.target,r=u(t?.closest?.(`[data-menu]`)??null);if(!r){m();return}if(t?.closest(`[data-menu-trigger]`)){let t=e.detail===0;n(r)?.hidden?h(r,t):p(r);return}s&&s!==r&&p(s)}),t.addEventListener(`keydown`,t=>{if(s&&!s.isConnected&&(s=null),!s)return;let n=s;if(t.key===`Escape`){t.preventDefault(),p(n,{returnFocus:!0});return}if(!n.contains(t.target))return;if(t.key===`Tab`){if(n.hasAttribute(`data-menu-form`)){let e=i(n),r=e.indexOf(t.target);if(e.length>0){t.preventDefault(),e[(r+(t.shiftKey?-1:1)+e.length)%e.length].focus();return}}p(n);return}if(e(t.target))return;let r=a(n);if(r.length===0)return;let o=r.indexOf(t.target),c=f(t),l=c===`ArrowDown`?r[(o+1)%r.length]:c===`ArrowUp`?r[(o-1+r.length)%r.length]:c===`Home`?r[0]:c===`End`?r[r.length-1]:null;l&&(t.preventDefault(),l.focus(),l.scrollIntoView({block:`nearest`}))}),{open:(e,t={})=>h(e,t.focusFirst===!0,t.returnFocus??null),close:p,closeAll:m}}function m(e){return e===`done`||e===`failed`}function h(e,t){let n=e=>e.toLowerCase().replace(/\bthe\b/g,``).replace(/[^a-z]/g,``);return n(e)===n(t)}function g(e){return e<3e4?1e3:e<12e4?3e3:e<6e5?8e3:15e3}export{p as i,m as n,h as r,g as t};
1
+ import{St as e}from"./chunk-C0JUspm9.js";var t=`button:not([disabled])`;function n(e){return e.querySelector(`[data-menu-panel]`)}function r(e){return e.querySelector(`[data-menu-trigger]`)}function i(e){let t=n(e);return t?[...t.querySelectorAll(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)].filter(e=>!e.closest(`[hidden]`)):[]}function a(e){let r=n(e);return r?[...r.querySelectorAll(t)].filter(e=>!e.closest(`[hidden]`)):[]}var o=`data-menu-placement`,s=`data-menu-align`;function c(e){let t=e.ownerDocument.defaultView,n=0,r=t?.innerHeight??1/0,i=0,a=t?.innerWidth??1/0,o=e=>e!==`visible`&&e!==``;for(let s=e.parentElement;s&&t;s=s.parentElement){let e=t.getComputedStyle(s);if(!o(e.overflowY)&&!o(e.overflowX))continue;let c=s.getBoundingClientRect();o(e.overflowY)&&(n=Math.max(n,c.top),r=Math.min(r,c.bottom)),o(e.overflowX)&&(i=Math.max(i,c.left),a=Math.min(a,c.right))}return{top:n,bottom:r,left:i,right:a}}var l=8,u=120;function d(e){let t=n(e),i=r(e);if(!t||!i)return;t.removeAttribute(o),t.removeAttribute(s),t.style.removeProperty(`max-height`),t.style.removeProperty(`overflow-y`),t.style.removeProperty(`box-sizing`),t.scrollTop=0;let a=t.getBoundingClientRect(),d=i.getBoundingClientRect(),f=c(e);a.right>f.right-l&&d.right-a.width>=f.left+l&&t.setAttribute(s,`end`);let p=Math.max(0,a.top-d.bottom),m=f.bottom-d.bottom-p-l,h=d.top-f.top-p-l,g=a.height,_=g<=m?`below`:g<=h||h>m?`above`:`below`;_===`above`&&t.setAttribute(o,`above`);let v=_===`above`?h:m;g<=v||(t.style.boxSizing=`border-box`,t.style.maxHeight=`${Math.max(Math.floor(v),u)}px`,t.style.overflowY=`auto`)}function f(e){return!e.metaKey&&!e.ctrlKey&&!e.altKey&&!e.shiftKey?e.key===`j`?`ArrowDown`:e.key===`k`?`ArrowUp`:e.key:e.key}function p(t,o={}){let s=null,c=null,l=o.within?`${o.within} [data-menu]`:`[data-menu]`,u=e=>e&&(!o.within||e.closest(o.within))?e:null,p=(e,t={})=>{let i=n(e);if(!i||i.hidden)return;i.hidden=!0;let a=r(e);a?.setAttribute(`aria-expanded`,`false`);let l=s===e?c:null;s===e&&(s=null,c=null),o.onClose?.(e),t.returnFocus&&(l??(()=>a?.focus()))()},m=()=>{for(let e of t.querySelectorAll(l))p(e)},h=(e,t,i=null)=>{let l=n(e);l&&(m(),c=i,o.onOpen?.(e),l.hidden=!1,d(e),r(e)?.setAttribute(`aria-expanded`,`true`),s=e,t&&a(e)[0]?.focus())};return t.addEventListener(`click`,e=>{let t=e.target,r=u(t?.closest?.(`[data-menu]`)??null);if(!r){m();return}if(t?.closest(`[data-menu-trigger]`)){let t=e.detail===0;n(r)?.hidden?h(r,t):p(r);return}s&&s!==r&&p(s)}),t.addEventListener(`keydown`,t=>{if(s&&!s.isConnected&&(s=null),!s)return;let n=s;if(t.key===`Escape`){t.preventDefault(),p(n,{returnFocus:!0});return}if(!n.contains(t.target))return;if(t.key===`Tab`){if(n.hasAttribute(`data-menu-form`)){let e=i(n),r=e.indexOf(t.target);if(e.length>0){t.preventDefault(),e[(r+(t.shiftKey?-1:1)+e.length)%e.length].focus();return}}p(n);return}if(e(t.target))return;let r=a(n);if(r.length===0)return;let o=r.indexOf(t.target),c=f(t),l=c===`ArrowDown`?r[(o+1)%r.length]:c===`ArrowUp`?r[(o-1+r.length)%r.length]:c===`Home`?r[0]:c===`End`?r[r.length-1]:null;l&&(t.preventDefault(),l.focus(),l.scrollIntoView({block:`nearest`}))}),{open:(e,t={})=>h(e,t.focusFirst===!0,t.returnFocus??null),close:p,closeAll:m}}function m(e){return e===`done`||e===`failed`}function h(e,t){let n=e=>e.toLowerCase().replace(/\bthe\b/g,``).replace(/[^a-z]/g,``);return n(e)===n(t)}function g(e){return e<3e4?1e3:e<12e4?3e3:e<6e5?8e3:15e3}export{p as i,m as n,h as r,g as t};
@@ -0,0 +1,5 @@
1
+ import{St as e,ct as t,lt as n,nt as r,ot as i,rt as a,st as o,ut as s}from"./chunk-C0JUspm9.js";async function c(e,t){try{await navigator.clipboard.writeText(t);let n=e.textContent;e.textContent=`Copied`,window.setTimeout(()=>{e.textContent=n},1200)}catch{let n=document.createElement(`input`);n.type=`text`,n.readOnly=!0,n.value=t,n.className=`prb-menu-id`,n.setAttribute(`data-id-field`,``),e.after(n),n.select()}}var l=[`progress`,`overview`,`guide`,`issues`,`questions`,`files`,`prcontext`,`architecture`,`map`,`diagram`,`kiss`,`kissrecs`],u=`#theme-`,d=[`buddy`,`overview`,`guide`,`architecture`,`map`,`diagram`,`issues`,`questions`,`files`,`prcontext`,`kiss`,`kissrecs`,`progress`],f=`&focus=`;function p(e){return`#${e}`}function m(e){return`${u}${encodeURIComponent(e)}`}function h(e){let t=e.kind===`view`?p(e.view):m(e.sectionId);return e.focus?`${t}${f}${e.focus}`:t}var g=[`architecture`,`map`,`diagram`];function _(e,t){return g.includes(e)&&g.includes(t??``)?e:void 0}function ee(e,t){let n=S(e),r=n?.kind===`view`&&n.view===t?n.focus:_(t,n?.focus);return h({kind:`view`,view:t,...r?{focus:r}:{}})}function v(e){let{focus:t,...n}=e;return n}function y(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function b(e){return d.includes(e)}function x(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&b(i)?{focus:i}:{};return t===`view`&&typeof n==`string`&&l.includes(n)?{kind:t,view:n,...a}:t===`section`&&typeof r==`string`&&r!==``?{kind:t,sectionId:r,...a}:null}function S(e){let t=e.indexOf(f);if(t===-1)return C(e);let n=C(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return b(r)?{...n,focus:r}:n}function C(e){if(e.startsWith(u)){let t=e.slice(7);if(!t)return null;try{return{kind:`section`,sectionId:decodeURIComponent(t)}}catch{return null}}let t=e.replace(/^#/,``);return l.includes(t)?{kind:`view`,view:t}:null}var w=`pushedFocus`;function T(e){let{[w]:t,...n}=e;return n}function E(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function D(e,t,n){if(e.focus===t)return;let r={...v(T(e)),focus:t};e.focus&&n.history.state?.[w]?n.history.replaceState({...r,[w]:!0},``,h(r)):n.history.pushState({...r,[w]:!0},``,h(r)),n.apply(r)}function O(e,t){if(!e.focus)return;if(t.history.state?.[w]){t.history.back();return}let n=v(T(e));t.history.replaceState(n,``,h(n)),t.apply(n)}function k(t,n,r){if(!r||t.key!==`Escape`||t.defaultPrevented||n.querySelector(`dialog[open], [data-menu-panel]:not([hidden]), [data-analysis-details][open], [data-range-details][open], .pr-helper-selection-popover`))return!1;let i=t.target;return!(i?.closest?.(`[data-ask-resize]`)||i instanceof HTMLInputElement&&e(i)&&i.value!==``)}function A(e,t,n){e&&(n?e.dataset.focus=n:delete e.dataset.focus);for(let e of t.querySelectorAll(`[data-focus-toggle]`)){let t=e.dataset.focusToggle===n,r=e.dataset.focusName??`this`,i=t?`Exit focus on ${r}`:`Expand ${r}`;e.setAttribute(`aria-pressed`,String(t)),e.setAttribute(`aria-label`,i),e.setAttribute(`title`,t?`${i} (Esc)`:i)}}function j(e,t){e.dataset.status=t,e.textContent=r(t),e.tagName===`BUTTON`&&e.setAttribute(`aria-label`,a(t))}function M(e,r,a){if(e.dataset.lifecyclePill=r?.state??`active`,e.textContent=o(r),e.tagName!==`BUTTON`)return;let c=t(r);e.dataset.lifecyclePress=c,e.setAttribute(`aria-label`,n(r)),c===`menu`?(e.setAttribute(`data-menu-trigger`,``),e.setAttribute(`aria-haspopup`,`true`),e.hasAttribute(`aria-expanded`)||e.setAttribute(`aria-expanded`,`false`)):(e.removeAttribute(`data-menu-trigger`),e.removeAttribute(`aria-haspopup`),e.removeAttribute(`aria-expanded`));let l=e.closest(`[data-lifecycle-control]`);for(let e of l?.querySelectorAll(`[data-lifecycle-set]`)??[]){let t=e.dataset.lifecycleSet;e.hidden=!s(t,r,a),e.textContent=i(t,r,a)}}function te(e,t){!e||e.tagName!==`BUTTON`||(t?(e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-disabled`,`true`)):(e.removeAttribute(`aria-busy`),e.removeAttribute(`aria-disabled`)))}function N(e){return e?.getAttribute(`aria-busy`)===`true`}function P(e,t){let n=t.toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(e=>{let t=`${e.name}\n${e.prompt}`.toLowerCase();return n.every(e=>t.includes(e))})}function F(e){return e<0||e>=10?null:e===9?`0`:String(e+1)}function I(e){return/^[0-9]$/.test(e)?e===`0`?9:Number(e)-1:null}function L(e){return{title:`Choose a prompt`,mount(t,n){let r=t.ownerDocument,i=e.prompts(),a=r.createElement(`input`);a.type=`search`,a.className=`prb-palette-input`,a.placeholder=`Filter prompts`,a.setAttribute(`aria-label`,`Filter prompts`),a.spellcheck=!1;let o=r.createElement(`p`);o.className=`prb-palette-summary`,o.setAttribute(`aria-live`,`polite`);let s=r.createElement(`div`);s.className=`prb-palette-results`,s.setAttribute(`role`,`group`),s.setAttribute(`aria-label`,`Prompts`);let c=[],l=()=>[...s.querySelectorAll(`[data-prompt-choice]`)],u=()=>{let e=r.activeElement===a;for(let[t,n]of l().entries())n.toggleAttribute(`data-enter-target`,e&&t===0)},d=()=>{c=P(i,a.value),s.replaceChildren(...c.map((e,t)=>{let n=r.createElement(`button`);n.type=`button`,n.className=`prb-palette-result prb-palette-prompt`,n.dataset.promptChoice=e.id;let i=r.createElement(`kbd`);i.className=`prb-kbd prb-palette-num`;let a=F(t);a?i.textContent=a:i.setAttribute(`aria-hidden`,`true`);let o=r.createElement(`span`);o.className=`prb-palette-prompt-text`;let s=r.createElement(`span`);s.className=`prb-palette-result-title`,s.textContent=e.name;let c=r.createElement(`span`);return c.className=`prb-palette-prompt-said`,c.textContent=e.prompt,o.append(s,c),n.append(i,o),n})),o.textContent=i.length===0?`No saved prompts yet. Add one under Your prompts in Buddy AI.`:c.length===0?`No prompts match.`:c.length===i.length?`${i.length} ${i.length===1?`prompt`:`prompts`}`:`${c.length} of ${i.length} prompts`,u()},f=t=>{!t||!c.some(e=>e.id===t)||(n(),e.choose(t))},p=e=>{a.value=e===`Backspace`?a.value.slice(0,-1):a.value+e,a.focus(),a.dispatchEvent(new Event(`input`,{bubbles:!0}))};a.addEventListener(`input`,d),a.addEventListener(`focus`,u),a.addEventListener(`blur`,u),s.addEventListener(`click`,e=>{f(e.target.closest(`[data-prompt-choice]`)?.dataset.promptChoice)}),t.addEventListener(`keydown`,e=>{if(e.isComposing||e.metaKey||e.ctrlKey||e.altKey)return;let t=l(),n=e.target===a,r=t.indexOf(e.target),i=I(e.key);if(i!==null)return e.preventDefault(),f(t[i]?.dataset.promptChoice);if(e.key===`Enter`)return e.preventDefault(),f((n?t[0]:t[r])?.dataset.promptChoice);let o=e.key===`ArrowDown`||!n&&e.key===`j`,s=e.key===`ArrowUp`||!n&&e.key===`k`;if(o||s){let n=o?r<0?t[0]:t[r+1]:r<=0?a:t[r-1];e.preventDefault(),n?.focus();return}!n&&(e.key.length===1||e.key===`Backspace`)&&(e.preventDefault(),p(e.key))}),t.append(a,o,s),d(),a.focus()}}}var R=`Fetch selected`;function z(e){return`${e} ${e===1?`repository`:`repositories`}`}function B(e){return`Fetching ${z(e)}…`}function V(e){return e.fetched===0?`Could not fetch ${z(e.repositories)}`:e.fetched===e.repositories?`Fetched ${z(e.repositories)}`:`Fetched ${e.fetched} of ${z(e.repositories)}`}function H(e,t){let n=new Set,r=new Set;for(let i of e)for(let e of i.lineage){let i=t[e];i!==void 0&&(n.add(e),r.add(i))}return{ids:[...n],repositories:r.size}}function U(e,t){return H(t,e).repositories>0}function W(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var G=1e3,K=new WeakMap;function q(e,t){return e.length<=1e3?W(e)||`&nbsp;`:`${W(e.slice(0,G))}\u2026 <button type="button" class="prb-code-long-toggle" data-full-line="${t}">Show full line</button>`}function J(e){let t=e.lines.length;return`<tr class="prb-code-deletion" data-before-line="${e.beforeLine}"><td class="prb-code-num"></td><td class="prb-code-line"><button type="button" class="prb-code-deletion-toggle" data-deletion-toggle aria-expanded="false">− ${t} deleted ${t===1?`line`:`lines`}</button></td></tr>`+e.lines.map(e=>`<tr class="prb-code-deleted" hidden><td class="prb-code-num">− ${e.oldLine}</td><td class="prb-code-line">${q(e.text,`old:${e.oldLine}`)}</td></tr>`).join(``)}function Y(e,t){let n=new Set(e.addedLines),r=new Map;for(let t of e.deletions??[])r.set(t.beforeLine,t);let i=e.lines.map((i,a)=>{let o=e.from+a,s=[n.has(o)?`prb-code-added`:``,o===t?`prb-code-target`:``].filter(Boolean).join(` `),c=r.get(o);return`${c?J(c):``}<tr class="${s}" data-line="${o}"><td class="prb-code-num">${o}</td><td class="prb-code-line">${q(i,`new:${o}`)}</td></tr>`}),a=r.get(e.totalLines+1);return a&&e.to===e.totalLines&&i.push(J(a)),i.join(``)}function X(e){let t=e.getAttribute(`aria-expanded`)!==`true`;e.setAttribute(`aria-expanded`,String(t));let n=e.closest(`tr`)?.nextElementSibling;for(;n?.classList.contains(`prb-code-deleted`);)n.hidden=!t,n=n.nextElementSibling}function Z(e,t){let n=new Map;for(let e of t.deletions??[])for(let t of e.lines)n.set(t.oldLine,t.text);for(let r of e.querySelectorAll(`[data-full-line]`)){let[e,i]=(r.dataset.fullLine??``).split(`:`),a=Number(i),o=e===`old`?n.get(a):t.lines[a-t.from];o!==void 0&&K.set(r,o)}}function Q(e){let t=K.get(e),n=e.closest(`td`);return t===void 0||!n?null:(n.textContent=t,n)}function ne(e){return e.deletion?2*e.line-1:2*e.line}function $(e){return e%2==1?{line:(e+1)/2,deletion:!0}:{line:e/2,deletion:!1}}function re(e,t){if(e.length===0)return``;let n=e.map(ne),r=n.indexOf(t),i=n.some(e=>e<t),a=n.some(e=>e>t),o=e.length,s=r===-1?`${o} ${o===1?`change`:`changes`}`:`${r+1} of ${o}`;return`<span class="prb-code-nav" data-change-navigator data-change-keys="${n.join(`,`)}" data-change-position="${t}">
2
+ <button type="button" class="prb-code-nav-step" data-change-step="previous"${i?``:` disabled`}>\u2191 Previous</button>
3
+ <span class="prb-code-nav-count" aria-live="polite">${s}</span>
4
+ <button type="button" class="prb-code-nav-step" data-change-step="next"${a?``:` disabled`}>Next \u2193</button>
5
+ </span>`}function ie(e,t){let n=(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number),r=Number(e.dataset.changePosition)||0,i=t===`next`?n.find(e=>e>r):[...n].reverse().find(e=>e<r);return i===void 0?null:{key:i,anchor:$(i)}}function ae(e,t){return e.querySelector(t.deletion?`tr[data-before-line="${t.line}"]`:`tr[data-line="${t.line}"]`)}function oe(e){return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).map($)}function se(e){if(!e)return;let t=Number(e.dataset.changePosition)||0;return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).includes(t)?$(t):void 0}function ce(e,t){return Math.max(e,+!t)+1}export{d as A,N as C,O as D,k as E,y as F,ee as I,c as L,h as M,x as N,A as O,S as P,j as S,D as T,B as _,W as a,F as b,re as c,ie as d,X as f,V as g,H as h,se as i,_ as j,E as k,Y as l,U as m,Z as n,oe as o,R as p,ae as r,ce as s,G as t,Q as u,L as v,te as w,M as x,I as y};
package/static/help.js CHANGED
@@ -1 +1 @@
1
- import{_ as e,ft as t,m as n,mt as r,o as i,t as a,v as o,xt as s}from"./chunk-Cs33-tV3.js";function c(e,t){if(e.length===0)return-1;if(t)return e.length-1;let n=0;return e.forEach((e,t)=>{e<=120&&(n=t)}),n}var l=new Set([`ArrowDown`,`ArrowUp`,`PageDown`,`PageUp`,`Home`,`End`,` `]);function u(e,t){let n=[...e.querySelectorAll(`.prb-help-contents a[href^="#"]`)],r=n.map(t=>e.getElementById(decodeURIComponent(t.hash.slice(1)))),i=e.defaultView;if(n.length===0||!i)return;let a=r.findIndex(e=>e!==null&&`#${e.id}`===i.location.hash),o=e=>{n.forEach((t,n)=>{n===e?t.setAttribute(`aria-current`,`location`):t.removeAttribute(`aria-current`)})},s=()=>{if(a>=0)return o(a);let n=t.scrollHeight>t.clientHeight?t:e.scrollingElement??e.documentElement,i=Math.max(0,n===t?t.getBoundingClientRect().top:0),s=r.map(e=>e?e.getBoundingClientRect().top-i:1/0),l=n.scrollTop>0&&n.scrollTop+n.clientHeight>=n.scrollHeight-2;o(c(s,l))},u=e=>{let t=r.findIndex(t=>t!==null&&`#${t.id}`===e);t<0||(a=t,o(t))},d=()=>{a<0||(a=-1,s())};e.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[href^="#"]`);t&&u(t.hash)}),i.addEventListener(`hashchange`,()=>u(i.location.hash)),t.addEventListener(`wheel`,d,{passive:!0}),t.addEventListener(`touchmove`,d,{passive:!0}),t.addEventListener(`pointerdown`,d),e.addEventListener(`keydown`,e=>{l.has(e.key)&&d()}),e.addEventListener(`scroll`,s,{capture:!0,passive:!0}),i.addEventListener(`resize`,s),s()}t(),n(`global`,{}),document.querySelector(`[data-shortcut-table]`)?.replaceChildren(e(document,o(r(navigator)))),a(`/restart`);var d=document.querySelector(`main.prb-help`);d&&u(document,d),i(document,window,{paintUnread:!0}),s(window,()=>window.location.reload());
1
+ import{Ct as e,_ as t,b as n,gt as r,m as i,mt as a,o,t as s}from"./chunk-C0JUspm9.js";function c(e,t){if(e.length===0)return-1;if(t)return e.length-1;let n=0;return e.forEach((e,t)=>{e<=120&&(n=t)}),n}var l=new Set([`ArrowDown`,`ArrowUp`,`PageDown`,`PageUp`,`Home`,`End`,` `]);function u(e,t){let n=[...e.querySelectorAll(`.prb-help-contents a[href^="#"]`)],r=n.map(t=>e.getElementById(decodeURIComponent(t.hash.slice(1)))),i=e.defaultView;if(n.length===0||!i)return;let a=r.findIndex(e=>e!==null&&`#${e.id}`===i.location.hash),o=e=>{n.forEach((t,n)=>{n===e?t.setAttribute(`aria-current`,`location`):t.removeAttribute(`aria-current`)})},s=()=>{if(a>=0)return o(a);let n=t.scrollHeight>t.clientHeight?t:e.scrollingElement??e.documentElement,i=Math.max(0,n===t?t.getBoundingClientRect().top:0),s=r.map(e=>e?e.getBoundingClientRect().top-i:1/0),l=n.scrollTop>0&&n.scrollTop+n.clientHeight>=n.scrollHeight-2;o(c(s,l))},u=e=>{let t=r.findIndex(t=>t!==null&&`#${t.id}`===e);t<0||(a=t,o(t))},d=()=>{a<0||(a=-1,s())};e.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[href^="#"]`);t&&u(t.hash)}),i.addEventListener(`hashchange`,()=>u(i.location.hash)),t.addEventListener(`wheel`,d,{passive:!0}),t.addEventListener(`touchmove`,d,{passive:!0}),t.addEventListener(`pointerdown`,d),e.addEventListener(`keydown`,e=>{l.has(e.key)&&d()}),e.addEventListener(`scroll`,s,{capture:!0,passive:!0}),i.addEventListener(`resize`,s),s()}a(),i(`global`,{}),document.querySelector(`[data-shortcut-table]`)?.replaceChildren(t(document,n(r(navigator)))),s(`/restart`);var d=document.querySelector(`main.prb-help`);d&&u(document,d),o(document,window,{paintUnread:!0}),e(window,()=>window.location.reload());
@@ -1 +1 @@
1
- import{a as e,c as t,f as n,ft as r,l as i,m as a,p as o,s,t as c,xt as l}from"./chunk-Cs33-tV3.js";import{t as u}from"./chunk-C8kkSv38.js";var d=5e3;function f(e){let t=[],n=[],r=0;for(let i of e){let e=encodeURIComponent(i).length+1;n.length>0&&r+e>4e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}var p=`Unread. `;function m(e,t){if(e.dataset.rowState===t||t===`unread`)return;e.dataset.rowState=t,e.dataset.read=`true`;let r=e.querySelector(`.prb-notification-open`),i=r?.getAttribute(`aria-label`)??``;if(i.startsWith(p)&&(i=i.slice(8)),t===`moved-again`||t===`caught-up`){let r=n(t);i=`${i}, ${r}`;let a=e.querySelector(`.prb-notification-meta`);if(a&&!a.querySelector(`[data-notification-replaced]`)){let t=e.ownerDocument.createElement(`span`);t.className=`prb-notification-replaced`,t.dataset.notificationReplaced=``,t.textContent=` · ${r}`,a.append(t)}}r?.setAttribute(`aria-label`,i)}function h(e,t){let n=e.querySelector(`[data-notifications-count]`);n&&(n.textContent=o(t));let r=e.querySelector(`[data-notifications-read-all]`);r&&(r.disabled=t===0),i(e,t)}function g(e,t){let n=Number(e.dataset.createdAt),r=Number(t.dataset.createdAt);return n>r||n===r&&(e.dataset.notificationId??``)<(t.dataset.notificationId??``)}function _(e,t){let n=[...e.querySelectorAll(`[data-notification-id]`)].find(e=>g(t,e));n?n.before(t):e.append(t)}function v(e,t){let n=new Set([...e.querySelectorAll(`[data-notification-id]`)].map(e=>e.dataset.notificationId));return Object.keys(t).filter(e=>!n.has(e))}function y(e,n,r=()=>{}){let i=Array.isArray(n.rows)?n.rows.filter(e=>typeof e==`string`):[],a=e.querySelector(`[data-notifications]`);if(i.length>0&&!a)return!1;let o=!1;if(a){for(let t of i){let n=e.createElement(`template`);n.innerHTML=t.trim();let r=n.content.firstElementChild,i=r?.dataset.notificationId;!r||!i||[...a.querySelectorAll(`[data-notification-id]`)].some(e=>e.dataset.notificationId===i)||(_(a,r),o=!0)}o&&r()}let s=n.states&&typeof n.states==`object`?n.states:{};for(let t of e.querySelectorAll(`[data-notification-id]`)){let e=s[t.dataset.notificationId??``];e&&m(t,e)}return typeof n.unread==`number`&&h(e,n.unread),t(e,n.running),!0}function b(e=document,t=window,n=e=>t.fetch(`/notifications/live${e.length>0?`?ids=${e.map(encodeURIComponent).join(`,`)}`:``}`),r=()=>{}){if(!e.querySelector(`[data-notifications], [data-notifications-empty]`))return;let i,a=!1,o=()=>e.visibilityState===`visible`,s=async e=>{let t=await n(e);return t.ok?await t.json():null},c=async()=>{if(!(a||!o())){a=!0;try{let n=await s([]);if(n){if(!y(e,{...n,rows:[]},r)){t.location.reload();return}let i=n.states?v(e,n.states):[];for(let n of f(i)){let i=null;try{i=await s(n)}catch{continue}if(i&&!y(e,i,r)){t.location.reload();return}}}}catch{}finally{a=!1}t.clearTimeout(i),i=t.setTimeout(()=>void c(),d)}};e.addEventListener(`visibilitychange`,()=>{o()&&(t.clearTimeout(i),c())}),i=t.setTimeout(()=>void c(),d)}function x(e,t,n){let r=[...e.querySelectorAll(`[data-notification-id]`)];r.forEach((e,t)=>{e.hidden=t>=n}),t&&(t.hidden=r.length<=n)}function S(e){let t=e.querySelector(`[data-notifications-more]`),n=15;return x(e,t,n),t?.addEventListener(`click`,()=>{n+=15,x(e,t,n)}),{refresh:()=>x(e,e.querySelector(`[data-notifications-more]`),n)}}r(),c(`/restart`);var C=S(document),w=u({doc:document,item:`[data-notification-id]`,link:`a.prb-notification-open`,walk:()=>[...document.querySelectorAll(`[data-notification-id]:not([hidden])`)].filter(e=>e.querySelector(`a.prb-notification-open`)),background:()=>document.querySelector(`.prb-shell > main`)});a(`notifications`,{"notifications.next":{run:()=>w.move(1)},"notifications.previous":{run:()=>w.move(-1)},"notifications.open":{available:()=>w.enterOpens(),run:()=>w.open()},"notifications.openInNewTab":{available:()=>w.enterOpens(),run:()=>w.openInNewTab()}});var T=document.querySelector(`[data-notifications-read-all]`);async function E(){try{let e=await fetch(`/notifications`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({action:`read-all`})}),t=await e.json().catch(()=>null);return e.ok&&typeof t?.unread==`number`?t.unread:typeof t?.error==`string`?t.error:`Nothing was marked read. The workspace server refused it.`}catch{return`Nothing was marked read. The workspace server did not answer. It may have stopped.`}}T?.addEventListener(`click`,()=>{T.disabled=!0,E().then(t=>{if(typeof t==`string`){T.disabled=!1,e(s(),{kind:`failed`,text:t});return}document.querySelectorAll(`[data-notification-id][data-row-state="unread"]`).forEach(e=>m(e,`seen`)),h(document,t)})}),b(document,window,void 0,()=>C.refresh()),l(window,()=>window.location.reload());
1
+ import{Ct as e,a as t,c as n,f as r,l as i,m as a,mt as o,p as s,s as c,t as l}from"./chunk-C0JUspm9.js";import{t as u}from"./chunk-C8kkSv38.js";var d=5e3;function f(e){let t=[],n=[],r=0;for(let i of e){let e=encodeURIComponent(i).length+1;n.length>0&&r+e>4e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}var p=`Unread. `;function m(e,t){if(e.dataset.rowState===t||t===`unread`)return;e.dataset.rowState=t,e.dataset.read=`true`;let n=e.querySelector(`.prb-notification-open`),i=n?.getAttribute(`aria-label`)??``;if(i.startsWith(p)&&(i=i.slice(8)),t===`moved-again`||t===`caught-up`){let n=r(t);i=`${i}, ${n}`;let a=e.querySelector(`.prb-notification-meta`);if(a&&!a.querySelector(`[data-notification-replaced]`)){let t=e.ownerDocument.createElement(`span`);t.className=`prb-notification-replaced`,t.dataset.notificationReplaced=``,t.textContent=` · ${n}`,a.append(t)}}n?.setAttribute(`aria-label`,i)}function h(e,t){let n=e.querySelector(`[data-notifications-count]`);n&&(n.textContent=s(t));let r=e.querySelector(`[data-notifications-read-all]`);r&&(r.disabled=t===0),i(e,t)}function g(e,t){let n=Number(e.dataset.createdAt),r=Number(t.dataset.createdAt);return n>r||n===r&&(e.dataset.notificationId??``)<(t.dataset.notificationId??``)}function _(e,t){let n=[...e.querySelectorAll(`[data-notification-id]`)].find(e=>g(t,e));n?n.before(t):e.append(t)}function v(e,t){let n=new Set([...e.querySelectorAll(`[data-notification-id]`)].map(e=>e.dataset.notificationId));return Object.keys(t).filter(e=>!n.has(e))}function y(e,t,r=()=>{}){let i=Array.isArray(t.rows)?t.rows.filter(e=>typeof e==`string`):[],a=e.querySelector(`[data-notifications]`);if(i.length>0&&!a)return!1;let o=!1;if(a){for(let t of i){let n=e.createElement(`template`);n.innerHTML=t.trim();let r=n.content.firstElementChild,i=r?.dataset.notificationId;!r||!i||[...a.querySelectorAll(`[data-notification-id]`)].some(e=>e.dataset.notificationId===i)||(_(a,r),o=!0)}o&&r()}let s=t.states&&typeof t.states==`object`?t.states:{};for(let t of e.querySelectorAll(`[data-notification-id]`)){let e=s[t.dataset.notificationId??``];e&&m(t,e)}return typeof t.unread==`number`&&h(e,t.unread),n(e,t.running),!0}function b(e=document,t=window,n=e=>t.fetch(`/notifications/live${e.length>0?`?ids=${e.map(encodeURIComponent).join(`,`)}`:``}`),r=()=>{}){if(!e.querySelector(`[data-notifications], [data-notifications-empty]`))return;let i,a=!1,o=()=>e.visibilityState===`visible`,s=async e=>{let t=await n(e);return t.ok?await t.json():null},c=async()=>{if(!(a||!o())){a=!0;try{let n=await s([]);if(n){if(!y(e,{...n,rows:[]},r)){t.location.reload();return}let i=n.states?v(e,n.states):[];for(let n of f(i)){let i=null;try{i=await s(n)}catch{continue}if(i&&!y(e,i,r)){t.location.reload();return}}}}catch{}finally{a=!1}t.clearTimeout(i),i=t.setTimeout(()=>void c(),d)}};e.addEventListener(`visibilitychange`,()=>{o()&&(t.clearTimeout(i),c())}),i=t.setTimeout(()=>void c(),d)}function x(e,t,n){let r=[...e.querySelectorAll(`[data-notification-id]`)];r.forEach((e,t)=>{e.hidden=t>=n}),t&&(t.hidden=r.length<=n)}function S(e){let t=e.querySelector(`[data-notifications-more]`),n=15;return x(e,t,n),t?.addEventListener(`click`,()=>{n+=15,x(e,t,n)}),{refresh:()=>x(e,e.querySelector(`[data-notifications-more]`),n)}}o(),l(`/restart`);var C=S(document),w=u({doc:document,item:`[data-notification-id]`,link:`a.prb-notification-open`,walk:()=>[...document.querySelectorAll(`[data-notification-id]:not([hidden])`)].filter(e=>e.querySelector(`a.prb-notification-open`)),background:()=>document.querySelector(`.prb-shell > main`)});a(`notifications`,{"notifications.next":{run:()=>w.move(1)},"notifications.previous":{run:()=>w.move(-1)},"notifications.open":{available:()=>w.enterOpens(),run:()=>w.open()},"notifications.openInNewTab":{available:()=>w.enterOpens(),run:()=>w.openInNewTab()}});var T=document.querySelector(`[data-notifications-read-all]`);async function E(){try{let e=await fetch(`/notifications`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({action:`read-all`})}),t=await e.json().catch(()=>null);return e.ok&&typeof t?.unread==`number`?t.unread:typeof t?.error==`string`?t.error:`Nothing was marked read. The workspace server refused it.`}catch{return`Nothing was marked read. The workspace server did not answer. It may have stopped.`}}T?.addEventListener(`click`,()=>{T.disabled=!0,E().then(e=>{if(typeof e==`string`){T.disabled=!1,t(c(),{kind:`failed`,text:e});return}document.querySelectorAll(`[data-notification-id][data-row-state="unread"]`).forEach(e=>m(e,`seen`)),h(document,e)})}),b(document,window,void 0,()=>C.refresh()),e(window,()=>window.location.reload());
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 d,T as se,U as ce,V as le,W as ue,X as de,Y as fe,Z as pe,_t as me,a as he,ct as ge,ft as _e,g as ve,gt as ye,h as be,i as xe,it as Se,j as Ce,k as we,m as Te,n as Ee,nt as De,o as Oe,pt as ke,q as Ae,r as je,rt as Me,s as Ne,t as Pe,u as Fe,ut as Ie,w as Le,x as Re,xt as ze,yt as Be,z as Ve}from"./chunk-Cs33-tV3.js";import{T as He,a as Ue,c as We,f as Ge,i as Ke,l as qe,m as Je,n as Ye,r as Xe,s as Ze,t as Qe,u as $e}from"./chunk-CQIPqX7U.js";import{i as et,t as tt}from"./chunk-D1LBeOJc.js";import{t as nt}from"./chunk-C8kkSv38.js";import{n as rt,r as it}from"./chunk-Cum6sHaC.js";function at(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function ot(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;st(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return st(e,!r);n(r)}function st(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`&#9733;`:`&#9734;`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function ct(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 lt(e){return(e.dataset.collections??``).split(` `).filter(Boolean)}async function ut(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 dt=`prb-reviews-selection`;function ft(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 pt(e,t){return t===``||e.name.toLowerCase().includes(t.trim().toLowerCase())}function mt(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 ht(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=>pt(e,r)).map(e=>a(e.id,e.name));pt({id:`none`,name:`Uncollected`},r)&&o.unshift(a(Le,`Uncollected`)),e.replaceChildren(...o)}function gt(e,t,n,r){let i=e.ownerDocument,a=t.filter(e=>pt(e,r)).map(e=>{let t=ce(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 _t(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 vt(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=We(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=Ze(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 yt(e){let t=e.dataset.id??``,n=e.dataset.placement;return n===void 0||n===`home`?t:`${t}|${n}`}function bt(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function xt(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(yt),main:r?.scrollTop??0,...ke(e)}}function St(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of d){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function Ct(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 wt(e,t,n){if(!t)return;n.reveal(St(t,n.limits),Ct(t));let r=new Set(Be(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(yt(e))&&bt(t,!0)}let i=ye(t,`main`);n.pane&&i!==null&&(n.pane.scrollTop=i),me(e,t.focus,t.focusVisible)}var Tt=_e({ownsRestore:!0});Pe(`/restart`);var f=[...document.querySelectorAll(`[data-card][data-placement="home"]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),p=new Map;function Et(){p=new Map;for(let e of document.querySelectorAll(`[data-card]`)){let t=e.dataset.id??``;p.set(t,[...p.get(t)??[],e])}}Et();function Dt(e,t){for(let n of p.get(e)??[])t(n)}function m(){return[...p.values()].flat()}var h=ct(document),Ot=[...document.querySelectorAll(`[data-operation]`)],kt=document.querySelector(`[data-section="in-progress"]`),At=e=>e.dataset.inProgressOnly!==void 0,jt=Object.fromEntries(d.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),Mt=document.querySelector(`.prb-index`);function Nt(e){return{id:e.dataset.id??``,collections:lt(e),queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var g=document.querySelector(`[data-search]`),_=document.querySelector(`[data-status-filter]`),v=document.querySelector(`[data-author-filter]`),y=document.querySelector(`[data-pr-filter]`),Pt=document.querySelector(`[data-no-matches]`),b=document.querySelector(`[data-count]`),Ft=document.querySelector(`[data-clear-filters]`),x=document.querySelector(`[data-collections-filter]`),It=document.querySelector(`[data-collections-filter-search]`);function Lt(){if(!x)return;x.hidden=h.length===0;let e=x.querySelector(`[data-collections-filter-label]`);e&&(e.textContent=ie(D.collections,h)),D.collections.length===0?delete x.dataset.active:x.dataset.active=``;let t=x.querySelector(`[data-collections-filter-options]`);t&&ht(t,h,D.collections,It?.value??``)}var S=te();function Rt(e){return{stored:Ie({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:De(e.dataset)??{at:0,kind:`created`}}}function zt(e){return e.dataset.pinned===`true`}function Bt(e){let{stored:t,activity:n}=Rt(e);return l(zt(e),t,n,lt(e).length>0,D.filter)}function Vt(e){let t=Bt(e);return t===void 0?.5:d.indexOf(t)}function Ht(e){return[...e].sort((e,t)=>Vt(e)-Vt(t))}var C=new Map,w=document.querySelector(`[data-bulk]`),Ut=document.querySelector(`[data-bulk-count]`),Wt=document.querySelector(`[data-bulk-detail]`),Gt=document.querySelector(`[data-bulk-delete]`),Kt=document.querySelector(`[data-bulk-delete-label]`),qt=document.querySelector(`[data-bulk-exit]`),Jt=document.querySelector(`[data-bulk-more]`),Yt=document.querySelector(`[data-bulk-question]`),T=document.querySelector(`[data-bulk-confirm]`),Xt=document.querySelector(`[data-bulk-actions]`),E=document.querySelector(`[data-bulk-error]`),Zt=document.querySelector(`[data-bulk-select-all]`),D=s(window.location.hash),O=new Set,k=!1,A=document.querySelector(`[data-bulk-fetch]`),Qt={},j=[],$t=!1;function M(){let e=D.query.trim().toLowerCase();D.author!==``&&![...v?.options??[]].some(e=>e.value===D.author)&&(D.author=``),D.collections=D.collections.filter(e=>e===`none`||h.some(t=>t.id===e)),h.length===0&&(D.collections=[]);let t=Ht(ae(f.map(e=>({...Nt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...D,query:e}).map(e=>e.card)),n=t.filter(e=>!At(e));j=n;let r=new Set(ae(Ot.map(e=>({...Nt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,entry:e})),{...D,query:e}).map(e=>e.entry));for(let e of Ot)e.hidden=!r.has(e);if(kt){kt.hidden=r.size===0;let e=kt.querySelector(`[data-section-count]`);e&&(e.textContent=String(r.size))}let i=n.filter(e=>Bt(e)!==void 0),a=de(i,e=>Bt(e),S),o=new Set(d.flatMap(e=>a[e].shown));for(let e of d){let t=jt[e];t&&at(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 en(n))o.add(e);for(let e of m())e.hidden=!o.has(e);if(g&&g.value!==D.query&&(g.value=D.query),v&&(v.value=D.author,D.author===``?delete v.dataset.active:v.dataset.active=``),y||(D.pr=`any`),y&&(y.value=D.pr,D.pr===`any`?delete y.dataset.active:y.dataset.active=``),_&&(_.value=D.filter,D.filter===`all`?delete _.dataset.active:_.dataset.active=``),Lt(),Ft&&(Ft.hidden=!u(D)),b){let e=e=>e.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);b.textContent=Ce(e(t),t.length,u(D)?e(f):void 0)}Pt&&(Pt.hidden=t.length>0||r.size>0||f.length===0),xn(n)}function en(e){let r=document.querySelector(`[data-collections-area]`);if(!r)return[];let o=ue(D.filter),s=u(D),c=e.flatMap(e=>lt(e).map(t=>({card:e,collection:t}))),l=e=>{let{stored:t,activity:n}=Rt(e);return i(zt(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)=>(p.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=>zt(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&&at(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=se(r.total,ie));let d=e.querySelector(`[data-collection-empty]`),ce=a({active:r.total,completed:i.total,pinned:ie,members:l.length},s);d&&(d.hidden=ce===void 0,d.textContent=ce??``);let le=e.querySelector(`[data-section="collection-done:${n}"]`);le&&(le.hidden=i.total===0);let ue=e.querySelector(`[data-completed-label]`);ue&&(ue.textContent=t(i.total))}return r.hidden=o||!re,ne}var tn=300,N=null;function P(){N!==null&&window.clearTimeout(N),N=null,Tt.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,tn)}window.addEventListener(`pagehide`,()=>{N!==null&&P()}),document.addEventListener(`click`,e=>{N!==null&&e.target?.closest?.(`a[href]`)&&P()},!0),g?.addEventListener(`input`,()=>F({query:g.value},`settled`)),g?.addEventListener(`keydown`,e=>{e.key===`Escape`&&g.value!==``&&(e.preventDefault(),F({query:``},`now`))}),_?.addEventListener(`change`,()=>{F({filter:_.value},`now`)}),v?.addEventListener(`change`,()=>{F({author:v.value},`now`)}),y?.addEventListener(`change`,()=>{F({pr:y.value},`now`)}),Ft?.addEventListener(`click`,()=>{F({query:Re.query,filter:Re.filter,author:Re.author,pr:Re.pr,collections:Re.collections},`now`),g?.focus()}),it(),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||!d.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(),ln()});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;ot(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{Dt(n,n=>{n.dataset.pinned=String(e);let r=n.querySelector(`[data-pin]`);r&&r!==t&&st(r,e),Kn(n)}),M()})});async function nn(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 on(r));n=(await r.json()).queue}catch{return I(an)}sn(n),M()}var rn=`That could not be saved. The workspace server refused it.`,an=`The workspace server did not answer. It may have stopped.`;function I(e){he(Ne(),{kind:`failed`,text:e})}async function on(e){let t=await e.json().catch(()=>null);return typeof t?.error==`string`?t.error:rn}function sn(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of m()){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,Kn(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=Ae(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&&bt(t,n.hidden!==!1)});var cn=document.querySelector(`.prb-shell > main`);function ln(){wt(document,Tt.current().ui,{cards:m(),pane:cn,limits:S,reveal:(e,t)=>{S=e,C=t,M()}})}Tt.setCapturer(()=>xt(document,m(),S,cn,C)),M(),ln();var L=et(document,{onOpen:vn,onClose:e=>{vn(e),window.setTimeout($,0)}});function un(){return document.querySelector(`[data-menu-trigger][aria-expanded="true"]`)!==null}var dn=0;async function fn(e){dn+=1;try{await e()}finally{--dn,$()}}var R=new Set,pn=`A change to this review is still being saved.`,mn=`A change to one of these reviews is still being saved. Try again once it is.`;async function hn(e,t){if(e.some(e=>R.has(e)))return!1;for(let t of e)R.add(t);gn(e);try{await t()}finally{for(let t of e)R.delete(t);gn(e)}return!0}function gn(e){let t=new Set(e);for(let e of m()){let n=e.dataset.id??``;if(!t.has(n))continue;let r=R.has(n);for(let t of e.querySelectorAll(`.prb-card-controls button.prb-state-pill`))r?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);for(let t of e.querySelectorAll(`.prb-card-controls :is([data-mark-status], [data-lifecycle-set], [data-queue-action])`))t.disabled=r}}async function _n(e,t){await hn([e],()=>fn(t))||I(pn)}function vn(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,X(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 ur(e,t,n);if(n.matches(`[data-lifecycle-control]`))return Wn(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 /,``);dr([r.dataset.collectionsFor],{card:t??`this review`});return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),He(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&&xr([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=o.dataset.markId;_n(t,()=>Rn(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;_n(t,Un(t,s.dataset.lifecycleSet));return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),L.closeAll();let t=c.dataset.queueId;_n(t,()=>nn(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(),vn(n),e.detail===0&&n.querySelector(`[data-delete]`)?.focus();return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),yn(n);return}e.preventDefault(),e.stopPropagation()});async function yn(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();bn(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{bn(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 bn(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 z(e){k=e,e||O.clear(),Mt&&(e?Mt.dataset.selecting=``:delete Mt.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e)),!e&&Jt&&L.close(Jt);for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);B(),M()}function B(){T&&(T.hidden=!0),Xt&&(Xt.hidden=!1),E&&(E.hidden=!0,E.textContent=``)}function xn(t){for(let e of m()){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(m().filter(Sn).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,Ut&&(Ut.textContent=e(O.size)),Wt&&(Wt.textContent=oe(O.size,a,r)),Zt&&(Zt.textContent=pe(t.length,O.size>0&&a!==null),Zt.disabled=t.every(e=>O.has(e.dataset.id??``))),Kt&&(Kt.textContent=ne(Fn()));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=!Ye(Qt,_r(U())))}function Sn(e){return!e.hidden&&e.closest(`details:not([open]), [hidden]`)===null}function Cn(e){let t=[...e.querySelectorAll(`details[data-section]`)];for(let e of t)e.addEventListener(`toggle`,()=>xn(j));rt(t,(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})}))}Cn(document),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{z(!k)}),Zt?.addEventListener(`click`,()=>{for(let e of j)e.dataset.id&&O.add(e.dataset.id);B(),M()});function wn(e){O.has(e)?O.delete(e):O.add(e),B(),M()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&wn(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], .prb-card-controls, [data-menu], [data-history-toggle]`)||(e.preventDefault(),wn(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(),wn(t.dataset.id))});var V=nt({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>[...document.querySelectorAll(`[data-card]`)].filter(Sn),enterAllowed:()=>!k,background:()=>cn,leadIn:e=>[...e.closest(`[data-cards]`)?.querySelectorAll(`[data-card]:not([hidden])`)??[]][0]===e?e.closest(`details[data-section]`)?.querySelector(`summary`)??null:null});function Tn(){return V.holdsKeys()?V.current()?.querySelector(zn)??null:null}var En=8;function Dn(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),N!==null&&P(),Tt.leaving(),On=!0,window.location.assign(t.href))}var On=!1,kn={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=g?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=g?.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,En);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 ${b?.textContent??j.length}`:b?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=f.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),Dn(n))};n.addEventListener(`input`,()=>{g&&(g.value=n.value,g.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()}},An={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=b?.textContent??``},r=[_,v,y].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 jn(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 Mn=Object.fromEntries(r.map(e=>[`reviews.section.${e}`,jn(e)]));function Nn(){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 H=document.querySelector(`[data-collection-new]`),Pn=Te(`reviews`,{...Mn,"reviews.search":{available:()=>g!==null,panel:kn},"reviews.filters":{available:()=>_!==null,panel:An},"reviews.collection.new":{available:()=>H!==null&&!H.disabled,run:()=>H?.click()},"reviews.collection.fold":{available:()=>Nn().length>0,panel:vt({collections:Nn,toggle:e=>{let t=document.querySelector(`[data-collection="${CSS.escape(e)}"] > details[data-section]`);t&&(t.open=!t.open)}})},"reviews.next":{run:()=>V.move(1)},"reviews.previous":{run:()=>V.move(-1)},"reviews.open":{available:()=>V.enterOpens(),run:()=>V.open()},"reviews.openInNewTab":{available:()=>V.enterOpens(),run:()=>V.openInNewTab()},"reviews.selection.exit":{available:Qn,run:()=>T&&!T.hidden?Xn(w?.contains(document.activeElement)??!1):Zn()},"reviews.menu":{available:()=>Tn()!==null,run:()=>{let e=Tn();e&&L.open(e,{focusFirst:!0,returnFocus:()=>V.refocus()})}}},{onOpen:()=>L.closeAll(),onSettle:()=>$()});function U(){return Ht(f.filter(e=>O.has(e.dataset.id??``)))}function Fn(){return U().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function W(e){E&&(E.textContent=e,E.hidden=!1)}function G(e){for(let t of w?.querySelectorAll(`button`)??[])t.disabled=e}async function In(e){let t=[...O];if(t.length===0)return;G(!0);let n=null,r=await hn(t,async()=>{try{(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok||(n=`That could not be saved. The workspace server refused it.`)}catch{n=`The workspace server did not answer. It may have stopped.`}});if(!r||n!==null)return G(!1),W(r?n??``:mn);Ln(U(),e),G(!1),z(!1)}function Ln(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e.flatMap(e=>p.get(e.dataset.id??``)??[e])){t.dataset.status=n;for(let e of t.querySelectorAll(`.prb-card-status`))$e(e,n);let e=t.querySelector(`[data-mark-status]`);e&&(e.dataset.markStatus=r,e.textContent=le(r))}}async function Rn(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 on(n))}catch{return I(an)}Ln(f.filter(t=>t.dataset.id===e),t),M()}var zn=`:scope > .prb-card-controls > [data-menu]:not([data-lifecycle-control])`;async function Bn(e,t){let n=e.closest(`[data-card]`),r=n?.dataset.id;if(!n||!r||R.has(r))return;let i=document.activeElement===e,a=Vn(n);Ge(e,!0);try{await _n(r,t)}finally{Ge(e,!1)}i&&Hn(e,a)}function Vn(e){let t=e=>e instanceof HTMLElement&&e.matches(`[data-card]`)&&e.checkVisibility();for(let n=e.nextElementSibling;n;n=n.nextElementSibling)if(t(n))return n;for(let n=e.previousElementSibling;n;n=n.previousElementSibling)if(t(n))return n;return null}function Hn(e,t){if(document.activeElement===null||document.activeElement===document.body){if(e.isConnected&&e.checkVisibility())return e.focus({preventScroll:!0});t?.querySelector(`.prb-card-link`)?.focus({preventScroll:!0})}}function Un(e,t){return async()=>{await Gn([e],t)||I(`That could not be saved. The workspace server refused it or did not answer.`)}}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-card] button.prb-card-status`),n=t?.closest(`[data-card]`)?.dataset.id;!t||!n||(e.preventDefault(),Bn(t,()=>Rn(n,t.dataset.status!==`complete`)))});function Wn(e,t,n){let r=n.querySelector(`[data-lifecycle-pill]`),i=n.closest(`[data-card]`)?.dataset.id;if(!r||!i)return;let a=t.closest(`[data-lifecycle-set]`);if(a){e.preventDefault(),e.stopPropagation(),L.close(n,{returnFocus:!0}),Bn(r,Un(i,a.dataset.lifecycleSet));return}let o=r.dataset.lifecyclePress;!t.closest(`[data-lifecycle-pill]`)||!o||o===`menu`||(e.preventDefault(),Bn(r,Un(i,o)))}async function Gn(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 m())r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),Kn(e));return sn(n.queue),M(),!0}function Kn(e){let{stored:t,activity:n}=Rt(e),r=e.querySelector(`[data-lifecycle-pill]`);r&&qe(r,t,n);let i=e.querySelector(`[data-lifecycle-chip]`);if(i){let e=Me(t,n);i.textContent=e??``,i.hidden=e===void 0}for(let r of e.querySelectorAll(`[data-menu-items] [data-lifecycle-set]`)){let e=r.dataset.lifecycleSet;r.hidden=!ge(e,t,n),r.textContent=Se(e,t,n)}}async function qn(e){let t=[...O];if(t.length===0)return;G(!0);let n=!1,r=await hn(t,async()=>{n=await Gn(t,e)});if(G(!1),!r)return W(mn);if(!n)return W(`That could not be saved. The workspace server refused it or did not answer.`);z(!1)}async function Jn(){let e=[...O];if(e.length===0)return;G(!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 G(!1),B(),W(`Nothing was deleted. The workspace server refused it.`)}catch{return G(!1),B(),W(`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 U()){let t=e.dataset.id??``;r.has(t)||Dt(t,e=>e.remove())}f=f.filter(e=>e.isConnected),Et(),O.clear();for(let e of r)O.add(e);if(G(!1),B(),n.length===0)return z(!1);M(),W([...new Set(n.map(e=>e.error))].join(` `))}async function Yn(){let e=U().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;G(!0);let t=null,n=!1,r=await hn(e,async()=>{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{n=!0}});if(!r||n)return G(!1),B(),W(r?`The workspace server did not answer. It may have stopped.`:mn);if(!t?.queue)return G(!1),B(),W(`Nothing was added. The workspace server refused it.`);sn(t.queue);let i=t.refused??[];O.clear();for(let e of i)O.add(e.id);if(G(!1),B(),i.length===0)return z(!1);M(),W([...new Set(i.map(e=>e.error))].join(` `))}w?.addEventListener(`click`,e=>{let t=e.target;if(Jt&&t.closest(`[data-bulk-more] [data-menu-panel] button`)&&L.close(Jt),t.closest(`[data-bulk-queue]`))return void Yn();if(t.closest(`[data-bulk-collections]`))return dr(U().map(e=>e.dataset.id??``).filter(Boolean),{selection:!0});let n=t.closest(`[data-bulk-mark]`);if(n)return void In(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void qn(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){Yt&&(Yt.textContent=re(Fn())),Xt&&(Xt.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 Jn();if(t.closest(`[data-bulk-cancel-delete]`))return Xn(e.detail===0);if(t.closest(`[data-bulk-exit]`))return Zn()});function Xn(e){B(),e&&Gt?.focus()}function Zn(){let e=w?.contains(document.activeElement)??!1;z(!1),e&&document.querySelector(`[data-select-mode]`)?.focus()}function Qn(e){return!k||qt?.disabled?!1:e===void 0||Je(e,document,!0)}var K=document.querySelector(`[data-collections-dialog]`),$n=document.querySelector(`[data-collections-dialog-list]`),q=document.querySelector(`[data-collections-dialog-search]`),J=document.querySelector(`[data-collections-dialog-create]`),er=document.querySelector(`[data-collections-dialog-error]`),tr=document.querySelector(`[data-collections-dialog-for]`),Y=[],nr=!1,rr=!1,ir=document.body.dataset.cardsSnapshot??``;function ar(e,t){return ut(e,t,ir)}function or(e){if(e.stale||e.area===void 0){try{let e={ids:[...O],selecting:k};window.sessionStorage.setItem(dt,JSON.stringify(e))}catch{}K?.close(),window.location.reload();return}let t=e.area,n=document.querySelector(`[data-collections-area]`);if(n){let e=n.contains(document.activeElement)?ke(document):null,r=document.createElement(`template`);r.innerHTML=t.trim();let i=r.content.firstElementChild;if(i){if(n.replaceWith(i),Cn(i),k)for(let e of i.querySelectorAll(`.prb-card-link`))e.setAttribute(`aria-disabled`,`true`);e&&me(document,e.focus,e.focusVisible)}}h=e.collections;for(let t of f){let n=e.memberOf[t.dataset.id??``]??[];t.dataset.collections=n.join(` `);let r=t.querySelector(`[data-collections-line]`),i=we(n,h);r&&(r.textContent=i??``,r.hidden=i===void 0)}for(let t of Ot){let n=e.operations?.[t.dataset.key??``];n&&(t.dataset.collections=n.join(` `))}Et(),yr(),M()}function X(e,t){let n=e.querySelector(`[data-collection-error]`);n&&(n.textContent=t??``,n.hidden=t===void 0)}It?.addEventListener(`input`,()=>Lt()),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 Z=document.querySelector(`[data-collection-new-dialog]`),Q=Z?.querySelector(`[data-collection-name-input]`)??null,sr=Z?.querySelector(`[data-collection-create]`)??null,cr=!1;function lr(){H&&(H.disabled=cr),Q&&(Q.readOnly=cr),sr&&(sr.disabled=cr||(Q?.value.trim()??``)===``)}H?.addEventListener(`click`,()=>{Z&&(L.closeAll(),Q&&(Q.value=``),lr(),X(Z,void 0),Z.showModal(),Q?.focus())}),Q?.addEventListener(`input`,()=>{lr(),Z&&X(Z,void 0)}),Z?.querySelector(`[data-collection-cancel]`)?.addEventListener(`click`,()=>Z.close()),Z?.addEventListener(`close`,()=>$()),document.addEventListener(`submit`,e=>{let t=e.target;if(t.matches(`[data-collection-new-form]`)){e.preventDefault();let n=Q?.value??``;if(n.trim()===``)return;cr=!0,lr(),ar(`/collections`,{action:`create`,name:n}).then(e=>{cr=!1,lr();let n=Z?.open===!0;if(!e.ok)return X(t,e.error);Z?.close(),or(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??``;ar(`/collections`,{action:`rename`,id:r,name:t}).then(e=>{if(!e.ok)return X(n,e.error);L.closeAll(),or(e.answer),document.querySelector(`[data-collection="${CSS.escape(r)}"] summary`)?.focus({focusVisible:!1})})}});function ur(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(),vn(n);return}let o=t.closest(`[data-collection-confirm-delete]`);if(o?.dataset.collectionConfirmDelete){e.preventDefault(),o.disabled=!0;let t=o.dataset.collectionConfirmDelete;ar(`/collections`,{action:`delete`,id:t}).then(e=>{if(o.disabled=!1,!e.ok)return bn(n,e.error);L.closeAll(),or(e.answer),D.collections.includes(t)&&P(),document.querySelector(`[data-collection-new]`)?.focus()})}}function dr(e,t){!K||e.length===0||(L.closeAll(),Y=[...e],nr=!1,rr=`selection`in t,tr&&(tr.textContent=_t(e.length,`card`in t?t.card:void 0)),q&&(q.value=``),mr(void 0),pr(),K.showModal(),q?.focus())}function fr(){return Y.map(e=>lt(f.find(t=>t.dataset.id===e)??document.createElement(`div`)))}function pr(){let e=q?.value??``;$n&&gt($n,h,fr(),e);let t=mt(e,h);J&&(J.hidden=t===void 0,J.textContent=t===void 0?``:`Create “${t}” and add ${Y.length===1?`this review`:`these ${Y.length}`}`)}function mr(e){er&&(er.textContent=e??``,er.hidden=e===void 0)}async function hr(e){mr(void 0);let t=await ar(`/collections/members`,{ids:Y,...e});if(!t.ok)return mr(t.error),pr();nr=!0,or(t.answer);let n=t.answer.refused??[];n.length>0&&(Y=Y.filter(e=>!n.some(t=>t.id===e)),mr([...new Set(n.map(e=>e.error))].join(` `))),pr()}q?.addEventListener(`input`,()=>pr()),q?.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),J&&!J.hidden&&J.click())}),J?.addEventListener(`click`,()=>{let e=mt(q?.value??``,h);e!==void 0&&hr({action:`add`,create:e}).then(()=>{q&&(q.value=``),pr(),q?.focus()})}),$n?.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;hr({action:n,collection:r}).then(()=>{$n.querySelector(`[data-collections-dialog-option][value="${CSS.escape(r)}"]`)?.focus()})}),document.querySelector(`[data-collections-dialog-close]`)?.addEventListener(`click`,()=>K?.close());try{let e=window.sessionStorage.getItem(dt);if(e){window.sessionStorage.removeItem(dt);let t=JSON.parse(e),n=Array.isArray(t.ids)?t.ids.filter(e=>typeof e==`string`):[];if(t.selecting===!0||n.length>0){z(!0);for(let e of ft(n,f))O.add(e);M()}}}catch{}K?.addEventListener(`close`,()=>{nr&&k&&rr&&z(!1),Y=[],$()}),ze(window,()=>window.location.reload());var gr=`prb-fetch-summary`;function _r(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function vr(e){return Xe(_r(e),Qt)}function yr(){for(let e of m()){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!Ye(Qt,_r([e])))}}async function br(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;Qt=(await e.json()).targets??{}}catch{return}yr(),M()}async function xr(e,t){let n=vr(e);if($t||n.repositories===0)return;$t=!0;let r=[A,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=Ue(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{}$t=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Qe),M();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||wr){try{window.sessionStorage.setItem(gr,JSON.stringify(o))}catch{}if(!Tr())return void window.location.reload();wr=!0}he(Ne(),o)}try{let e=window.sessionStorage.getItem(gr);if(e){window.sessionStorage.removeItem(gr);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&he(Ne(),{kind:t.kind,text:t.text})}}catch{}A?.addEventListener(`click`,()=>void xr(U(),A)),xe(),br();var Sr=document.body.dataset.indexRevision??``,Cr=document.body.dataset.live===`true`?Date.now():0,wr=!1;function Tr(){let e=K?.open===!0||Z?.open===!0||document.activeElement?.closest(`[data-collections-area], [data-collections-filter]`)!=null;return O.size>0||document.activeElement===g||$t||Pn.isOpen()||On||e||un()||dn>0}function $(){wr&&!Tr()&&je()}async function Er(){try{let e=await fetch(`/revision`);if(e.ok){Fe(document,!0);let t=await e.json();Ee(document,t),t.live&&Cr===0&&(Cr=Date.now()),t.live||(Cr=0);let n=fe(Sr,t.revision??``,Tr());if(n===`reload`)return je(),null;n===`hold`&&(wr=!0)}}catch{Fe(document,!1)}return tt(Cr===0?2**53-1:Date.now()-Cr)}var Dr=ve(window,Er);be(document,()=>Dr.now()),g?.addEventListener(`blur`,$),document.addEventListener(`click`,()=>window.setTimeout($,0)),Oe();
1
+ import{$ as e,A as t,B as n,C as r,Ct as i,D as a,E as o,F as s,G as c,H as l,I as u,K as d,L as f,M as p,N as m,O as ee,P as h,Q as te,R as g,T as ne,U as _,V as re,W as ie,X as ae,Y as oe,Z as se,a as ce,at as v,et as le,ft as y,g as b,gt as ue,h as de,ht as fe,i as pe,it as me,j as x,k as S,m as he,mt as C,n as w,o as ge,ot as _e,q as ve,r as T,s as ye,t as be,tt as E,u as xe,ut as Se,v as Ce,vt as we,w as D,xt as Te,y as O,yt as Ee,z as De}from"./chunk-C0JUspm9.js";import{E as Oe,L as ke,S as Ae,_ as je,b as Me,g as Ne,h as Pe,l as Fe,m as Ie,p as Le,w as Re,x as ze,y as Be}from"./chunk-SPHga_7I.js";import{i as Ve,t as He}from"./chunk-DLCpB0qV.js";import{t as Ue}from"./chunk-C8kkSv38.js";import{n as We,r as Ge}from"./chunk-CZ1YsjDz.js";function Ke(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function qe(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;Je(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return Je(e,!r);n(r)}function Je(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`&#9733;`:`&#9734;`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function Ye(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 Xe(e){return(e.dataset.collections??``).split(` `).filter(Boolean)}async function Ze(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 Qe=`prb-reviews-selection`;function $e(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 et(e,t){return t===``||e.name.toLowerCase().includes(t.trim().toLowerCase())}function tt(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 nt(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},s=t.filter(e=>et(e,r)).map(e=>a(e.id,e.name));et({id:`none`,name:`Uncollected`},r)&&s.unshift(a(o,`Uncollected`)),e.replaceChildren(...s)}function rt(e,t,n,r){let i=e.ownerDocument,a=t.filter(e=>et(e,r)).map(e=>{let t=c(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 it(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 at(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=Me(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=Be(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 ot(e){let t=e.dataset.id??``,n=e.dataset.placement;return n===void 0||n===`home`?t:`${t}|${n}`}function st(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function ct(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(ot),main:r?.scrollTop??0,...fe(e)}}function lt(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of D){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function ut(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`)&&re(e)&&typeof r==`number`&&Number.isInteger(r)&&r>15&&n.set(e,r);return n}function dt(e,t,n){if(!t)return;n.reveal(lt(t,n.limits),ut(t));let r=new Set(Te(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(ot(e))&&st(t,!0)}let i=we(t,`main`);n.pane&&i!==null&&(n.pane.scrollTop=i),Ee(e,t.focus,t.focusVisible)}var ft=[{id:`no-concerns`,name:`Reviewed: no concerns`,baseline:!0},{id:`needs-changes`,name:`Needs changes`,baseline:!0},{id:`needs-decision`,name:`Needs a decision / answer`,baseline:!0},{id:`deeper-review`,name:`Needs deeper review`,baseline:!1},{id:`later`,name:`Later`,baseline:!1}],pt=`[data-qr-link-input]`;function mt(e){let t=e.closest(`.prb-qr-picker`),n=t?.querySelector(`[data-qr-link-target]`),r=t?.querySelector(`[data-qr-link-list]`);return!t||!n||!r?null:{input:e,target:n,list:r,empty:r.querySelector(`[data-qr-link-empty]`),submit:t.querySelector(`[data-qr-link]`)}}function ht(e,t){let n=e.toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(e=>n.includes(e))}function gt(e){return[...e.list.querySelectorAll(`[data-qr-option]`)]}function _t(e){return gt(e).filter(e=>!e.hidden)}function vt(e,t){for(let n of gt(e))n.toggleAttribute(`data-active`,n===t);t?(e.input.setAttribute(`aria-activedescendant`,t.id),t.scrollIntoView({block:`nearest`})):e.input.removeAttribute(`aria-activedescendant`)}function yt(e){let t=e.input.value,n=0;for(let r of gt(e))r.hidden=!ht(r.textContent??``,t),r.hidden||n++;e.empty&&(e.empty.hidden=n>0)}function bt(e){yt(e),e.list.hidden=!1,e.input.setAttribute(`aria-expanded`,`true`),vt(e,_t(e).find(t=>t.dataset.qrOption===e.target.value)??_t(e)[0]??null)}function xt(e){e.list.hidden=!0,e.input.setAttribute(`aria-expanded`,`false`),vt(e,null)}function St(e){return!e.list.hidden}function Ct(e,t){e.input.value=t.textContent??``,e.target.value=t.dataset.qrOption??``;for(let n of gt(e))n.setAttribute(`aria-selected`,String(n===t));e.submit&&(e.submit.disabled=!e.target.value),xt(e)}function wt(e){e.target.value=``;for(let t of gt(e))t.setAttribute(`aria-selected`,`false`);e.submit&&(e.submit.disabled=!0)}function Tt(e,t){if(!St(e))return bt(e);let n=_t(e);if(!n.length)return;let r=n.findIndex(e=>e.hasAttribute(`data-active`));vt(e,n[r<0?t>0?0:n.length-1:Math.min(n.length-1,Math.max(0,r+t))])}function Et(e){let t=e=>e instanceof HTMLInputElement&&e.matches(pt)?mt(e):null;e.addEventListener(`focusin`,e=>{let n=t(e.target);n&&bt(n)}),e.addEventListener(`focusout`,e=>{let n=t(e.target);n&&xt(n)}),e.addEventListener(`input`,e=>{let n=t(e.target);n&&(wt(n),bt(n))}),e.addEventListener(`keydown`,e=>{let n=t(e.target);if(!n)return;let r=()=>{e.preventDefault(),e.stopPropagation()};if(e.key===`ArrowDown`)return void(r(),Tt(n,1));if(e.key===`ArrowUp`)return void(r(),Tt(n,-1));if(e.key===`Enter`){r();let e=n.list.querySelector(`[data-qr-option][data-active]:not([hidden])`);if(St(n)&&e)return Ct(n,e);n.target.value&&n.submit?.click();return}if(e.key===`Escape`&&St(n))return void(r(),xt(n))}),e.addEventListener(`mousedown`,e=>{e.target.closest?.(`[data-qr-option]`)&&e.preventDefault()}),e.addEventListener(`click`,e=>{let t=e.target.closest?.(`[data-qr-option]`),n=t?.closest(`.prb-qr-picker`)?.querySelector(pt),r=n?mt(n):null;t&&r&&Ct(r,t)})}var Dt=`quick-review:space-moved`;function Ot(e,t){for(let n of e.querySelectorAll(`[data-shortcut-for]`)){let e=Ce(n.dataset.shortcutFor??``);n.textContent=e?O(e.binding,t):``}}var kt=`Checking for changes…`,At=`Not recorded: this review changed since you read it. The brief is refreshed, so choose again if your outcome still stands.`,jt=`The workspace server did not answer. It may have stopped.`;function Mt(e){let t=Math.floor(Math.min(16,e.width*.025)),n=Math.floor(Math.min(16,e.height*.025));return{left:e.left+t,top:e.top+n,width:e.width-2*t,height:e.height-2*n}}function Nt(e){let t=new Set,n=[];for(let r of e){let e=r.dataset.id;!e||t.has(e)||(t.add(e),n.push({id:e,lineage:r.dataset.lineage??``,card:r}))}return n}function Pt(e,t){return!!e&&!!t&&e.sessionId===t.sessionId&&e.commitSha===t.commitSha&&e.analysisRevision===t.analysisRevision}function k(e,t,n,r){let i=e.createElement(t);return n&&(i.className=n),r!==void 0&&(i.textContent=r),i}function Ft(e){let{doc:t,win:n}=e,r=e.fetch??((e,t)=>n.fetch(e,t)),i=k(t,`dialog`,`prb-quick-review`);i.setAttribute(`data-quick-review`,``),i.setAttribute(`aria-labelledby`,`prb-qr-title`),i.setAttribute(`aria-describedby`,`prb-qr-position`);let a=k(t,`header`,`prb-qr-head`),o=k(t,`div`,`prb-qr-identity`),s=k(t,`h2`,`prb-qr-title`);s.id=`prb-qr-title`;let c=k(t,`p`,`prb-qr-sub`);o.append(s,c);let l=k(t,`div`,`prb-qr-controls`),u=k(t,`p`,`prb-qr-position`);u.id=`prb-qr-position`;let d=k(t,`button`,`prb-qr-button prb-qr-nav`,`Previous`);d.type=`button`,d.setAttribute(`data-qr-prev`,``);let f=k(t,`button`,`prb-qr-button prb-qr-nav`,`Next`);f.type=`button`,f.setAttribute(`data-qr-next`,``);let p=k(t,`div`,`prb-qr-menu-host`);p.setAttribute(`data-qr-menu`,``);let m=k(t,`button`,`prb-qr-button prb-qr-close`,`Close`),ee=(e,n,r,i)=>{let a=k(t,`kbd`,`prb-qr-key`);a.setAttribute(`aria-hidden`,`true`),n?a.dataset.shortcutFor=n:a.textContent=i??``,e.append(` `,a),e.setAttribute(`aria-keyshortcuts`,r)};ee(d,`quick.previous`,`h ArrowLeft`),ee(f,`quick.next`,`l ArrowRight`),ee(m,null,`Escape`,`Esc`),m.type=`button`,m.setAttribute(`data-qr-close`,``),l.append(u,d,f,p,m),a.append(o,l);let h=k(t,`div`,`prb-qr-outcomes`);h.setAttribute(`role`,`group`),h.setAttribute(`aria-label`,`Your outcome`),h.setAttribute(`data-qr-outcomes`,``);let te=k(t,`p`,`prb-qr-standing`);te.setAttribute(`data-qr-standing`,``);let g=k(t,`span`,`prb-qr-deferral`);g.setAttribute(`data-qr-deferral`,``),g.hidden=!0;let ne=ft.map(e=>{let n=k(t,`button`,`prb-qr-button prb-qr-outcome`,e.name);return n.type=`button`,n.dataset.outcome=e.id,n}),_=k(t,`p`,`prb-qr-outcome-note`);_.setAttribute(`role`,`status`),_.setAttribute(`data-qr-outcome-note`,``);let re=k(t,`div`,`prb-qr-outcome-buttons`);re.append(...ne);let ie=k(t,`p`,`prb-qr-scope`,`Recorded here only. Nothing is posted, approved or merged.`);h.append(te,g,re,_,ie);let ae=k(t,`p`,`prb-qr-notice`);ae.setAttribute(`role`,`status`),ae.setAttribute(`data-qr-notice`,``),ae.hidden=!0;let oe=k(t,`div`,`prb-qr-hint`);oe.setAttribute(`role`,`note`),oe.setAttribute(`data-qr-hint`,``),oe.hidden=!0;let se=k(t,`p`,`prb-qr-hint-text`,`Space now opens Quick Review. Press M for the actions menu.`),ce=k(t,`button`,`prb-qr-button`,`Dismiss`);ce.type=`button`,ce.setAttribute(`data-qr-hint-dismiss`,``),oe.append(se,ce);let v=k(t,`div`,`prb-qr-body`);v.setAttribute(`data-qr-body`,``),v.setAttribute(`role`,`document`),v.tabIndex=-1,i.append(a,oe,h,ae,v);let le=ue(n.navigator);Ot(i,le),t.body.append(i);let y=[],b=0,de=null,fe=0,pe=0,me=null,x=null,S=!1,he=!1,C=new Map,w=()=>y[b];function ge(){let e=t.querySelector(`[data-quick-review-hint]`);e&&(e.removeAttribute(`data-quick-review-hint`),oe.hidden=!1,r(`/notice`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify({dismissNotice:Dt})}).catch(()=>{}))}function _e(){let t=e.area();if(!t)return{left:0,top:0,width:n.innerWidth,height:n.innerHeight};let r=[t,...[...t.parentElement?.children??[]].filter(e=>e.classList.contains(`prb-context`))].map(e=>e.getBoundingClientRect()).filter(e=>e.width>0&&e.height>0),i=Math.min(...r.map(e=>e.left)),a=Math.min(...r.map(e=>e.top)),o=Math.max(...r.map(e=>e.right)),s=Math.max(...r.map(e=>e.bottom));return{left:i,top:a,width:o-i,height:s-a}}function ve(){let e=Mt(_e());i.style.setProperty(`--qr-left`,`${e.left}px`),i.style.setProperty(`--qr-top`,`${e.top}px`),i.style.setProperty(`--qr-width`,`${e.width}px`),i.style.setProperty(`--qr-height`,`${e.height}px`)}function T(){let e=x?.state===`ready`&&x.snapshot!==null,t=!e||S||he;for(let e of ne)e.disabled=t;h.toggleAttribute(`data-disabled`,t),x?e?S?_.textContent=kt:he?_.textContent=`Recording…`:(_.textContent===kt||_.textContent===`Loading the brief…`||_.textContent===`Recording…`)&&(_.textContent=``):_.textContent=`An outcome needs a finished standard analysis.`:_.textContent=`Loading the brief…`;let n=x?.outcome;te.textContent=n?.current?`Your outcome: ${n.current}`:n?.previous?n.previous:n?.deferral?`No verdict on this analysis yet.`:`No outcome recorded on this analysis.`,g.textContent=n?.deferral?`Next: ${n.deferral}`:``,g.hidden=!n?.deferral,te.toggleAttribute(`data-current`,!!n?.current)}function ye(e,t){let n=e.card.querySelector(`.prb-card-title`)?.textContent?.trim()??`Review`;s.textContent=t?.header.title??n;let r=t?[t.header.repo,t.header.pr?`#${t.header.pr.number}`:``,t.header.branch].filter(Boolean):[];c.textContent=r.join(` · `),u.textContent=`${b+1} of ${y.length}`,d.disabled=b===0,f.disabled=b>=y.length-1}function be(n){p.replaceChildren();let r=e.cardMenu(n.card);if(!r)return null;let i=r.cloneNode(!0),a=new Map;for(let e of i.querySelectorAll(`[id]`)){let t=`qr-${e.id}`;a.set(e.id,t),e.id=t}for(let e of i.querySelectorAll(`[aria-controls], [aria-labelledby]`))for(let t of[`aria-controls`,`aria-labelledby`]){let n=e.getAttribute(t);n&&a.has(n)&&e.setAttribute(t,a.get(n))}i.querySelector(`[data-quick-review-open]`)?.remove(),i.dataset.cardRef=n.id;let o=k(t,`kbd`,`prb-qr-key`);return o.setAttribute(`aria-hidden`,`true`),o.dataset.shortcutFor=`quick.menu`,i.querySelector(`[data-menu-trigger]`)?.setAttribute(`aria-keyshortcuts`,`m`),p.append(i,o),Ot(p,le),i}function E(e){ae.textContent=e,ae.hidden=!e}function xe(){return[...v.querySelectorAll(`details[data-qr-detail][open]`)].map(e=>e.dataset.qrDetail??``)}function Se(e,t){x=e,v.innerHTML=e.html;for(let e of t?.open??[]){let t=v.querySelector(`details[data-qr-detail="${CSS.escape(e)}"]`);t&&(t.open=!0)}v.scrollTop=t?.scrollTop??0;let n=w();n&&(ye(n,e),be(n)),T()}function Ce(e){x=null,v.replaceChildren(Object.assign(k(t,`div`,`prb-qr-state`),{role:`status`})),v.firstElementChild.append(k(t,`p`,void 0,e)),T()}function we(){let e=w();e&&x&&x.id===e.id&&C.set(e.id,{brief:x,scrollTop:v.scrollTop,open:xe()})}let D=0,Te=!1;async function O(e=!0){D++;try{await Ee(e)}finally{D--,D===0&&Te&&(Te=!1,i.open&&w()&&O())}}async function Ee(e){let n=w();if(!n)return;let i=++pe;me?.abort();let a=new AbortController;me=a;let o=C.get(n.id);ye(n,o?.brief??(x?.id===n.id?x:null)),o&&x?.id!==n.id&&Se(o.brief,o),!o&&x?.id!==n.id&&(p.replaceChildren(),x=null,v.replaceChildren(Object.assign(k(t,`p`,`prb-qr-loading`,`Loading the brief…`),{role:`status`}))),S=!!(o||x?.id===n.id),T();let s=x?.id===n.id?x:o?.brief,c=new URLSearchParams({id:n.id,...n.lineage?{lineage:n.lineage}:{},...s?{since:s.stamp}:{}}),l;try{l=await r(`/quick-review?${c}`,{signal:a.signal,credentials:`same-origin`})}catch{if(i!==pe)return;if(S=!1,s){E(jt),x=s;for(let e of ne)e.disabled=!0;_.textContent=jt}else Ce(jt);return}if(i!==pe||w()?.id!==n.id)return;if(l.status===304&&s){S=!1,T();return}if(l.status===404)return C.delete(n.id),S=!1,Ce(`This review no longer exists. Previous and Next still work.`);if(!l.ok){S=!1;let e=await l.json().catch(()=>null);return i===pe?Ce(e?.error??`The brief could not be loaded.`):void 0}let u=await l.json();if(i!==pe||u.id!==w()?.id)return;S=!1;let d=!!s&&!Pt(s.snapshot,u.snapshot);if(s&&x===s&&s.html===u.html){x=u,T(),C.set(n.id,{brief:u,scrollTop:v.scrollTop,open:xe()});return}Se(u,s?{scrollTop:v.scrollTop,open:xe()}:void 0),C.set(n.id,{brief:u,scrollTop:v.scrollTop,open:xe()}),d&&e&&E(`This review changed while you were reading: refreshed.`)}function De(t){t<0||t>=y.length||t===b||(we(),E(``),_.textContent=``,e.menus.closeAll(),b=t,Te=!1,O(),v.focus({preventScroll:!0}))}async function Oe(t){let n=x,i=w();if(!n?.snapshot||!i||n.id!==i.id||S||he)return;he=!0,T();let a=null;try{a=await r(`/outcome`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify({id:n.id,kind:t,expect:n.snapshot,lineage:i.lineage.split(` `).filter(Boolean)})})}catch{a=null}if(he=!1,!a){T(),_.textContent=jt;return}if(a.status===409){C.delete(n.id),w()?.id===n.id&&(await O(!1),_.textContent=At);return}if(!a.ok){let e=await a.json().catch(()=>null);T(),_.textContent=e?.error??`The outcome could not be recorded.`;return}let o=await a.json();e.onOutcome(n.id,o),C.delete(n.id),w()?.id===n.id&&(await O(!1),_.textContent=`Recorded: ${o.card?.label??`outcome`}.`)}async function ke(e){let t=w();if(t){try{let n=await r(`/dependencies`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify({fromId:t.id,...e})});if(!n.ok)return E((await n.json().catch(()=>null))?.error??`The link could not be changed.`)}catch{return E(jt)}C.clear(),w()?.id===t.id&&O(!1)}}async function Ae(e){let i=e.nextElementSibling;if(!i?.matches(`[data-qr-code]`)||!x)return;if(!i.hidden){i.hidden=!0,e.textContent=`Show code`;return}let a=new URL(x.header.href,n.location.href),o=Number(e.dataset.line??0),s=new URLSearchParams({t:a.searchParams.get(`t`)??``,path:e.dataset.path??``,...o?{line:String(o)}:{}});i.hidden=!1,i.innerHTML=`<p class="prb-code-status">Loading…</p>`,e.textContent=`Hide code`;try{let e=await r(`${a.pathname}/file?${s}`,{credentials:`same-origin`}),n=await e.json();if(!e.ok){i.innerHTML=``,i.append(k(t,`p`,`prb-code-status`,n.error??`The file could not be read.`));return}i.innerHTML=`<div class="prb-code-scroll"><table class="prb-code-table"><tbody>${Fe(n,o)}</tbody></table></div>`}catch{i.innerHTML=``,i.append(k(t,`p`,`prb-code-status`,jt))}}function je(e){let t=y.findIndex(t=>t.id===e);return t<0?!1:(De(t),!0)}Et(v),v.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-qr-show-code]`);if(n)return void Ae(n);let r=t.closest(`[data-qr-jump-finding]`);if(r){let e=v.querySelector(`[data-ref="${CSS.escape(r.dataset.qrJumpFinding??``)}"]`),t=e?.closest(`details.prb-qr-full`);t&&(t.open=!0),e?.scrollIntoView({block:`start`});return}let i=t.closest(`[data-qr-jump]`);if(i?.dataset.qrJump){je(i.dataset.qrJump)||E(`That review is not in this list as filtered. Open review shows it.`);return}let a=t.closest(`[data-qr-unlink]`);if(a)return void ke({action:`unlink`,toSubject:a.dataset.qrSubject,direction:a.dataset.qrDirection});let o=t.closest(`[data-qr-suppress], [data-qr-unsuppress]`);if(o){ke({action:o.hasAttribute(`data-qr-suppress`)?`suppress`:`unsuppress`,toSubject:o.dataset.qrSubject,direction:o.dataset.qrDirection});return}let s=t.closest(`[data-qr-confirm]`);if(s)return void ke({action:`link`,toId:s.dataset.qrTo});let c=t.closest(`[data-qr-dismiss]`);if(c)return void ke({action:`dismiss`,toSubject:c.dataset.qrSubject});let l=t.closest(`[data-qr-link]`);if(l){let e=l.closest(`.prb-qr-picker`),t=e?.querySelector(`[data-qr-link-direction]`)?.value,n=e?.querySelector(`[data-qr-link-target]`)?.value;n&&ke({action:`link`,toId:n,...t===`required-by`?{direction:t}:{}})}});for(let e of ne)e.addEventListener(`click`,()=>void Oe(e.dataset.outcome??``));return d.addEventListener(`click`,()=>De(b-1)),f.addEventListener(`click`,()=>De(b+1)),m.addEventListener(`click`,()=>i.close()),ce.addEventListener(`click`,()=>{oe.hidden=!0,v.focus({preventScroll:!0})}),i.addEventListener(`click`,e=>{e.target===i&&i.close()}),n.addEventListener(`resize`,()=>{i.open&&ve()}),i.addEventListener(`close`,()=>{if(i.open)return;we(),pe++,me?.abort(),e.menus.closeAll(),p.replaceChildren();let t=e.area();t&&(t.scrollTop=fe);let n=w()?.card,r=t?.getBoundingClientRect(),a=(e=>{if(!e?.isConnected||!r)return!1;let t=e.getBoundingClientRect();return t.height>0&&t.bottom>r.top&&t.top<r.bottom})(n)?n:de?.isConnected?de:null;a&&e.focusCard(a),x=null,y=[],Te=!1,e.onClose()}),{open(t){i.open||(y=Nt(e.walk()),b=Math.max(0,y.findIndex(e=>e.id===t.dataset.id)),y.length&&(de=t,fe=e.area()?.scrollTop??0,E(``),_.textContent=``,x=null,ve(),i.showModal(),ge(),v.focus({preventScroll:!0}),O()))},isOpen:()=>i.open,close:()=>i.close(),step:e=>De(b+e),scroll(e){v.scrollBy({top:e*v.clientHeight*.4,behavior:`instant`})},openMenu(){let t=w();if(!t)return;let n=be(t);n&&e.menus.open(n,{focusFirst:!0,returnFocus:()=>v.focus({preventScroll:!0})})},revalidate(){!i.open||!w()||(D?Te=!0:O())},removed(t){let n=y.findIndex(e=>e.id===t);if(!i.open||n<0)return;if(C.delete(t),e.menus.closeAll(),y.splice(n,1),!y.length)return void i.close();let r=n===b&&b===y.length;(n<b||r)&&b--,x=null,p.replaceChildren(),_.textContent=``,E(r?`Deleted. Showing the previous review.`:`Deleted. Showing the next review.`),O(!1),v.focus({preventScroll:!0})}}}var It=C({ownsRestore:!0});be(`/restart`);var A=[...document.querySelectorAll(`[data-card][data-placement="home"]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),j=new Map;function Lt(){j=new Map;for(let e of document.querySelectorAll(`[data-card]`)){let t=e.dataset.id??``;j.set(t,[...j.get(t)??[],e])}}Lt();function Rt(e){let t=e.closest(`[data-card]`);if(t)return t;let n=e.closest(`[data-card-ref]`)?.dataset.cardRef;return n?j.get(n)?.[0]??null:null}function zt(e,t){for(let n of j.get(e)??[])t(n)}function M(){return[...j.values()].flat()}var N=Ye(document),Bt=[...document.querySelectorAll(`[data-operation]`)],Vt=document.querySelector(`[data-section="in-progress"]`),Ht=e=>e.dataset.inProgressOnly!==void 0,Ut=Object.fromEntries(D.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),Wt=document.querySelector(`.prb-index`);function Gt(e){return{id:e.dataset.id??``,collections:Xe(e),queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var P=document.querySelector(`[data-search]`),F=document.querySelector(`[data-status-filter]`),I=document.querySelector(`[data-author-filter]`),L=document.querySelector(`[data-pr-filter]`),Kt=document.querySelector(`[data-no-matches]`),qt=document.querySelector(`[data-count]`),Jt=document.querySelector(`[data-clear-filters]`),Yt=document.querySelector(`[data-collections-filter]`),Xt=document.querySelector(`[data-collections-filter-search]`);function Zt(){if(!Yt)return;Yt.hidden=N.length===0;let e=Yt.querySelector(`[data-collections-filter-label]`);e&&(e.textContent=t(B.collections,N)),B.collections.length===0?delete Yt.dataset.active:Yt.dataset.active=``;let n=Yt.querySelector(`[data-collections-filter-options]`);n&&nt(n,N,B.collections,Xt?.value??``)}var R=De();function Qt(e){return{stored:y({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:me(e.dataset)??{at:0,kind:`created`}}}function $t(e){return e.dataset.pinned===`true`}function en(e){let{stored:t,activity:n}=Qt(e);return g($t(e),t,n,Xe(e).length>0,B.filter)}function tn(e){let t=en(e);return t===void 0?.5:D.indexOf(t)}function nn(e){return[...e].sort((e,t)=>tn(e)-tn(t))}var rn=new Map,z=document.querySelector(`[data-bulk]`),an=document.querySelector(`[data-bulk-count]`),on=document.querySelector(`[data-bulk-detail]`),sn=document.querySelector(`[data-bulk-delete]`),cn=document.querySelector(`[data-bulk-delete-label]`),ln=document.querySelector(`[data-bulk-exit]`),un=document.querySelector(`[data-bulk-more]`),dn=document.querySelector(`[data-bulk-question]`),fn=document.querySelector(`[data-bulk-confirm]`),pn=document.querySelector(`[data-bulk-actions]`),mn=document.querySelector(`[data-bulk-error]`),hn=document.querySelector(`[data-bulk-select-all]`),B=ve(window.location.hash),V=new Set,H=!1,gn=document.querySelector(`[data-bulk-fetch]`),_n={},vn=[],yn=!1;function U(){let e=B.query.trim().toLowerCase();B.author!==``&&![...I?.options??[]].some(e=>e.value===B.author)&&(B.author=``),B.collections=B.collections.filter(e=>e===`none`||N.some(t=>t.id===e)),N.length===0&&(B.collections=[]);let t=nn(u(A.map(e=>({...Gt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...B,query:e}).map(e=>e.card)),r=t.filter(e=>!Ht(e));vn=r;let i=new Set(u(Bt.map(e=>({...Gt(e),searchText:e.dataset.searchText??``,author:e.dataset.author,entry:e})),{...B,query:e}).map(e=>e.entry));for(let e of Bt)e.hidden=!i.has(e);if(Vt){Vt.hidden=i.size===0;let e=Vt.querySelector(`[data-section-count]`);e&&(e.textContent=String(i.size))}let a=r.filter(e=>en(e)!==void 0),o=te(a,e=>en(e),R),s=new Set(D.flatMap(e=>o[e].shown));for(let e of D){let t=Ut[e];t&&Ke(t,o[e].shown);let n=document.querySelector(`[data-load-more="${e}"]`);n&&(n.hidden=o[e].total<=o[e].shown.length);let r=document.querySelector(`[data-section="${e}"]`);r&&(r.hidden=o[e].total===0);let i=r?.querySelector(`[data-section-count]`);i&&(i.textContent=String(o[e].total))}for(let e of bn(r))s.add(e);for(let e of M())e.hidden=!s.has(e);if(P&&P.value!==B.query&&(P.value=B.query),I&&(I.value=B.author,B.author===``?delete I.dataset.active:I.dataset.active=``),L||(B.pr=`any`),L&&(L.value=B.pr,B.pr===`any`?delete L.dataset.active:L.dataset.active=``),F&&(F.value=B.filter,B.filter===`all`?delete F.dataset.active:F.dataset.active=``),Zt(),Jt&&(Jt.hidden=!n(B)),qt){let e=e=>e.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);qt.textContent=m(e(t),t.length,n(B)?e(A):void 0)}Kt&&(Kt.hidden=t.length>0||i.size>0||A.length===0),Gn(r)}function bn(e){let t=document.querySelector(`[data-collections-area]`);if(!t)return[];let r=d(B.filter),i=n(B),o=e.flatMap(e=>Xe(e).map(t=>({card:e,collection:t}))),s=e=>{let{stored:t,activity:n}=Qt(e);return S($t(e),t,n,B.filter)},c=l(o,({card:e,collection:t})=>{let n=s(e);return n===void 0?void 0:`${n===`completed`?`collection-done`:`collection`}:${t}`},e=>rn.get(e)??15),u=(e,t)=>(j.get(e)??[]).find(e=>e.dataset.placement===`collection:${t}`),f=[],m=!1;for(let e of t.querySelectorAll(`[data-collection]`)){let t=e.dataset.collection??``,n=c.get(`collection:${t}`)??{shown:[],total:0},s=c.get(`collection-done:${t}`)??{shown:[],total:0},l=o.filter(e=>e.collection===t),d=l.filter(e=>$t(e.card)).length,h=B.collections.length>0&&!B.collections.includes(t),te=!r&&!h&&(!i||l.length>0);if(e.hidden=!te,!te)continue;m=!0;for(let[r,i]of[[`collection:${t}`,n],[`collection-done:${t}`,s]]){let n=i.shown.map(e=>u(e.card.dataset.id??``,t)).filter(e=>e!==void 0),a=e.querySelector(`[data-cards="${r}"]`);a&&Ke(a,n),f.push(...n);let o=e.querySelector(`[data-load-more="${r}"]`);o&&(o.hidden=i.total<=i.shown.length)}let g=e.querySelector(`[data-section="collection:${t}"] > summary [data-section-count]`);g&&(g.textContent=a(n.total,d));let ne=e.querySelector(`[data-collection-empty]`),_=ee({active:n.total,completed:s.total,pinned:d,members:l.length},i);ne&&(ne.hidden=_===void 0,ne.textContent=_??``);let re=e.querySelector(`[data-section="collection-done:${t}"]`);re&&(re.hidden=s.total===0);let ie=e.querySelector(`[data-completed-label]`);ie&&(ie.textContent=p(s.total))}return t.hidden=r||!m,f}var xn=300,W=null;function Sn(){W!==null&&window.clearTimeout(W),W=null,It.replace(f(B),{})}function Cn(e,t){if(B={...B,...e},R=De(),rn=new Map,U(),t===`now`)return Sn();W!==null&&window.clearTimeout(W),W=window.setTimeout(Sn,xn)}window.addEventListener(`pagehide`,()=>{W!==null&&Sn()}),document.addEventListener(`click`,e=>{W!==null&&e.target?.closest?.(`a[href]`)&&Sn()},!0),P?.addEventListener(`input`,()=>Cn({query:P.value},`settled`)),P?.addEventListener(`keydown`,e=>{e.key===`Escape`&&P.value!==``&&(e.preventDefault(),Cn({query:``},`now`))}),F?.addEventListener(`change`,()=>{Cn({filter:F.value},`now`)}),I?.addEventListener(`change`,()=>{Cn({author:I.value},`now`)}),L?.addEventListener(`change`,()=>{Cn({pr:L.value},`now`)}),Jt?.addEventListener(`click`,()=>{Cn({query:r.query,filter:r.filter,author:r.author,pr:r.pr,collections:r.collections},`now`),P?.focus()}),Ge(),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-load-more]`)?.dataset.loadMore;if(t&&t.startsWith(`collection`)&&re(t))return rn.set(t,(rn.get(t)??15)+15),U();!t||!D.includes(t)||(R={...R,[t]:R[t]+15},U())});for(let e of[`popstate`,`hashchange`])window.addEventListener(e,()=>{B=ve(window.location.hash),R=De(),rn=new Map,U(),jn()});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;qe(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{zt(n,n=>{n.dataset.pinned=String(e);let r=n.querySelector(`[data-pin]`);r&&r!==t&&Je(r,e),xr(n)}),U()})});async function wn(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 Dn(await On(r));n=(await r.json()).queue}catch{return Dn(En)}kn(n),U()}var Tn=`That could not be saved. The workspace server refused it.`,En=`The workspace server did not answer. It may have stopped.`;function Dn(e){ce(ye(),{kind:`failed`,text:e})}async function On(e){let t=await e.json().catch(()=>null);return typeof t?.error==`string`?t.error:Tn}function kn(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of M()){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,xr(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=oe(n)}let n=document.querySelector(`[data-queue-option]`);n&&(n.textContent=ae(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&&st(t,n.hidden!==!1)});var An=document.querySelector(`.prb-shell > main`);function jn(){dt(document,It.current().ui,{cards:M(),pane:An,limits:R,reveal:(e,t)=>{R=e,rn=t,U()}})}It.setCapturer(()=>ct(document,M(),R,An,rn)),U(),jn();var G=Ve(document,{onOpen:Vn,onClose:e=>{Vn(e),window.setTimeout(oi,0)}});function Mn(){return document.querySelector(`[data-menu-trigger][aria-expanded="true"]`)!==null}var Nn=0;async function Pn(e){Nn+=1;try{await e()}finally{--Nn,oi()}}var Fn=new Set,In=`A change to this review is still being saved.`,Ln=`A change to one of these reviews is still being saved. Try again once it is.`;async function Rn(e,t){if(e.some(e=>Fn.has(e)))return!1;for(let t of e)Fn.add(t);zn(e);try{await t()}finally{for(let t of e)Fn.delete(t);zn(e)}return!0}function zn(e){let t=new Set(e);for(let e of M()){let n=e.dataset.id??``;if(!t.has(n))continue;let r=Fn.has(n);for(let t of e.querySelectorAll(`.prb-card-controls button.prb-state-pill`))r?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);for(let t of e.querySelectorAll(`.prb-card-controls :is([data-mark-status], [data-lifecycle-set], [data-queue-action])`))t.disabled=r}}async function Bn(e,t){await Rn([e],()=>Pn(t))||Dn(In)}function Vn(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,zr(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 Ur(e,t,n);if(n.matches(`[data-lifecycle-control]`))return yr(e,t,n);let r=t.closest(`[data-collections-for]`);if(r?.dataset.collectionsFor){e.preventDefault(),e.stopPropagation(),G.closeAll();let t=Rt(r)?.querySelector(`[data-select]`)?.getAttribute(`aria-label`)?.replace(/^Select /,``);Wr([r.dataset.collectionsFor],{card:t??`this review`});return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),ke(i,i.dataset.copyId);return}let a=t.closest(`[data-fetch-review]`);if(a?.dataset.fetchReview){e.preventDefault(),e.stopPropagation(),G.closeAll();let t=Rt(a);t&&ei([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),G.closeAll();let t=o.dataset.markId;Bn(t,()=>pr(t,o.dataset.markStatus===`complete`));return}let s=t.closest(`[data-lifecycle-set]`);if(s?.dataset.lifecycleId){e.preventDefault(),e.stopPropagation(),G.closeAll();let t=s.dataset.lifecycleId;Bn(t,vr(t,s.dataset.lifecycleSet));return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),G.closeAll();let t=c.dataset.queueId;Bn(t,()=>wn(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(),Vn(n),e.detail===0&&n.querySelector(`[data-delete]`)?.focus();return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),Hn(n);return}e.preventDefault(),e.stopPropagation()});async function Hn(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){if(e.closest(`[data-qr-menu]`))return zt(n,e=>e.remove()),A=A.filter(e=>e.isConnected),Lt(),U(),J.removed(n);window.location.reload();return}Un(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{Un(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 Un(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 Wn(e){H=e,e||V.clear(),Wt&&(e?Wt.dataset.selecting=``:delete Wt.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e)),!e&&un&&G.close(un);for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);K(),U()}function K(){fn&&(fn.hidden=!0),pn&&(pn.hidden=!1),mn&&(mn.hidden=!0,mn.textContent=``)}function Gn(t){for(let e of M()){let t=V.has(e.dataset.id??``),n=e.querySelector(`[data-select]`);n&&(n.checked=t),t?e.dataset.selected=``:delete e.dataset.selected}if(!z||(z.hidden=!H,!H))return;let n=new Set(M().filter(Kn).map(e=>e.dataset.id)),r=[...V].filter(e=>!n.has(e)).length,i=new Set(t.map(e=>e.dataset.id)),a=[...V].every(e=>i.has(e))?i.size:null;V.size===0?z.dataset.empty=``:delete z.dataset.empty,an&&(an.textContent=E(V.size)),on&&(on.textContent=le(V.size,a,r)),hn&&(hn.textContent=e(t.length,V.size>0&&a!==null),hn.disabled=t.every(e=>V.has(e.dataset.id??``))),cn&&(cn.textContent=h(ur()));for(let e of z.querySelectorAll(`[data-bulk-mark], [data-bulk-lifecycle], [data-bulk-queue], [data-bulk-collections], [data-bulk-delete]`))e.disabled=V.size===0;gn&&(gn.hidden=!Ie(_n,Xr(lr())))}function Kn(e){return!e.hidden&&e.closest(`details:not([open]), [hidden]`)===null}function qn(e){let t=[...e.querySelectorAll(`details[data-section]`)];for(let e of t)e.addEventListener(`toggle`,()=>Gn(vn));We(t,(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})}))}qn(document),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{Wn(!H)}),hn?.addEventListener(`click`,()=>{for(let e of vn)e.dataset.id&&V.add(e.dataset.id);K(),U()});function Jn(e){V.has(e)?V.delete(e):V.add(e),K(),U()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&Jn(t.dataset.select)}),document.addEventListener(`click`,e=>{if(!H)return;let t=e.target,n=t.closest(`[data-card]`);n?.dataset.id&&(t.closest(`[data-select], .prb-card-controls, [data-menu], [data-history-toggle]`)||(e.preventDefault(),Jn(n.dataset.id)))}),document.addEventListener(`keydown`,e=>{if(!H||e.key!==`Enter`)return;let t=e.target.closest(`.prb-card-link`)?.closest(`[data-card]`);t?.dataset.id&&(e.preventDefault(),Jn(t.dataset.id))});var q=Ue({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>[...document.querySelectorAll(`[data-card]`)].filter(Kn),enterAllowed:()=>!H,background:()=>An,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 q.holdsKeys()?q.current()?.querySelector(mr)??null:null}var J=Ft({doc:document,win:window,area:()=>An,walk:()=>[...document.querySelectorAll(`[data-card]`)].filter(Kn),cardMenu:e=>e.querySelector(mr),menus:G,focusCard:e=>e.querySelector(`.prb-card-link`)?.focus({preventScroll:!0}),showShortcuts:()=>cr.showShortcuts(),onOutcome:(e,t)=>Qn(e,t),onClose:()=>oi()}),Xn=ue(navigator);Ot(document,Xn);function Zn(){return q.current()??[...document.querySelectorAll(`[data-card]`)].find(Kn)??null}document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`[data-quick-review-open]`);if(!t)return;e.preventDefault(),e.stopPropagation(),G.closeAll();let n=t.dataset.quickReviewOpen?j.get(t.dataset.quickReviewOpen)?.[0]??null:Zn();n&&J.open(t.closest(`[data-card]`)??n)},!0);function Qn(e,t){let n=j.get(e)??[];t.complete&&fr(n,!0),zt(e,e=>{e.querySelector(`.prb-card-outcome`)?.remove(),e.querySelector(`.prb-card-deferral`)?.remove();let n=[];if(t.card){let e=document.createElement(`span`);e.className=`prb-card-outcome`,e.dataset.outcome=t.card.kind,e.dataset.standing=t.card.standing,e.textContent=t.card.label,n.push(e)}if(t.deferral){let e=document.createElement(`span`);e.className=`prb-card-deferral`,e.dataset.outcome=t.deferral.kind,e.textContent=`Next: ${t.deferral.label}`,n.push(e)}e.querySelector(`:scope > .prb-card-controls > .prb-card-status`)?.after(...n)})}var $n=8;function er(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),W!==null&&Sn(),It.leaving(),tr=!0,window.location.assign(t.href))}var tr=!1,nr={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=P?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=P?.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=vn.slice(0,$n);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=vn.length===0?`No reviews match.`:vn.length>e.length?`The first ${e.length} of ${qt?.textContent??vn.length}`:qt?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=A.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),er(n))};n.addEventListener(`input`,()=>{P&&(P.value=n.value,P.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()}},rr={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=qt?.textContent??``},r=[F,I,L].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 ir(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 ar=Object.fromEntries(ne.map(e=>[`reviews.section.${e}`,ir(e)]));function or(){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 sr=document.querySelector(`[data-collection-new]`),cr=he(`reviews`,{...ar,"reviews.search":{available:()=>P!==null,panel:nr},"reviews.filters":{available:()=>F!==null,panel:rr},"reviews.collection.new":{available:()=>sr!==null&&!sr.disabled,run:()=>sr?.click()},"reviews.collection.fold":{available:()=>or().length>0,panel:at({collections:or,toggle:e=>{let t=document.querySelector(`[data-collection="${CSS.escape(e)}"] > details[data-section]`);t&&(t.open=!t.open)}})},"reviews.next":{run:()=>q.move(1)},"reviews.previous":{run:()=>q.move(-1)},"reviews.open":{available:()=>q.enterOpens(),run:()=>q.open()},"reviews.openInNewTab":{available:()=>q.enterOpens(),run:()=>q.openInNewTab()},"reviews.selection.exit":{available:Dr,run:()=>fn&&!fn.hidden?Tr(z?.contains(document.activeElement)??!1):Er()},"reviews.quickReview":{available:()=>q.holdsKeys()&&q.current()!==null,run:()=>{let e=q.current();e&&J.open(e)}},"quick.down":{run:()=>J.scroll(1)},"quick.downArrow":{run:()=>J.scroll(1)},"quick.up":{run:()=>J.scroll(-1)},"quick.upArrow":{run:()=>J.scroll(-1)},"quick.previous":{run:()=>J.step(-1)},"quick.previousArrow":{run:()=>J.step(-1)},"quick.next":{run:()=>J.step(1)},"quick.nextArrow":{run:()=>J.step(1)},"quick.menu":{run:()=>J.openMenu()},"quick.shortcuts":{run:()=>cr.showShortcuts()},"reviews.menu":{available:()=>Yn()!==null,run:()=>{let e=Yn();e&&G.open(e,{focusFirst:!0,returnFocus:()=>q.refocus()})}}},{onOpen:()=>G.closeAll(),onSettle:()=>oi()});function lr(){return nn(A.filter(e=>V.has(e.dataset.id??``)))}function ur(){return lr().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function Y(e){mn&&(mn.textContent=e,mn.hidden=!1)}function X(e){for(let t of z?.querySelectorAll(`button`)??[])t.disabled=e}async function dr(e){let t=[...V];if(t.length===0)return;X(!0);let n=null,r=await Rn(t,async()=>{try{(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok||(n=`That could not be saved. The workspace server refused it.`)}catch{n=`The workspace server did not answer. It may have stopped.`}});if(!r||n!==null)return X(!1),Y(r?n??``:Ln);fr(lr(),e),X(!1),Wn(!1)}function fr(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e.flatMap(e=>j.get(e.dataset.id??``)??[e])){t.dataset.status=n;for(let e of t.querySelectorAll(`.prb-card-status`))Ae(e,n);let e=t.querySelector(`[data-mark-status]`);e&&(e.dataset.markStatus=r,e.textContent=_(r))}}async function pr(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 Dn(await On(n))}catch{return Dn(En)}fr(A.filter(t=>t.dataset.id===e),t),U()}var mr=`:scope > .prb-card-controls > [data-menu]:not([data-lifecycle-control])`;async function hr(e,t){let n=e.closest(`[data-card]`),r=n?.dataset.id;if(!n||!r||Fn.has(r))return;let i=document.activeElement===e,a=gr(n);Re(e,!0);try{await Bn(r,t)}finally{Re(e,!1)}i&&_r(e,a)}function gr(e){let t=e=>e instanceof HTMLElement&&e.matches(`[data-card]`)&&e.checkVisibility();for(let n=e.nextElementSibling;n;n=n.nextElementSibling)if(t(n))return n;for(let n=e.previousElementSibling;n;n=n.previousElementSibling)if(t(n))return n;return null}function _r(e,t){if(document.activeElement===null||document.activeElement===document.body){if(e.isConnected&&e.checkVisibility())return e.focus({preventScroll:!0});t?.querySelector(`.prb-card-link`)?.focus({preventScroll:!0})}}function vr(e,t){return async()=>{await br([e],t)||Dn(`That could not be saved. The workspace server refused it or did not answer.`)}}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-card] button.prb-card-status`),n=t?.closest(`[data-card]`)?.dataset.id;!t||!n||(e.preventDefault(),hr(t,()=>pr(n,t.dataset.status!==`complete`)))});function yr(e,t,n){let r=n.querySelector(`[data-lifecycle-pill]`),i=n.closest(`[data-card]`)?.dataset.id;if(!r||!i)return;let a=t.closest(`[data-lifecycle-set]`);if(a){e.preventDefault(),e.stopPropagation(),G.close(n,{returnFocus:!0}),hr(r,vr(i,a.dataset.lifecycleSet));return}let o=r.dataset.lifecyclePress;!t.closest(`[data-lifecycle-pill]`)||!o||o===`menu`||(e.preventDefault(),hr(r,vr(i,o)))}async function br(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 M())r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),xr(e));return kn(n.queue),U(),!0}function xr(e){let{stored:t,activity:n}=Qt(e),r=e.querySelector(`[data-lifecycle-pill]`);r&&ze(r,t,n);let i=e.querySelector(`[data-lifecycle-chip]`);if(i){let e=v(t,n);i.textContent=e??``,i.hidden=e===void 0}for(let r of e.querySelectorAll(`[data-menu-items] [data-lifecycle-set]`)){let e=r.dataset.lifecycleSet;r.hidden=!Se(e,t,n),r.textContent=_e(e,t,n)}}async function Sr(e){let t=[...V];if(t.length===0)return;X(!0);let n=!1,r=await Rn(t,async()=>{n=await br(t,e)});if(X(!1),!r)return Y(Ln);if(!n)return Y(`That could not be saved. The workspace server refused it or did not answer.`);Wn(!1)}async function Cr(){let e=[...V];if(e.length===0)return;X(!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 X(!1),K(),Y(`Nothing was deleted. The workspace server refused it.`)}catch{return X(!1),K(),Y(`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 lr()){let t=e.dataset.id??``;r.has(t)||zt(t,e=>e.remove())}A=A.filter(e=>e.isConnected),Lt(),V.clear();for(let e of r)V.add(e);if(X(!1),K(),n.length===0)return Wn(!1);U(),Y([...new Set(n.map(e=>e.error))].join(` `))}async function wr(){let e=lr().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;X(!0);let t=null,n=!1,r=await Rn(e,async()=>{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{n=!0}});if(!r||n)return X(!1),K(),Y(r?`The workspace server did not answer. It may have stopped.`:Ln);if(!t?.queue)return X(!1),K(),Y(`Nothing was added. The workspace server refused it.`);kn(t.queue);let i=t.refused??[];V.clear();for(let e of i)V.add(e.id);if(X(!1),K(),i.length===0)return Wn(!1);U(),Y([...new Set(i.map(e=>e.error))].join(` `))}z?.addEventListener(`click`,e=>{let t=e.target;if(un&&t.closest(`[data-bulk-more] [data-menu-panel] button`)&&G.close(un),t.closest(`[data-bulk-queue]`))return void wr();if(t.closest(`[data-bulk-collections]`))return Wr(lr().map(e=>e.dataset.id??``).filter(Boolean),{selection:!0});let n=t.closest(`[data-bulk-mark]`);if(n)return void dr(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void Sr(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){dn&&(dn.textContent=s(ur())),pn&&(pn.hidden=!0),fn&&(fn.hidden=!1),e.detail===0&&z.querySelector(`[data-bulk-cancel-delete]`)?.focus();return}if(t.closest(`[data-bulk-confirm-delete]`))return void Cr();if(t.closest(`[data-bulk-cancel-delete]`))return Tr(e.detail===0);if(t.closest(`[data-bulk-exit]`))return Er()});function Tr(e){K(),e&&sn?.focus()}function Er(){let e=z?.contains(document.activeElement)??!1;Wn(!1),e&&document.querySelector(`[data-select-mode]`)?.focus()}function Dr(e){return!H||ln?.disabled?!1:e===void 0||Oe(e,document,!0)}var Or=document.querySelector(`[data-collections-dialog]`),kr=document.querySelector(`[data-collections-dialog-list]`),Z=document.querySelector(`[data-collections-dialog-search]`),Ar=document.querySelector(`[data-collections-dialog-create]`),jr=document.querySelector(`[data-collections-dialog-error]`),Mr=document.querySelector(`[data-collections-dialog-for]`),Nr=[],Pr=!1,Fr=!1,Ir=document.body.dataset.cardsSnapshot??``;function Lr(e,t){return Ze(e,t,Ir)}function Rr(e){if(e.stale||e.area===void 0){try{let e={ids:[...V],selecting:H};window.sessionStorage.setItem(Qe,JSON.stringify(e))}catch{}Or?.close(),window.location.reload();return}let t=e.area,n=document.querySelector(`[data-collections-area]`);if(n){let e=n.contains(document.activeElement)?fe(document):null,r=document.createElement(`template`);r.innerHTML=t.trim();let i=r.content.firstElementChild;if(i){if(n.replaceWith(i),qn(i),Ot(i,Xn),H)for(let e of i.querySelectorAll(`.prb-card-link`))e.setAttribute(`aria-disabled`,`true`);e&&Ee(document,e.focus,e.focusVisible)}}N=e.collections;for(let t of A){let n=e.memberOf[t.dataset.id??``]??[];t.dataset.collections=n.join(` `);let r=t.querySelector(`[data-collections-line]`),i=x(n,N);r&&(r.textContent=i??``,r.hidden=i===void 0)}for(let t of Bt){let n=e.operations?.[t.dataset.key??``];n&&(t.dataset.collections=n.join(` `))}Lt(),Qr(),U()}function zr(e,t){let n=e.querySelector(`[data-collection-error]`);n&&(n.textContent=t??``,n.hidden=t===void 0)}Xt?.addEventListener(`input`,()=>Zt()),Yt?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-filter-option]`);if(!t)return;let n=t.checked?[...B.collections,t.value]:B.collections.filter(e=>e!==t.value);Cn({collections:[...new Set(n)]},`now`),Yt.querySelector(`[data-collections-filter-option][value="${CSS.escape(t.value)}"]`)?.focus()});var Q=document.querySelector(`[data-collection-new-dialog]`),$=Q?.querySelector(`[data-collection-name-input]`)??null,Br=Q?.querySelector(`[data-collection-create]`)??null,Vr=!1;function Hr(){sr&&(sr.disabled=Vr),$&&($.readOnly=Vr),Br&&(Br.disabled=Vr||($?.value.trim()??``)===``)}sr?.addEventListener(`click`,()=>{Q&&(G.closeAll(),$&&($.value=``),Hr(),zr(Q,void 0),Q.showModal(),$?.focus())}),$?.addEventListener(`input`,()=>{Hr(),Q&&zr(Q,void 0)}),Q?.querySelector(`[data-collection-cancel]`)?.addEventListener(`click`,()=>Q.close()),Q?.addEventListener(`close`,()=>oi()),document.addEventListener(`submit`,e=>{let t=e.target;if(t.matches(`[data-collection-new-form]`)){e.preventDefault();let n=$?.value??``;if(n.trim()===``)return;Vr=!0,Hr(),Lr(`/collections`,{action:`create`,name:n}).then(e=>{Vr=!1,Hr();let n=Q?.open===!0;if(!e.ok)return zr(t,e.error);Q?.close(),Rr(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??``;Lr(`/collections`,{action:`rename`,id:r,name:t}).then(e=>{if(!e.ok)return zr(n,e.error);G.closeAll(),Rr(e.answer),document.querySelector(`[data-collection="${CSS.escape(r)}"] summary`)?.focus({focusVisible:!1})})}});function Ur(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(),Vn(n);return}let o=t.closest(`[data-collection-confirm-delete]`);if(o?.dataset.collectionConfirmDelete){e.preventDefault(),o.disabled=!0;let t=o.dataset.collectionConfirmDelete;Lr(`/collections`,{action:`delete`,id:t}).then(e=>{if(o.disabled=!1,!e.ok)return Un(n,e.error);G.closeAll(),Rr(e.answer),B.collections.includes(t)&&Sn(),document.querySelector(`[data-collection-new]`)?.focus()})}}function Wr(e,t){!Or||e.length===0||(G.closeAll(),Nr=[...e],Pr=!1,Fr=`selection`in t,Mr&&(Mr.textContent=it(e.length,`card`in t?t.card:void 0)),Z&&(Z.value=``),qr(void 0),Kr(),Or.showModal(),Z?.focus())}function Gr(){return Nr.map(e=>Xe(A.find(t=>t.dataset.id===e)??document.createElement(`div`)))}function Kr(){let e=Z?.value??``;kr&&rt(kr,N,Gr(),e);let t=tt(e,N);Ar&&(Ar.hidden=t===void 0,Ar.textContent=t===void 0?``:`Create “${t}” and add ${Nr.length===1?`this review`:`these ${Nr.length}`}`)}function qr(e){jr&&(jr.textContent=e??``,jr.hidden=e===void 0)}async function Jr(e){qr(void 0);let t=await Lr(`/collections/members`,{ids:Nr,...e});if(!t.ok)return qr(t.error),Kr();Pr=!0,Rr(t.answer);let n=t.answer.refused??[];n.length>0&&(Nr=Nr.filter(e=>!n.some(t=>t.id===e)),qr([...new Set(n.map(e=>e.error))].join(` `))),Kr()}Z?.addEventListener(`input`,()=>Kr()),Z?.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),Ar&&!Ar.hidden&&Ar.click())}),Ar?.addEventListener(`click`,()=>{let e=tt(Z?.value??``,N);e!==void 0&&Jr({action:`add`,create:e}).then(()=>{Z&&(Z.value=``),Kr(),Z?.focus()})}),kr?.addEventListener(`change`,e=>{let t=e.target.closest(`[data-collections-dialog-option]`);if(!t)return;let n=ie(t.dataset.membership??`none`),r=t.value;Jr({action:n,collection:r}).then(()=>{kr.querySelector(`[data-collections-dialog-option][value="${CSS.escape(r)}"]`)?.focus()})}),document.querySelector(`[data-collections-dialog-close]`)?.addEventListener(`click`,()=>Or?.close());try{let e=window.sessionStorage.getItem(Qe);if(e){window.sessionStorage.removeItem(Qe);let t=JSON.parse(e),n=Array.isArray(t.ids)?t.ids.filter(e=>typeof e==`string`):[];if(t.selecting===!0||n.length>0){Wn(!0);for(let e of $e(n,A))V.add(e);U()}}}catch{}Or?.addEventListener(`close`,()=>{Pr&&H&&Fr&&Wn(!1),Nr=[],oi()}),i(window,()=>window.location.reload());var Yr=`prb-fetch-summary`;function Xr(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function Zr(e){return Pe(Xr(e),_n)}function Qr(){for(let e of M()){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!Ie(_n,Xr([e])))}}async function $r(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;_n=(await e.json()).targets??{}}catch{return}Qr(),U()}async function ei(e,t){let n=Zr(e);if(yn||n.repositories===0)return;yn=!0;let r=[gn,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=je(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{}yn=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Le),U();let a=i??{repositories:n.repositories,fetched:0,failed:[],moved:0},o={kind:a.fetched<a.repositories?`failed`:`ready`,text:Ne(a)};if(a.moved>0||ri){try{window.sessionStorage.setItem(Yr,JSON.stringify(o))}catch{}if(!ai())return void window.location.reload();ri=!0}ce(ye(),o)}try{let e=window.sessionStorage.getItem(Yr);if(e){window.sessionStorage.removeItem(Yr);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&ce(ye(),{kind:t.kind,text:t.text})}}catch{}gn?.addEventListener(`click`,()=>void ei(lr(),gn)),pe(),$r();var ti=document.body.dataset.indexRevision??``,ni=document.body.dataset.live===`true`?Date.now():0,ri=!1,ii=ti||null;function ai(){let e=Or?.open===!0||Q?.open===!0||document.activeElement?.closest(`[data-collections-area], [data-collections-filter]`)!=null;return V.size>0||document.activeElement===P||yn||cr.isOpen()||J.isOpen()||tr||e||Mn()||Nn>0}function oi(){ri&&!ai()&&T()}async function si(){try{let e=await fetch(`/revision`);if(e.ok){xe(document,!0);let t=await e.json();w(document,t),t.live&&ni===0&&(ni=Date.now()),t.live||(ni=0),t.revision!==void 0&&t.revision!==ii&&(ii!==null&&J.revalidate(),ii=t.revision);let n=se(ti,t.revision??``,ai());if(n===`reload`)return T(),null;n===`hold`&&(ri=!0)}}catch{xe(document,!1)}return He(ni===0?2**53-1:Date.now()-ni)}var ci=b(window,si);de(document,()=>ci.now()),P?.addEventListener(`blur`,oi),document.addEventListener(`click`,()=>window.setTimeout(oi,0)),ge();
package/static/runs.js CHANGED
@@ -1 +1 @@
1
- import{Y as e,a as t,b as n,ft as r,g as i,h as a,i as o,m as s,n as c,r as l,s as ee,t as te,u,xt as d,y as f}from"./chunk-Cs33-tV3.js";import{i as p,t as m}from"./chunk-D1LBeOJc.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-Cum6sHaC.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=r();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=i(window,ae);a(document,()=>oe.now()),o(),d(window,()=>window.location.reload());
1
+ import{Ct as e,S as t,Z as n,a as r,g as i,h as a,i as o,m as s,mt as c,n as l,r as u,s as d,t as f,u as p,x as m}from"./chunk-C0JUspm9.js";import{i as h,t as g}from"./chunk-DLCpB0qV.js";import{t as _}from"./chunk-Dv0Wowan.js";import{t as v}from"./chunk-C8kkSv38.js";import{r as ee,t as te}from"./chunk-CZ1YsjDz.js";var y=[`all`,`in-progress`,`completed`,`failed`,`cancelled`,`not-responding`],ne=[`all`,`review`,`update`,`re-run`,`kiss`,`ask`,`diagram`];function re(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:y.includes(n??``)?n:`all`,kind:ne.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=c();f(`/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?re(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})),ee(),te(document.querySelectorAll(`details[data-runs-section]`),e=>t(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??``} ${_(t)}`.trim())}}window.setInterval(V,B);var H=h(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 t=e.dataset.runRemove,n=e.closest(`[data-run]`);if(!t||!n)return;H.closeAll(),e.disabled=!0,W=!0;let i=t=>{e.disabled=!1,r(d(),{kind:`failed`,text:t})};fetch(`/runs/remove`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({key:t})}).then(async e=>{if(e.ok||e.status===404)n.remove(),A.splice(A.indexOf(n),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=v({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(m.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()&&u()}T?.addEventListener(`blur`,()=>$());async function ae(){try{let e=await fetch(`/runs/revision`);if(e.ok){p(document,!0);let t=await e.json();l(document,t),t.live&&X===0&&(X=Date.now()),t.live||(X=0);let r=n(ie,t.revision??``,Q());if(r===`reload`)return u(),null;r===`hold`&&(Z=!0)}}catch{p(document,!1)}return g(X===0?2**53-1:Date.now()-X)}var oe=i(window,ae);a(document,()=>oe.now()),o(),e(window,()=>window.location.reload());