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/CHANGELOG.md +69 -0
- package/dist/main.js +1 -1
- package/dist/{mcp_tools-DDbcXys2.js → mcp_tools-DmQKsAkC.js} +378 -11
- package/dist/server.js +10641 -8611
- package/package.json +1 -1
- package/static/chunk-C0JUspm9.js +1 -0
- package/static/{chunk-Cum6sHaC.js → chunk-CZ1YsjDz.js} +1 -1
- package/static/{chunk-D1LBeOJc.js → chunk-DLCpB0qV.js} +1 -1
- package/static/chunk-SPHga_7I.js +5 -0
- package/static/help.js +1 -1
- package/static/notifications.js +1 -1
- package/static/reviews.js +1 -1
- package/static/runs.js +1 -1
- package/static/settings.js +1 -1
- package/static/shell.css +292 -0
- package/static/workspace.js +85 -89
- package/static/chunk-CQIPqX7U.js +0 -1
- package/static/chunk-Cs33-tV3.js +0 -1
package/static/chunk-CQIPqX7U.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,bt as t,ct as n,et as r,it as i,ot as a,st as o,tt as s}from"./chunk-Cs33-tV3.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 v(e,t){let n=C(e),r=n?.kind===`view`&&n.view===t?n.focus:_(t,n?.focus);return h({kind:`view`,view:t,...r?{focus:r}:{}})}function y(e){let{focus:t,...n}=e;return n}function b(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function x(e){return d.includes(e)}function S(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&x(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 C(e){let t=e.indexOf(f);if(t===-1)return w(e);let n=w(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return x(r)?{...n,focus:r}:n}function w(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 T=`pushedFocus`;function E(e){let{[T]:t,...n}=e;return n}function D(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function O(e,t,n){if(e.focus===t)return;let r={...y(E(e)),focus:t};e.focus&&n.history.state?.[T]?n.history.replaceState({...r,[T]:!0},``,h(r)):n.history.pushState({...r,[T]:!0},``,h(r)),n.apply(r)}function k(e,t){if(!e.focus)return;if(t.history.state?.[T]){t.history.back();return}let n=y(E(e));t.history.replaceState(n,``,h(n)),t.apply(n)}function A(e,n,r){if(!r||e.key!==`Escape`||e.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=e.target;return!(i?.closest?.(`[data-ask-resize]`)||i instanceof HTMLInputElement&&t(i)&&i.value!==``)}function j(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 M(e,t){e.dataset.status=t,e.textContent=r(t),e.tagName===`BUTTON`&&e.setAttribute(`aria-label`,s(t))}function N(t,r,s){if(t.dataset.lifecyclePill=r?.state??`active`,t.textContent=e(r),t.tagName!==`BUTTON`)return;let c=a(r);t.dataset.lifecyclePress=c,t.setAttribute(`aria-label`,o(r)),c===`menu`?(t.setAttribute(`data-menu-trigger`,``),t.setAttribute(`aria-haspopup`,`true`),t.hasAttribute(`aria-expanded`)||t.setAttribute(`aria-expanded`,`false`)):(t.removeAttribute(`data-menu-trigger`),t.removeAttribute(`aria-haspopup`),t.removeAttribute(`aria-expanded`));let l=t.closest(`[data-lifecycle-control]`);for(let e of l?.querySelectorAll(`[data-lifecycle-set]`)??[]){let t=e.dataset.lifecycleSet;e.hidden=!n(t,r,s),e.textContent=i(t,r,s)}}function P(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 F(e){return e?.getAttribute(`aria-busy`)===`true`}function I(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 L(e){return e<0||e>=10?null:e===9?`0`:String(e+1)}function R(e){return/^[0-9]$/.test(e)?e===`0`?9:Number(e)-1:null}function z(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=I(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=L(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=R(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 B=`Fetch selected`;function V(e){return`${e} ${e===1?`repository`:`repositories`}`}function H(e){return`Fetching ${V(e)}…`}function U(e){return e.fetched===0?`Could not fetch ${V(e.repositories)}`:e.fetched===e.repositories?`Fetched ${V(e.repositories)}`:`Fetched ${e.fetched} of ${V(e.repositories)}`}function W(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 G(e,t){return W(t,e).repositories>0}export{b as C,C as S,c as T,D as _,H as a,h as b,L as c,F as d,P as f,j as g,k as h,U as i,N as l,A as m,G as n,z as o,O as p,W as r,R as s,B as t,M as u,d as v,v as w,S as x,_ as y};
|
package/static/chunk-Cs33-tV3.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
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:`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(` `)},{id:`reviews.selection.exit`,label:`Exit selection`,group:`reviews`,page:`reviews`,binding:R(`Escape`),hint:`[data-bulk-exit]`,showHint:!0},{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,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 xt(e){return yt(e).filter(e=>e.binding.kind===`key`)}var St=new Set([`Shift`,`Control`,`Alt`,`Meta`,`CapsLock`,`Fn`,`AltGraph`,`OS`]);function Ct(e){return St.has(e.key)}function wt(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 Tt=new Set(z.flatMap(e=>e.binding.kind===`combo`?[e.binding.key]:[]));function Et(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=wt(e);return i!==null&&Tt.has(i)?i:null}function Dt(e){return z.find(t=>t.binding.kind===`combo`&&t.binding.key===e)}function Ot(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?wt(t)===e.key:t.key===e.key}function kt(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 At={Escape:`Esc`,Enter:`Enter`,"\\":`\\`," ":`Space`};function B(e){return At[e]??(e.length===1?e.toUpperCase():e)}function V(e,t=`k`){let n=t.toUpperCase();return e?`⌘${n}`:`Ctrl+${n}`}function jt(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){return e.kind===`combo`?t?`⌘${B(e.key)}`:`Ctrl+${B(e.key)}`:e.kind===`chord`?jt(e.keys,t).join(` `):e.primary?t?`⌘${B(e.key)}`:`Ctrl+${B(e.key)}`:e.shift?`Shift+${B(e.key)}`:B(e.key)}function Mt(e,t){return e.kind===`chord`?jt(e.keys,t):[H(e,t)]}function Nt(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 Pt(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:Mt(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 Ft(e,t){return U(e,`kbd`,`prb-kbd`,t)}function It(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(Ft(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(Ft(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(Ft(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 Lt(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 Rt(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(Ft(e,r));i.append(n,U(e,`dd`,`prb-shortcuts-label`,t.label))}t.append(i),n.append(t)}return n}function zt(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),Rt(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 Bt=/https?:\/\/[^\s<>()"'`]+/gi,Vt=/^https?:\/\/(?:www\.)?github\.com\/([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)\/pull\/(\d+)(?:[/?#]|$)/i,Ht=/^https?:\/\/([^/]+)\/((?:[^/?#]+\/)+?)(?:-\/)?merge_requests\/(\d+)(?:[/?#]|$)/i,Ut=/^https?:\/\/(?:www\.)?bitbucket\.org\/([^/?#]+)\/([^/?#]+)\/pull-requests\/(\d+)(?:[/?#]|$)/i;function Wt(e){let t=e.replace(/[.,;:!?)\]]+$/,``),n=Vt.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=Ut.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=Ht.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 Gt(e){let t=[],n=new Set;for(let r of e.matchAll(Bt)){let e=Wt(r[0]);!e||n.has(e.key)||(n.add(e.key),t.push(e))}return t}function Kt(e){return`${e} isn't supported yet`}var qt=`prb:review-started`;function Jt(e){e.dispatchEvent(new(e.defaultView??window).Event(qt))}function Yt(e,t){e.addEventListener(qt,t)}function Xt(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 Zt(e){return e.model?`Keeps its original agent and model: ${e.agent}, ${e.model}`:`Keeps its original agent: ${e.agent}`}var Qt={waiting:`Queued`,reviewing:`Analysing`,"already-reviewed":`Already reviewed`,ready:`Ready`,failed:`Failed`},$t={waiting:`○`,reviewing:`◐`,"already-reviewed":`✓`,ready:`✓`,failed:`!`},en=250,tn=1500,nn=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 rn(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?nn:tn)):r.status===404?n.lost(r.error):a(tn))},o)};return a(tn),()=>{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 an(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(an(e,r.detail))},hide(){n.hidden=!0,t.querySelector(`.prb-addreview-technical`)?.remove()}}}function on(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 sn(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 cn(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,sn(e,r),G(e,`p`,`prb-addreview-choice-text`,`Select which branch to compare against:`),o),t.detail&&i.append(an(e,t.detail)),i}function ln(e,t){return t&&e.status===`waiting`?`Not started`:t&&e.status===`reviewing`?`Started`:Qt[e.status]}function un(e,t){let n=e.filter(e=>e.status===`ready`||e.status===`already-reviewed`).length,r=[`reviewing`,`waiting`,`failed`].map(n=>[ln({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 dn=e=>e===`added`||e===`already`,fn=e=>e.status===`already-reviewed`&&!e.reviewId;function pn(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 mn(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 hn(e,t){if(fn(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&&!dn(e.delivered.collection)&&n.push(`Not added to ${r}, because ${pn(e.delivered.collection)}.`),t.queue&&e.delivered&&!dn(e.delivered.queue)&&n.push(`Not added to your review queue, because ${mn(e.delivered.queue)}.`),n}function gn(e,t){let n=Ke(t);e.location.pathname===`/`?(e.location.hash=n,e.location.reload()):e.location.assign(`/${n}`)}function _n(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`,$t[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`,ln(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`,Zt(t.kept)));for(let r of hn(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=an(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=>!fn(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=>dn(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(),gn(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=>dn(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=un(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=rn(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&&Jt(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 vn(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 yn=`list`,bn=`queue`,Z=`new`,Q=`collection:`;function xn(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`,yn),K(e,`Review queue`,bn));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(yn),m(),t.then(e=>{d=e?.collections??[],f(i.value||yn),m()}),{element:n,complete:()=>i.value!==``&&(i.value!==Z||o.value.trim()!==``&&!p()),values:()=>{let e=l.checked;return i.value===bn?{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 Sn(e){let t=G(e,`button`,`prb-addreview-start`);return t.type=`button`,t.setAttribute(`data-addreview-start`,``),t}function Cn(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=vn(e,r,!1),d=xn(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=Sn(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(Zt(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(on(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=Gt(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:Kt(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()}},en))},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&&Jt(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=_n(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 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`,`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=vn(e,r,!0),m=J(e),h=G(e,`div`,`prb-addreview-footer`),g=Sn(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(cn(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(an(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`,Zt(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&&Jt(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=_n(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()},en)};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),on(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 Tn(e){return e?.compact?`Expand sidebar`:`Collapse sidebar`}function En(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=Tn(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 Dn(e){return e.querySelector(`dialog[open], [data-menu-panel]:not([hidden])`)!==null}function On(e){for(let t of e.children)return t.kind===`leaf`?t.command.group:On(t);return`global`}function kn(e,t,r={}){let i=r.win??window,a=r.doc??document,o=r.isMac??y(i.navigator),s=kt(bt(e)),c=null,l=e=>{let t=a.querySelector(`a[href="${e}"]:not([target])`);t?t.click():i.location.assign(e)},u=zt(a,Pt(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=En(a,i),f={"palette.open":{run:()=>D()},"add.open":{run:()=>D([`p`])},"add.pullRequest":{panel:Cn(a)},"add.branch":{panel:wn(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`,Nt(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=It(a,e=>O(e),S),w=xt(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:On(e)}),n=s.path.length===0?mt.flatMap(e=>t.filter(t=>t.group===e.id)):t;C.show({trail:jt(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`?jt(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=xt(e);return i.addEventListener(`keydown`,e=>{if(C.isOpen()){if(Ct(e))return;let t=()=>{e.preventDefault(),e.stopPropagation()};if(_)return e.key===`Escape`&&!e.isComposing?(t(),v===`close`?S():A()):Et(e,o)?(t(),S()):void 0;if(e.key===`Escape`||Et(e,o))return t(),S();if([`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)){t(),Lt(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(wt(e)??``);return}if(e.defaultPrevented||e.isComposing)return;let t=Et(e,o),r=t?Dt(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(!Ot(t.binding,e,o))continue;let r=t.within;if(r){if(!a.querySelector(r)?.matches(`[open]`))continue}else if(t.binding.kind===`key`&&t.binding.key!==`Escape`&&(n(e.target)||Dn(a)))continue;if(g(t,e)){e.preventDefault(),h(t).run?.(e);return}}},!0),i.addEventListener(`pagehide`,()=>{C.isOpen()&&S(`unloading`)}),An(a,e,o),{isOpen:()=>C.isOpen()||u.isOpen(),close:()=>S()}}function An(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=Nt(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 jn(e){return`${e} more`}function Mn(e){return e===0?`Nothing unread`:`${e} unread`}function Nn(e){return e===`moved-again`?`replaced by a later move`:`replaced when the review caught up`}function Pn(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=Pn(t))}function Fn(e,t){let n=e.querySelector(`[data-server-status]`);!n||n.dataset.serverStatus===`restarting`||$(e,t?`running`:`unreachable`)}function In(e,t){if(typeof t==`number`)for(let n of e.querySelectorAll(`[data-unread-count]`))n.dataset.unreadStyle===`rail`&&(n.textContent=t===0?``:Mn(t)),n.hidden=t===0}function Ln(e){return e===0?`Nothing running`:`${e} ${e===1?`run`:`runs`} in progress`}function Rn(e){return e>9?`9+`:String(e)}function zn(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`,Ln(t))):n.textContent=e===`digit`?t===0?``:Rn(t):t===0?``:Ln(t),e!==`words`&&(n.hidden=t===0)}}var Bn=6e3,Vn=5e3;function Hn(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 Un(e,t,n=window){return Wn(e,{kind:t.kind,text:t.text},n)}function Wn(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(),Bn),l=()=>n.clearTimeout(c),u=()=>{n.clearTimeout(c),c=n.setTimeout(()=>i.remove(),Bn)};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 Gn=`prb-carried-notices`;function Kn(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(Gn,JSON.stringify(n))}catch{}t.location.reload()}function qn(e=document,t=window){let n;try{n=JSON.parse(t.sessionStorage.getItem(Gn)??`null`),t.sessionStorage.removeItem(Gn)}catch{return}if(Array.isArray(n))for(let r of n)typeof r==`string`&&Un(Hn(e),{kind:`failed`,text:r},t)}function Jn(e,t,n=window){return Wn(e,{kind:t.tone,text:t.headline,href:`/notifications/open?id=${encodeURIComponent(t.id)}`,link:`Open`},n)}function Yn(e,t,n=window){return Wn(e,{kind:`more`,text:jn(t),href:`/notifications`,link:`View all`},n)}function Xn(e=document,t=window,n={}){let r=Number(e.body.dataset.notificationsSince);if(!Number.isFinite(r)||r<=0)return;let i=Hn(e),a=async()=>{try{let a=await t.fetch(`/notifications/recent?after=${r}`);if(Fn(e,!0),a.status===403)return;if(a.ok){let o=await a.json();n.paintUnread&&(In(e,o.unread),zn(e,o.running)),typeof o.now==`number`&&(r=o.now);for(let e of[...o.notifications??[]].reverse())Jn(i,e,t);typeof o.more==`number`&&o.more>0&&Yn(i,o.more,t)}}catch{Fn(e,!1)}t.setTimeout(()=>void a(),Vn)};t.setTimeout(()=>void a(),Vn)}function Zn(e,t){In(e,t.unread),zn(e,t.running),typeof t.driving==`boolean`&&Qn(e,t.driving)}function Qn(e,t){let n=e.querySelector(`[data-restart]`),r=e.querySelector(`[data-restart-note]`);n&&(n.disabled=t),r&&(r.hidden=!t)}var $n=`prb-server-restarted`;function er(e=document,t=window){let n=null;try{n=t.sessionStorage.getItem($n),t.sessionStorage.removeItem($n)}catch{}n!==null&&Un(Hn(e),{kind:`ready`,text:`Server restarted. Workspace is back online.`},t)}var tr=2e4,nr=300;function rr(e){er();let t=document.querySelector(`[data-restart]`),n=document.querySelector(`[data-restart-note]`);t&&t.addEventListener(`click`,()=>{t.disabled=!0,ir(e,t,n)})}async function ir(e,t,n){let r,i=null;try{let a=await fetch(e,{method:`POST`});if(a.status===409){Qn(document,!0);return}if(!a.ok)return void pr(t,n,await fr(a));let o=await a.json();r=typeof o.startedAt==`number`?o.startedAt:null,i=ur(window.location.href,o.port)}catch{pr(t,n,`The workspace server could not be reached.`);return}if(document.body.dataset.restarting=`true`,$(document,`restarting`),i!==null){if(await cr(Number(new URL(i).port)))return void window.location.assign(i)}else if(await ar(r)){try{window.sessionStorage.setItem($n,`1`)}catch{}window.location.reload();return}if(delete document.body.dataset.restarting,await dr()){$(document,`running`),pr(t,n,`The server did not restart, and is still the one that was running.`);return}$(document,`unreachable`),pr(t,n,`Server restart failed. Run prreviewbuddy open to start the workspace again.`)}async function ar(e){let t=Date.now()+tr;for(;Date.now()<t;){await new Promise(e=>setTimeout(e,nr));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 or=4,sr={now:()=>Date.now(),sleep:e=>new Promise(t=>setTimeout(t,e))};async function cr(e,t=()=>lr(e),n=sr){let r=n.now()+tr,i=0;for(;n.now()<r;){await n.sleep(nr);let e=await t();if(e===`moved`||(i=e===`gone`?i+1:0,i>=or))return!0}for(let e=0;e<or;e+=1){let e=await t();if(e!==`gone`)return e===`moved`;await n.sleep(nr)}return!0}async function lr(e){try{let t=await fetch(`/health`,{cache:`no-store`});return t.ok&&(await t.json()).movedTo===e?`moved`:`here`}catch{return`gone`}}function ur(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 dr(){try{return(await fetch(`/health`,{cache:`no-store`})).ok}catch{return!1}}async function fr(e){try{return(await e.json()).error??`The server could not be restarted.`}catch{return`The server could not be restarted.`}}function pr(e,t,n){e.disabled=!1,t&&(t.textContent=n,t.hidden=!1)}export{it as $,ke as A,Ae as B,ge as C,Te as D,Oe as E,Ge as F,We as G,Me as H,we as I,tt as J,Ze as K,Ue as L,ct as M,lt as N,Fe as O,$e as P,ot as Q,Be as R,he as S,Ee as T,je as U,Xe as V,I as W,He as X,ut as Y,st as Z,Rt as _,k as _t,Un as a,ie as at,pt as b,n as bt,zn as c,pe as ct,$ as d,ne as dt,nt as et,Nn as f,re as ft,Xt as g,A as gt,Yt as h,v as ht,qn as i,me as it,Ve as j,De as k,In as l,le as lt,kn as m,y as mt,Zn as n,ce as nt,Xn as o,ae as ot,Mn as p,O as pt,Qe as q,Kn as r,de as rt,Hn as s,oe as st,rr as t,rt as tt,Fn as u,P as ut,Pt as v,p as vt,Ne as w,ze as x,e as xt,dt as y,j as yt,be as z};
|