prreviewbuddy 0.62.0 → 0.64.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.
@@ -1 +0,0 @@
1
- function e(e,t){e.addEventListener(`pageshow`,e=>{e.persisted&&t()})}var t=`prbNav`,n=`prb-workspace`,r=`prb-nav-session`,i=`prb-nav-head`,a=`prb-nav-handoff`,o=`prb-nav-places`,s=`unstored`;function c(e){if(!e||typeof e!=`object`)return null;let n=e[t];if(!n||typeof n!=`object`)return null;let{v:r,owner:i,session:a,idx:o,id:s,ui:c}=n;if(r!==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:r,owner:i,session:a,idx:o,...typeof s==`string`&&s!==``?{id:s}:{},ui:l}}function l(e){if(!e||typeof e!=`object`)return{};let{[t]:n,...r}=e;return r}function u(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.owner===`prb-workspace`&&n.session===t}function d(e,t){try{return e?.getItem(t)??null}catch{return null}}function f(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n)}catch{}}function p(e){let{history:p,storage:m,location:h}=e,g=e.navigation??null,_=[],v=null,y=null,b=null,x=t=>{b!==null&&e.clearTimeout(b),b=t?t():null,e.capturePending(b!==null)},S=null,C=(()=>{if(!m)return s;let t=d(m,r);if(t)return t;let n=e.uuid();return f(m,r,n),d(m,r)===n?n:s})(),w=()=>`${h.pathname}${h.search}`,T=e=>`${w()}${e}`,E=()=>{try{g?.updateCurrentEntry({state:{owner:n,session:C}})}catch{}},D=()=>{for(let e of _)e()},O=(e,t)=>{t===void 0?p.replaceState(e,``):p.replaceState(e,``,t),E()},ee=()=>Number(d(m,i)??0)||0,k=()=>{try{let e=JSON.parse(d(m,o)??`{}`);return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}catch{return{}}},A=(e,t)=>{if(!e||!m)return;let n=k();delete n[e],n[e]=t;let r=Object.keys(n);for(let e of r.slice(0,Math.max(0,r.length-200)))delete n[e];f(m,o,JSON.stringify(n))},te=e=>{if(!e)return null;let t=e.id?k()[e.id]:void 0;return t&&typeof t==`object`&&!Array.isArray(t)?t:e.ui},j=()=>{if(!v)return null;try{return v()}catch{return null}},M=()=>{let r=c(p.state);if(r&&r.session===C&&r.id){S=r.id,E();return}let o=r?.idx??0;if(!r){let t=d(m,a);f(m,a,null),o=0;try{let n=t?JSON.parse(t):null,r=e.referrer!==``&&new URL(e.referrer).origin===h.origin;n&&r&&n.session===C&&typeof n.idx==`number`&&typeof n.at==`number`&&e.now()-n.at<15e3&&(o=n.idx+1)}catch{o=0}f(m,i,String(o))}let s=r?.id??e.uuid();S=s;let u={v:1,owner:n,session:C,idx:o,id:s,ui:r?.ui??null};O({...l(p.state),[t]:u})},N=()=>c(p.state)??{v:1,owner:`prb-workspace`,session:C,idx:0,ui:null},P=()=>{b!==null&&x(null);let e=j();if(!e||!S)return;let n=JSON.stringify(e),r=c(p.state);if(!r||r.id!==S){A(S,e);return}(n!==y||JSON.stringify(r.ui)!==n)&&(y=n,A(S,e),O({...l(p.state),[t]:{...r,ui:e}}))},F=e=>{if(g){let t=g.currentEntry?.index;if(typeof t!=`number`||t<0)return!1;let n=g.entries()[t+e];if(!n)return!1;try{return u(n.getState(),C)}catch{return!1}}let t=c(p.state);return!t||t.session!==C||p.length<2?!1:e===-1?t.idx>0:t.idx<ee()};M();try{p.scrollRestoration=`manual`}catch{}return{session:C,current(){return{route:l(p.state),ui:te(c(p.state))}},push(r,a){if(r!==``&&!r.startsWith(`#`))throw Error(`Workspace history pushes within this document only; "${r}" is not a fragment.`);if(T(r)===`${w()}${h.hash}`)return!1;P();let o=N().idx+1;f(m,i,String(o));let s=e.uuid(),c={v:1,owner:n,session:C,idx:o,id:s,ui:null};return S=s,p.pushState({...l(a),[t]:c},``,T(r)),y=null,E(),D(),!0},replace(e,n){if(e!==``&&!e.startsWith(`#`))throw Error(`Workspace history replaces within this document only; "${e}" is not a fragment.`);O({...l(n),[t]:N()},T(e))},setCapturer(e){v=e},captureNow:P,scheduleCapture(){x(()=>e.setTimeout(P,250))},leaving(){P(),f(m,a,JSON.stringify({session:C,idx:N().idx,at:e.now()}))},canGoBack:()=>F(-1),canGoForward:()=>F(1),back(){return F(-1)?(P(),p.back(),!0):!1},forward(){return F(1)?(P(),p.forward(),!0):!1},moved(){b!==null&&x(null);let e=j();e&&A(S,e),y=null,S=c(p.state)?.id??null;let t=c(p.state);!t||!t.id||t.session!==C?M():E(),D()},onAvailability(e){_.push(e)}}}function m(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function h(e){let t=e?.userAgentData?.platform??e?.platform??``;return/mac|iphone|ipad/i.test(t)}function g(e){if(!e||typeof e.closest!=`function`)return!1;let t=e;return t.isContentEditable?!0:t.closest(`input, textarea, select, [contenteditable=""], [contenteditable="true"]`)!==null}function _(e,t,n){if(e.defaultPrevented||e.isComposing)return null;let r=t?e.metaKey:e.ctrlKey,i=t?e.ctrlKey:e.metaKey;if(!r||i||e.altKey||e.shiftKey)return null;let a=e.key===`[`||e.key!==`]`&&e.code===`BracketLeft`?`back`:e.key===`]`||e.code===`BracketRight`?`forward`:null;return!a||g(e.target)||n.querySelector(`dialog[open], [data-menu-panel]:not([hidden])`)?null:a}var v=[`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-notification-id`,`data-guide-section`,`data-guide-detail`,`data-view`];function y(e){if(e.id)return{attrs:[[`id`,e.id]]};let t=v.filter(t=>e.hasAttribute(t)).map(t=>[t,e.getAttribute(t)??``]);return t.length>0?{attrs:t}:null}function b(e,t){if(!e||e===t||!t.contains(e))return null;let n=[],r=e;for(;r&&r!==t&&n.length<3;){let t=y(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 x(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&&v.concat(`id`).includes(e[0])&&typeof e[1]==`string`)}function S(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 C(e,t){let n=t.attrs?`[${t.attrs[0][0]}]`:t.tag;for(let r of e.querySelectorAll(n))if(S(r,t))return r;return null}function w(e,t){if(!Array.isArray(t)||t.length===0||!t.every(x))return null;let n=null,r=e;for(let e of t){let t=C(r,e);if(!t)return n;n=t,r=t}return n}function T(e,t){let n=w(e,t);if(n){if(n.tabIndex<0&&!n.matches(`a[href], button, input, select, textarea, summary`)){n.querySelector(`a[href], button:not([disabled]), input, select, textarea, [tabindex="0"]`)?.focus({preventScroll:!0});return}n.focus({preventScroll:!0})}}function E(e,t){let n=e?.[t];return typeof n==`number`&&Number.isFinite(n)&&n>=0?n:null}function D(e,t){let n=e?.[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function O(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 k(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 A(e,t){let n=e.querySelector(`[data-nav-announce]`);!n||!t||(n.textContent=``,e.defaultView?.setTimeout(()=>{n.textContent=t},50))}function te(e={},t=window,n=document){let r=t.navigation??null,i=p({history:t.history,navigation:r,storage:O(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=h(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=_(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||!m(e)||e.defaultPrevented||k(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,focus:b(n.activeElement,n.body)}));let{ui:t}=i.current(),r=E(t,`main`);e&&r!==null&&(e.scrollTop=r),t&&T(n,t.focus)}return i}var j=[{id:`active`,name:`Active`,action:`Move to active`},{id:`waiting`,name:`Waiting`,action:`Mark waiting`},{id:`done`,name:`Done`,action:`Mark done`}];function M(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 N(e){return j.find(t=>t.id===e).action}function P(e,t){if(!e)return;let n=I(e,t);return n===void 0?{text:j.find(t=>t.id===e.state).name,changed:!1}:{text:n,changed:!0}}var F=[`created`,`updated`,`merged`,`closed`,`reopened`];function ne(e){return re({at:Number(e.activityAt),kind:e.activityKind,...e.activityMovedAt===void 0?{}:{movedAt:Number(e.activityMovedAt)}})}function re(e){if(typeof e!=`object`||!e)return;let{at:t,kind:n,movedAt:r}=e;if(!(typeof t!=`number`||!Number.isFinite(t)||!F.includes(n)))return{at:t,kind:n,...typeof r==`number`&&Number.isFinite(r)?{movedAt:r}:{}}}function ie(e,t){return!e||e.state===`waiting`&&ae(e,t)?`active`:e.state}function I(e,t){if(!e||!t)return;if(e.state===`waiting`)return ae(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 ae(e,t){return t!==void 0&&t.kind!==`created`&&t.at>e.at}function oe(e,t,n){return I(t,n)!==void 0||e!==(t?.state??`active`)}function se(e,t,n){return e===`done`&&t?.state===`done`&&I(t,n)!==void 0?`Keep done`:N(e)}var L=[`pinned`,`active`,`waiting`,`done`],ce=e=>j.find(t=>t.id===e).name,le={pinned:{title:`Pinned`,key:`p`},active:{title:ce(`active`),key:`a`},waiting:{title:ce(`waiting`),key:`w`},done:{title:ce(`done`),key:`d`}};function ue(e){return typeof e==`string`&&L.includes(e)}function de(e,t,n,r){return e&&!pe(r)?`pinned`:ie(t,n)}function fe(e,t){let n=e=>L.indexOf(t(e));return[...e].sort((e,t)=>n(e)-n(t))}function pe(e){return e===`queue`}function me(e,t,n){return e?P(t,n)?.text:I(t,n)}var he=[`all`,`queue`,`in-progress`,`complete`],ge=[`any`,`open`,`merged`,`closed`],_e=[`q`,`f`,`by`,`pr`,`page`];function ve(e,t){let n=`${e} review${e===1?``:`s`}`;return e===t?n:`${n} · ${t} branch${t===1?``:`es`}`}function ye(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 be(){return{pinned:15,active:15,waiting:15,done:15}}function xe(e){let t=new URLSearchParams(e.replace(/^#/,``)),n=t.get(`f`)??``,r=t.get(`pr`)??``,i=new URLSearchParams;for(let[e,n]of t)!_e.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:he.includes(n)?n:`all`,author:t.get(`by`)??``,pr:ge.includes(r)?r:`any`,...a===``?{}:{extra:a}}}function Se(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);for(let[n,r]of new URLSearchParams(e.extra??``))_e.includes(n)||t.append(n,r);let n=t.toString();return n===``?``:`#${n}`}function Ce(e,t){return t===`all`||t===`queue`||e.status===t}function we(e,t){return t===`any`||e.prState===t}function Te(e,t){return t===``||e===t}function Ee(e){return e===`complete`?`Mark reviewed`:`Mark in progress`}function De(e){return e?`Unpin review`:`Pin review`}function Oe(e){return e?`Remove from review queue`:`Add to review queue`}function ke(e,t){let n=t.query.trim().toLowerCase();return Ae(e.filter(e=>(!n||e.searchText.includes(n))&&Ce(e,t.filter)&&Te(e.author,t.author)&&we(e,t.pr)),t.filter)}function Ae(e,t){return pe(t)?e.filter(e=>e.queue!==void 0).sort((e,t)=>(e.queue??0)-(t.queue??0)):e}function je(e){return e===0?`Queue`:`Queue (${e})`}function Me(e){return e===`complete`?`Reviewed`:e===`in-progress`?`In progress`:`New`}function Ne(e,t){if(e===0)return`Nothing selected`;let n=`${e} selected`;return t>0?`${n} · ${t} not shown`:n}function Pe(e){return e===0?`Select all`:`Select all ${e}`}function Fe(e){return e===0?`Delete`:`Delete ${e} review${e===1?``:`s`}`}function Ie(e){return`${Fe(e)}?`}function Le(e,t,n){return e===``||t===``||t===e?`wait`:n?`hold`:`reload`}var R=[{id:`global`,label:`Global`},{id:`reviews`,label:`Reviews list`},{id:`notifications`,label:`Notifications list`},{id:`sections`,label:`Review sections`},{id:`buddy`,label:`Buddy AI`},{id:`actions`,label:`Review actions`},{id:`workspace`,label:`Workspace and focus`}],z=(...e)=>({kind:`chord`,keys:e}),B=(e,t)=>({kind:`key`,key:e,...t?{shift:t}:{}}),Re=L.map(e=>({id:`reviews.section.${e}`,label:`${le[e].title} section`,group:`reviews`,page:`reviews`,binding:z(`l`,le[e].key)})),V=[{id:`palette.open`,label:`Command palette`,group:`global`,page:`global`,binding:{kind:`combo`,key:`k`}},{id:`navigate.reviews`,label:`Go to Reviews`,group:`global`,page:`global`,binding:z(`r`)},{id:`navigate.notifications`,label:`Go to Notifications`,group:`global`,page:`global`,binding:z(`n`)},{id:`help.shortcuts`,label:`Keyboard shortcuts`,group:`global`,page:`global`,binding:z(`?`)},{id:`reviews.search`,label:`Search reviews`,group:`reviews`,page:`reviews`,binding:z(`s`)},{id:`reviews.filters`,label:`Filters`,group:`reviews`,page:`reviews`,binding:z(`f`)},...Re,{id:`reviews.next`,label:`Next review`,group:`reviews`,page:`reviews`,binding:B(`j`)},{id:`reviews.previous`,label:`Previous review`,group:`reviews`,page:`reviews`,binding:B(`k`)},{id:`reviews.open`,label:`Open review`,group:`reviews`,page:`reviews`,binding:B(`Enter`)},{id:`reviews.openInNewTab`,label:`Open review in new tab`,group:`reviews`,page:`reviews`,binding:B(`Enter`,!0)},{id:`notifications.next`,label:`Next notification`,group:`notifications`,page:`notifications`,binding:B(`j`)},{id:`notifications.previous`,label:`Previous notification`,group:`notifications`,page:`notifications`,binding:B(`k`)},{id:`notifications.open`,label:`Open notification`,group:`notifications`,page:`notifications`,binding:B(`Enter`)},{id:`notifications.openInNewTab`,label:`Open notification in new tab`,group:`notifications`,page:`notifications`,binding:B(`Enter`,!0)},{id:`review.section.kiss`,label:`KISS`,group:`sections`,page:`review`,binding:z(`s`,`k`)},{id:`review.section.issues`,label:`Issues`,group:`sections`,page:`review`,binding:z(`s`,`i`)},{id:`review.section.diagrams`,label:`Diagrams`,group:`sections`,page:`review`,binding:z(`s`,`g`)},{id:`review.section.questions`,label:`Questions`,group:`sections`,page:`review`,binding:z(`s`,`q`)},{id:`review.section.files`,label:`Files`,group:`sections`,page:`review`,binding:z(`s`,`f`)},{id:`review.buddy.open`,label:`Open Buddy AI`,group:`buddy`,page:`review`,binding:z(`b`,`o`)},{id:`review.buddy.prompt`,label:`Choose a prompt`,group:`buddy`,page:`review`,binding:z(`b`,`p`)},{id:`review.mark.reviewed`,label:`Mark reviewed`,group:`actions`,page:`review`,binding:z(`m`,`r`),hint:`[data-review-menu] [data-mark-status]`},{id:`review.mark.waiting`,label:`Mark waiting`,group:`actions`,page:`review`,binding:z(`m`,`w`),hint:`[data-review-menu] [data-lifecycle-set="waiting"]`},{id:`review.mark.done`,label:`Mark done`,group:`actions`,page:`review`,binding:z(`m`,`d`),hint:`[data-review-menu] [data-lifecycle-set="done"]`},{id:`review.checkUpdates`,label:`Check for updates`,group:`actions`,page:`review`,binding:z(`a`,`c`),hint:`[data-review-menu] [data-fresh-check]`},{id:`review.update`,label:`Update review`,group:`actions`,page:`review`,binding:z(`a`,`u`)},{id:`review.queue.toggle`,label:`Queue`,group:`actions`,page:`review`,binding:z(`a`,`q`),hint:`[data-review-menu] [data-queue-action]`},{id:`review.delete`,label:`Delete`,group:`actions`,page:`review`,binding:z(`a`,`d`),hint:`[data-review-menu] [data-delete]`},{id:`review.focus.toggle`,label:`Expand or collapse this section`,group:`workspace`,page:`review`,binding:B(`\\`),hint:`[data-focus-toggle]`},{id:`review.focus.exit`,label:`Leave focus mode`,group:`workspace`,page:`review`,binding:B(`Escape`)}],ze=[{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`}];function H(e,t=V){return t.filter(t=>t.page===`global`||t.page===e)}function Be(e,t=V){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:ze.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 H(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 Ve(e){return H(e).filter(e=>e.binding.kind===`key`)}var He=new Set([`Shift`,`Control`,`Alt`,`Meta`,`CapsLock`,`Fn`,`AltGraph`,`OS`]);function Ue(e){return He.has(e.key)}function U(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}function W(e,t){let n=t?e.metaKey:e.ctrlKey,r=t?e.ctrlKey:e.metaKey;return!n||r||e.altKey||e.shiftKey||e.isComposing?!1:U(e)===`k`}function We(e,t){return e.kind!==`key`||t.metaKey||t.ctrlKey||t.altKey||t.isComposing||t.shiftKey!==(e.shift===!0)?!1:e.key===`\\`?t.key===`\\`||t.code===`Backslash`:e.key.length===1?U(t)===e.key:t.key===e.key}function Ge(e){let t=null,n=[];return{get at(){return t},get path(){return n},start(){t=e,n=[]},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 Ke={Escape:`Esc`,Enter:`Enter`,"\\":`\\`};function G(e){return Ke[e]??(e.length===1?e.toUpperCase():e)}function K(e){return e?`⌘K`:`Ctrl+K`}function q(e,t){return e.kind===`combo`?t?`⌘${G(e.key)}`:`Ctrl+${G(e.key)}`:e.kind===`chord`?[K(t),...e.keys.map(G)].join(` `):e.shift?`Shift+${G(e.key)}`:G(e.key)}function qe(e,t){return e.kind===`chord`?[K(t),...e.keys.map(G)]:[q(e,t)]}function Je(e,t){if(e.kind===`chord`)return null;if(e.kind===`combo`)return`${t?`Meta`:`Control`}+${e.key.toUpperCase()}`;let n=e.key.length===1?e.key.toUpperCase():e.key;return e.shift?`Shift+${n}`:n}function Ye(e){return R.map(t=>({group:t.id,label:t.label,rows:V.filter(e=>e.group===t.id).map(t=>({id:t.id,keys:qe(t.binding,e),label:t.label}))})).filter(e=>e.rows.length>0)}function J(e,t,n,r){let i=e.createElement(t);return n&&(i.className=n),r!==void 0&&(i.textContent=r),i}function Y(e,t){return J(e,`kbd`,`prb-kbd`,t)}function Xe(e,t,n){let r=J(e,`dialog`,`prb-palette`);r.setAttribute(`data-command-palette`,``),r.setAttribute(`aria-labelledby`,`prb-palette-title`);let i=J(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=J(e,`div`,`prb-palette-head`),i=J(e,`span`,`prb-palette-trail`);for(let[n,r]of t.entries())n>0&&i.append(J(e,`span`,`prb-palette-sep`,`›`)),i.append(Y(e,r));let a=J(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=J(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(J(e,`p`,`prb-palette-group`,t.groupLabels[r.group]??r.group)),o=r.group);let i=J(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(Y(e,r.keyLabel),J(e,`span`,`prb-palette-label`,r.namespace?`${r.label}…`:r.label)),r.state&&i.append(J(e,`span`,`prb-palette-state`,r.state)),n.append(i)}if(t.rows.length===0&&n.append(J(e,`p`,`prb-palette-empty`,`Nothing here on this page.`)),i.append(n),t.footer.length>0){let n=J(e,`div`,`prb-palette-footer`);n.append(J(e,`p`,`prb-palette-group`,`Keys on this page`));let r=J(e,`ul`,`prb-palette-keys`);for(let n of t.footer){let t=J(e,`li`);t.append(Y(e,n.keys),J(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=J(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 Ze(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 Qe(e,t){let n=J(e,`div`,`prb-shortcuts-table`);for(let r of t){let t=J(e,`section`,`prb-shortcuts-group`);t.append(J(e,`h3`,`prb-shortcuts-heading`,r.label));let i=J(e,`dl`,`prb-shortcuts-list`);for(let t of r.rows){let n=J(e,`dt`,`prb-shortcuts-keys`);n.dataset.commandId=t.id;for(let r of t.keys)n.append(Y(e,r));i.append(n,J(e,`dd`,`prb-shortcuts-label`,t.label))}t.append(i),n.append(t)}return n}function $e(e,t,n,r){let i=J(e,`dialog`,`prb-dialog prb-shortcuts`);i.setAttribute(`data-shortcuts-dialog`,``),i.setAttribute(`aria-labelledby`,`prb-shortcuts-title`);let a=J(e,`div`,`prb-shortcuts-head`),o=J(e,`h2`,void 0,`Keyboard shortcuts`);o.id=`prb-shortcuts-title`;let s=J(e,`button`,`prb-shortcuts-close`,`Close`);s.type=`button`,s.setAttribute(`data-shortcuts-close`,``),a.append(o,s),i.append(a,J(e,`p`,`prb-shortcuts-hint`,n),Qe(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}}function et(e){return e.querySelector(`dialog[open], [data-menu-panel]:not([hidden])`)!==null}function tt(e){for(let t of e.children)return t.kind===`leaf`?t.command.group:tt(t);return`global`}function nt(e,t,n={}){let r=n.win??window,i=n.doc??document,a=n.isMac??h(r.navigator),o=Ge(Be(e)),s=null,c=e=>{let t=i.querySelector(`a[href="${e}"]:not([target])`);t?t.click():r.location.assign(e)},l=$e(i,Ye(a),`${K(a)} opens the command palette from anywhere in the workspace. Single keys never act while you are typing.`,()=>n.onSettle?.()),u={"palette.open":{run:()=>C()},"navigate.reviews":{run:()=>c(`/`)},"navigate.notifications":{run:()=>c(`/notifications`)},"help.shortcuts":{run:()=>l.open()}},d=e=>u[e.id]??t[e.id],f=(e,t)=>{let n=d(e);return!!n&&(n.available?.(t)??!0)},p=null,m=[],_=()=>{p?.(),p=null},v=(e=`dismissed`)=>{_(),o.reset(),y.close();let t=s;s=null,t?.isConnected&&t.focus(),e===`dismissed`&&n.onSettle?.()},y=Xe(i,e=>w(e),v),b=Ve(e).map(e=>({keys:q(e.binding,a),label:e.label})),x=Object.fromEntries(R.map(e=>[e.id,e.label])),S=()=>{let e=o.at;if(!e)return;let t=e.children.map(e=>e.kind===`leaf`?{key:e.key,keyLabel:e.key.toUpperCase(),label:e.command.label,namespace:!1,available:f(e.command),group:e.command.group,state:d(e.command)?.state?.()??null}:{key:e.key,keyLabel:e.key.toUpperCase(),label:e.label,namespace:!0,available:!0,group:tt(e)}),n=o.path.length===0?R.flatMap(e=>t.filter(t=>t.group===e.id)):t;y.show({trail:[K(a),...o.path.map(e=>e.toUpperCase())],title:e.label,rows:n,groupLabels:o.path.length===0?x:null,footer:b})};function C(){if(y.isOpen())return v();n.onOpen?.();let e=i.activeElement;s=e instanceof HTMLElement&&e!==i.body?e:null,o.start(),S()}function w(e){let t=o.press(e);if(t.kind===`descend`)return S();let n=t.kind===`run`&&f(t.command)?d(t.command):null;if(n?.panel&&t.kind===`run`)return T(t.command,n.panel);v(n?`running`:`dismissed`),n?.run?.()}function T(e,t){m=e.binding.kind===`chord`?e.binding.keys.slice(0,-1):[];let n=e.binding.kind===`chord`?e.binding.keys.map(e=>e.toUpperCase()):[];p=y.showPanel([K(a),...n],t,()=>v(`running`))}function E(){_(),o.start();for(let e of m)o.press(e);S()}let D=Ve(e);return r.addEventListener(`keydown`,e=>{if(y.isOpen()){if(Ue(e))return;let t=()=>{e.preventDefault(),e.stopPropagation()};if(p)return e.key===`Escape`&&!e.isComposing?(t(),E()):W(e,a)?(t(),v()):void 0;if(e.key===`Escape`||W(e,a))return t(),v();if([`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)){t(),Ze(y.dialog,e.key,i.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(),w(U(e)??``);return}if(!(e.defaultPrevented||e.isComposing)){if(W(e,a)){if(i.querySelector(`dialog[open]`))return;e.preventDefault(),e.stopPropagation(),C();return}for(let t of D)if(We(t.binding,e)){if(t.binding.kind===`key`&&t.binding.key!==`Escape`&&(g(e.target)||et(i)))return;if(f(t,e)){e.preventDefault(),d(t).run?.(e);return}}}},!0),r.addEventListener(`pagehide`,()=>{y.isOpen()&&v(`unloading`)}),rt(i,e,a),{isOpen:()=>y.isOpen()||l.isOpen(),close:()=>v()}}function rt(e,t,n){for(let r of H(t)){let t=r.hint;if(t)for(let i of e.querySelectorAll(t))if(r.binding.kind===`chord`)i.dataset.shortcutHint=q(r.binding,n);else{let e=Je(r.binding,n);e&&i.setAttribute(`aria-keyshortcuts`,e)}}}function it(e){return`${e} more`}function at(e){return e===0?`Nothing unread`:`${e} unread`}function ot(e){return e===`restarting`?`Workspace server restarting`:e===`unreachable`?`Workspace server not running`:`Workspace server running`}function X(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=ot(t))}function Z(e,t){let n=e.querySelector(`[data-server-status]`);!n||n.dataset.serverStatus===`restarting`||X(e,t?`running`:`unreachable`)}var st=6e3,ct=5e3;function lt(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 ut(e,t,n=window){return dt(e,{kind:t.kind,text:t.text},n)}function dt(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(),st),l=()=>n.clearTimeout(c),u=()=>{n.clearTimeout(c),c=n.setTimeout(()=>i.remove(),st)};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}function ft(e,t,n=window){return dt(e,{kind:t.tone,text:t.headline,href:`/notifications/open?id=${encodeURIComponent(t.id)}`,link:`Open`},n)}function pt(e,t,n=window){return dt(e,{kind:`more`,text:it(t),href:`/notifications`,link:`View all`},n)}function mt(e=document,t=window){let n=Number(e.body.dataset.notificationsSince);if(!Number.isFinite(n)||n<=0)return;let r=lt(e),i=async()=>{try{let i=await t.fetch(`/notifications/recent?after=${n}`);if(Z(e,!0),i.status===403)return;if(i.ok){let e=await i.json();typeof e.now==`number`&&(n=e.now);for(let n of[...e.notifications??[]].reverse())ft(r,n,t);typeof e.more==`number`&&e.more>0&&pt(r,e.more,t)}}catch{Z(e,!1)}t.setTimeout(()=>void i(),ct)};t.setTimeout(()=>void i(),ct)}function ht(e,t){if(typeof t==`number`)for(let n of e.querySelectorAll(`[data-unread-count]`))n.dataset.unreadStyle===`rail`&&(n.textContent=t===0?``:at(t)),n.hidden=t===0}function gt(e,t){ht(e,t.unread),typeof t.driving==`boolean`&&_t(e,t.driving)}function _t(e,t){let n=e.querySelector(`[data-restart]`),r=e.querySelector(`[data-restart-note]`);n&&(n.disabled=t),r&&(r.hidden=!t)}var vt=`prb-server-restarted`;function yt(e=document,t=window){let n=null;try{n=t.sessionStorage.getItem(vt),t.sessionStorage.removeItem(vt)}catch{}n!==null&&ut(lt(e),{kind:`ready`,text:`Server restarted. Workspace is back online.`},t)}var bt=2e4,Q=300;function xt(e){yt();let t=document.querySelector(`[data-restart]`),n=document.querySelector(`[data-restart-note]`);t&&t.addEventListener(`click`,()=>{t.disabled=!0,St(e,t,n)})}async function St(e,t,n){let r,i=null;try{let a=await fetch(e,{method:`POST`});if(a.status===409){_t(document,!0);return}if(!a.ok)return void $(t,n,await At(a));let o=await a.json();r=typeof o.startedAt==`number`?o.startedAt:null,i=Ot(window.location.href,o.port)}catch{$(t,n,`The workspace server could not be reached.`);return}if(document.body.dataset.restarting=`true`,X(document,`restarting`),i!==null){if(await Et(Number(new URL(i).port)))return void window.location.assign(i)}else if(await Ct(r)){try{window.sessionStorage.setItem(vt,`1`)}catch{}window.location.reload();return}if(delete document.body.dataset.restarting,await kt()){X(document,`running`),$(t,n,`The server did not restart, and is still the one that was running.`);return}X(document,`unreachable`),$(t,n,`Server restart failed. Run prreviewbuddy open to start the workspace again.`)}async function Ct(e){let t=Date.now()+bt;for(;Date.now()<t;){await new Promise(e=>setTimeout(e,Q));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 wt=4,Tt={now:()=>Date.now(),sleep:e=>new Promise(t=>setTimeout(t,e))};async function Et(e,t=()=>Dt(e),n=Tt){let r=n.now()+bt,i=0;for(;n.now()<r;){await n.sleep(Q);let e=await t();if(e===`moved`||(i=e===`gone`?i+1:0,i>=wt))return!0}for(let e=0;e<wt;e+=1){let e=await t();if(e!==`gone`)return e===`moved`;await n.sleep(Q)}return!0}async function Dt(e){try{let t=await fetch(`/health`,{cache:`no-store`});return t.ok&&(await t.json()).movedTo===e?`moved`:`here`}catch{return`gone`}}function Ot(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 kt(){try{return(await fetch(`/health`,{cache:`no-store`})).ok}catch{return!1}}async function At(e){try{return(await e.json()).error??`The server could not be restarted.`}catch{return`The server could not be restarted.`}}function $(e,t,n){e.disabled=!1,t&&(t.textContent=n,t.hidden=!1)}export{ye as A,A as B,ue as C,Oe as D,De as E,se as F,E as G,b as H,P as I,D as J,T as K,oe as L,Ne as M,Me as N,je as O,ne as P,re as R,be as S,xe as T,h as U,te as V,m as W,e as Y,Ie as _,mt as a,fe as b,X as c,Qe as d,Ye as f,Fe as g,ve as h,ut as i,Pe as j,Le as k,at as l,me as m,gt as n,lt as o,L as p,l as q,ht as r,Z as s,xt as t,nt as u,ke as v,Ee as w,de as x,Se as y,M as z};