prreviewbuddy 0.63.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.
- package/CHANGELOG.md +56 -0
- package/dist/{delete_review-CeJo9t7h.js → delete_review-l4p_p6oh.js} +102 -24
- package/dist/main.js +1 -1
- package/dist/server.js +314 -131
- package/package.json +1 -1
- package/static/chunk-CXf6hwXL.js +1 -0
- package/static/help.js +1 -1
- package/static/notifications.js +1 -1
- package/static/reviews.js +1 -1
- package/static/settings.js +1 -1
- package/static/shell.css +189 -22
- package/static/workspace.js +84 -78
- package/static/chunk-CxNfDBSA.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prreviewbuddy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.64.2",
|
|
4
4
|
"description": "Review a branch or pull request in an isolated checkout, from your terminal, with the coding agent you already have installed.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://prreviewbuddy.com",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){e.addEventListener(`pageshow`,e=>{e.persisted&&t()})}var t=`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`?!0:t===`in-progress`?e.status!==`complete`: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 not reviewed`}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`?`Not reviewed`:`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};
|
package/static/help.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{U as e,V as t,Y as n,d as r,f as i,t as a,u as o}from"./chunk-
|
|
1
|
+
import{U as e,V as t,Y as n,d as r,f as i,t as a,u as o}from"./chunk-CXf6hwXL.js";t(),o(`global`,{}),document.querySelector(`[data-shortcut-table]`)?.replaceChildren(r(document,i(e(navigator)))),a(`/restart`),n(window,()=>window.location.reload());
|
package/static/notifications.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as e,Y as t,l as n,r,t as i,u as a}from"./chunk-
|
|
1
|
+
import{V as e,Y as t,l as n,r,t as i,u as a}from"./chunk-CXf6hwXL.js";import{t as o}from"./chunk-BadSI8AL.js";function s(e,t,n){let r=[...e.querySelectorAll(`[data-notification-id]`)];r.forEach((e,t)=>{e.hidden=t>=n}),t&&(t.hidden=r.length<=n)}function c(e){let t=e.querySelector(`[data-notifications-more]`),n=15;s(e,t,n),t?.addEventListener(`click`,()=>{n+=15,s(e,t,n)})}e(),i(`/restart`),c(document);var l=o({doc:document,item:`[data-notification-id]`,link:`a.prb-notification-open`,walk:()=>[...document.querySelectorAll(`[data-notification-id]:not([hidden])`)].filter(e=>e.querySelector(`a.prb-notification-open`)),background:()=>document.querySelector(`.prb-shell > main`)});a(`notifications`,{"notifications.next":{run:()=>l.move(1)},"notifications.previous":{run:()=>l.move(-1)},"notifications.open":{available:()=>l.enterOpens(),run:()=>l.open()},"notifications.openInNewTab":{available:()=>l.enterOpens(),run:()=>l.openInNewTab()}});var u=document.querySelector(`[data-notifications-count]`),d=document.querySelector(`[data-notifications-read-all]`);async function f(){try{let e=await fetch(`/notifications`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({action:`read-all`})});if(!e.ok)return null;let t=await e.json();return typeof t.unread==`number`?t.unread:null}catch{return null}}function p(e){e.setAttribute(`data-read`,`true`);let t=e.querySelector(`.prb-notification-open`),n=t?.getAttribute(`aria-label`);t&&n?.startsWith(`Unread. `)&&t.setAttribute(`aria-label`,n.slice(8))}d?.addEventListener(`click`,()=>{d.disabled=!0,f().then(e=>{if(e===null){d.disabled=!1;return}document.querySelectorAll(`[data-notification-id]`).forEach(p),u&&(u.textContent=n(e)),r(document,e),d.disabled=e===0})}),t(window,()=>window.location.reload());
|
package/static/reviews.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,C as t,D as n,F as r,G as i,H as a,J as o,K as s,L as c,M as ee,N as te,O as ne,P as re,S as l,T as ie,V as ae,Y as oe,_ as se,a as ce,b as le,g as ue,h as de,i as fe,j as pe,k as me,m as he,n as ge,o as _e,p as u,s as ve,t as ye,u as be,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-CxNfDBSA.js";import{a as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./chunk-CndkgJPh.js";import{t as Ne}from"./chunk-BadSI8AL.js";function Pe(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function Fe(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;Ie(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return Ie(e,!r);n(r)}function Ie(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`★`:`☆`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function Le(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function Re(e,t,n,r){return{limits:n,expanded:t.filter(e=>e.querySelector(`[data-history-list]:not([hidden])`)).map(e=>e.dataset.id??``).filter(e=>e!==``),main:r?.scrollTop??0,focus:a(e.activeElement,e.body)}}function ze(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of u){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function Be(e,t,n){if(!t)return;n.reveal(ze(t,n.limits));let r=new Set(o(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(e.dataset.id??``)&&Le(t,!0)}let a=i(t,`main`);n.pane&&a!==null&&(n.pane.scrollTop=a),s(e,t.focus)}function Ve(e,n){let r=Promise.resolve();for(let i of e){let e=i.dataset.section;if(!t(e))continue;let a=i.open;i.addEventListener(`toggle`,()=>{if(i.open===a)return;a=i.open;let t=!i.open;r=r.then(()=>n(e,t)).catch(()=>{})})}}var d=ae({ownsRestore:!0});ye(`/restart`);var f=[...document.querySelectorAll(`[data-card]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),He=Object.fromEntries(u.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),p=document.querySelector(`.prb-index`);function Ue(e){return{id:e.dataset.id??``,queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var m=document.querySelector(`[data-search]`),h=document.querySelector(`[data-status-filter]`),g=document.querySelector(`[data-author-filter]`),_=document.querySelector(`[data-pr-filter]`),We=document.querySelector(`[data-no-matches]`),v=document.querySelector(`[data-count]`),y=l();function Ge(e){return{stored:Te({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:re(e.dataset)??{at:0,kind:`created`}}}function Ke(e){return e.dataset.pinned===`true`}function b(e){let{stored:t,activity:n}=Ge(e);return Ce(Ke(e),t,n,E.filter)}var x=document.querySelector(`[data-bulk]`),qe=document.querySelector(`[data-bulk-count]`),Je=document.querySelector(`[data-bulk-delete]`),Ye=document.querySelector(`[data-bulk-question]`),S=document.querySelector(`[data-bulk-confirm]`),C=document.querySelector(`[data-bulk-actions]`),w=document.querySelector(`[data-bulk-error]`),T=document.querySelector(`[data-bulk-select-all]`),E=ie(window.location.hash),D=new Set,O=!1,k=document.querySelector(`[data-bulk-fetch]`),A={},j=[],M=!1;function N(){let t=E.query.trim().toLowerCase();E.author!==``&&![...g?.options??[]].some(e=>e.value===E.author)&&(E.author=``);let n=le(xe(f.map(e=>({...Ue(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...E,query:t}).map(e=>e.card),b);j=n;let r=e(n,b,y),i=new Set(u.flatMap(e=>r[e].shown));for(let e of f)e.hidden=!i.has(e);for(let e of u){let t=He[e];t&&Pe(t,r[e].shown);let n=document.querySelector(`[data-load-more="${e}"]`);n&&(n.hidden=r[e].total<=r[e].shown.length);let i=document.querySelector(`[data-section="${e}"]`);i&&(i.hidden=r[e].total===0);let a=i?.querySelector(`[data-section-count]`);a&&(a.textContent=String(r[e].total))}if(m&&m.value!==E.query&&(m.value=E.query),g&&(g.value=E.author,E.author===``?delete g.dataset.active:g.dataset.active=``),_||(E.pr=`any`),_&&(_.value=E.pr,E.pr===`any`?delete _.dataset.active:_.dataset.active=``),h&&(h.value=E.filter,E.filter===`all`?delete h.dataset.active:h.dataset.active=``),v){let e=n.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);v.textContent=de(e,n.length)}We&&(We.hidden=n.length>0||f.length===0),tt(n)}var Xe=300,P=null;function F(){P!==null&&window.clearTimeout(P),P=null,d.replace(we(E),{})}function I(e,t){if(E={...E,...e},y=l(),N(),t===`now`)return F();P!==null&&window.clearTimeout(P),P=window.setTimeout(F,Xe)}window.addEventListener(`pagehide`,()=>{P!==null&&F()}),document.addEventListener(`click`,e=>{P!==null&&e.target?.closest?.(`a[href]`)&&F()},!0),m?.addEventListener(`input`,()=>I({query:m.value},`settled`)),m?.addEventListener(`keydown`,e=>{e.key===`Escape`&&m.value!==``&&(e.preventDefault(),I({query:``},`now`))}),h?.addEventListener(`change`,()=>{I({filter:h.value},`now`)}),g?.addEventListener(`change`,()=>{I({author:g.value},`now`)}),_?.addEventListener(`change`,()=>{I({pr:_.value},`now`)}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-load-more]`)?.dataset.loadMore;!t||!u.includes(t)||(y={...y,[t]:y[t]+15},N())});for(let e of[`popstate`,`hashchange`])window.addEventListener(e,()=>{E=ie(window.location.hash),y=l(),N(),Qe()});document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-pin]`);if(!t?.dataset.pin)return;e.preventDefault(),e.stopPropagation();let n=t.dataset.pin;Fe(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{let n=t.closest(`[data-card]`);n&&(n.dataset.pinned=String(e),J(n),N())})});async function Ze(e,t){let n;try{let r=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:e,action:t})});if(!r.ok)return;n=(await r.json()).queue}catch{return}L(n),N()}function L(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of f){let n=t.get(e.dataset.id??``);n===void 0?delete e.dataset.queue:e.dataset.queue=String(n),n!==void 0&&e.dataset.lifecycle!==`active`&&(e.dataset.lifecycle=`active`,delete e.dataset.lifecycleAt,J(e))}for(let e of document.querySelectorAll(`[data-queue-action][data-queue-id]`)){let r=t.has(e.dataset.queueId??``);e.dataset.queueAction=r?`remove`:`add`,e.textContent=n(r)}let r=document.querySelector(`[data-queue-option]`);r&&(r.textContent=ne(e.length))}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-history-toggle]`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.parentElement?.querySelector(`[data-history-list]`);n&&Le(t,n.hidden!==!1)});var R=document.querySelector(`.prb-shell > main`);function Qe(){Be(document,d.current().ui,{cards:f,pane:R,limits:y,reveal:e=>{y=e,N()}})}d.setCapturer(()=>Re(document,f,y,R)),N(),Qe();function z(e){for(let t of document.querySelectorAll(`[data-menu]`)){if(t===e)continue;let n=t.querySelector(`[data-menu-panel]`),r=t.querySelector(`[data-menu-trigger]`);n&&(n.hidden=!0),r?.setAttribute(`aria-expanded`,`false`),B(t)}}function B(e){let t=e.querySelector(`[data-menu-items]`),n=e.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!1),n&&(n.hidden=!0),e.querySelector(`[data-menu-error]`)?.remove(),e.querySelector(`[data-id-field]`)?.remove()}document.addEventListener(`keydown`,e=>{e.key===`Escape`&&z()}),document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-menu]`);if(!n)return void z();let r=t.closest(`[data-menu-trigger]`);if(r){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-panel]`);if(!t)return;let i=t.hidden;z(n),B(n),t.hidden=!i,r.setAttribute(`aria-expanded`,String(i));return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),je(i,i.dataset.copyId);return}let a=t.closest(`[data-fetch-review]`);if(a?.dataset.fetchReview){e.preventDefault(),e.stopPropagation(),z();let t=a.closest(`[data-card]`);t&&St([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),z(),mt(o.dataset.markId,o.dataset.markStatus===`complete`);return}let s=t.closest(`[data-lifecycle-set]`);if(s?.dataset.lifecycleId){e.preventDefault(),e.stopPropagation(),z(),ht([s.dataset.lifecycleId],s.dataset.lifecycleSet);return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),z(),Ze(c.dataset.queueId,c.dataset.queueAction===`remove`?`remove`:`add`);return}if(t.closest(`[data-delete]`)){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-items]`),r=n.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!0),r&&(r.hidden=!1);return}if(t.closest(`[data-cancel-delete]`)){e.preventDefault(),e.stopPropagation(),B(n);return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),$e(n);return}e.preventDefault(),e.stopPropagation()});async function $e(e){let t=e.querySelector(`[data-delete]`),n=t?.dataset.delete;if(!n)return;let r=e.querySelector(`[data-menu-confirm]`),i=e.querySelector(`[data-confirm-delete]`);i&&(i.disabled=!0,i.textContent=`Deleting`);try{let r=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,scope:t?.dataset.scope??`review`})});if(r.ok)return void window.location.reload();et(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{et(e,`The workspace server did not answer. It may have stopped.`)}i&&(i.disabled=!1,i.textContent=`Delete`),r&&(r.hidden=!0);let a=e.querySelector(`[data-menu-items]`);a&&(a.hidden=!1)}function et(e,t){e.querySelector(`[data-menu-error]`)?.remove();let n=document.createElement(`p`);n.className=`prb-menu-error`,n.setAttribute(`data-menu-error`,``),n.textContent=t,e.querySelector(`[data-menu-panel]`)?.append(n)}function V(e){O=e,e||D.clear(),p&&(e?p.dataset.selecting=``:delete p.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e));for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);H(),N()}function H(){S&&(S.hidden=!0),C&&(C.hidden=!1),w&&(w.hidden=!0,w.textContent=``)}function tt(e){for(let e of f){let t=D.has(e.dataset.id??``),n=e.querySelector(`[data-select]`);n&&(n.checked=t),t?e.dataset.selected=``:delete e.dataset.selected}if(!x||(x.hidden=!O,!O))return;let t=new Set(e.filter(nt).map(e=>e.dataset.id)),n=[...D].filter(e=>!t.has(e)).length;qe&&(qe.textContent=ee(D.size,n)),T&&(T.textContent=pe(e.length),T.disabled=e.every(e=>D.has(e.dataset.id??``))),Je&&(Je.textContent=ue(dt()));for(let e of x.querySelectorAll(`[data-bulk-mark], [data-bulk-lifecycle], [data-bulk-queue], [data-bulk-delete]`))e.disabled=D.size===0;k&&(k.hidden=!Oe(A,X(G())))}function nt(e){return!e.hidden&&e.closest(`details`)?.open!==!1}for(let e of document.querySelectorAll(`details[data-section]`))e.addEventListener(`toggle`,()=>tt(j));Ve(document.querySelectorAll(`details[data-section]`),(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})})),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{V(!O)}),T?.addEventListener(`click`,()=>{for(let e of j)e.dataset.id&&D.add(e.dataset.id);H(),N()});function U(e){D.has(e)?D.delete(e):D.add(e),H(),N()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&U(t.dataset.select)}),document.addEventListener(`click`,e=>{if(!O)return;let t=e.target,n=t.closest(`[data-card]`);n?.dataset.id&&(t.closest(`[data-select], [data-pin], [data-menu], [data-history-toggle]`)||(e.preventDefault(),U(n.dataset.id)))}),document.addEventListener(`keydown`,e=>{if(!O||e.key!==`Enter`)return;let t=e.target.closest(`.prb-card-link`)?.closest(`[data-card]`);t?.dataset.id&&(e.preventDefault(),U(t.dataset.id))});var W=Ne({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>j.filter(nt),enterAllowed:()=>!O,background:()=>R,leadIn:e=>[...e.closest(`[data-cards]`)?.querySelectorAll(`[data-card]:not([hidden])`)??[]][0]===e?e.closest(`details[data-section]`)?.querySelector(`summary`)??null:null}),rt=8;function it(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),P!==null&&F(),d.leaving(),at=!0,window.location.assign(t.href))}var at=!1,ot={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=m?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=m?.value??``;let r=document.createElement(`p`);r.className=`prb-palette-summary`,r.setAttribute(`aria-live`,`polite`);let i=document.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Matching reviews`);let a=()=>{let e=j.slice(0,rt);i.replaceChildren(...e.map(e=>{let t=document.createElement(`button`);t.type=`button`,t.className=`prb-palette-result`,t.dataset.resultId=e.dataset.id??``;let n=document.createElement(`span`);n.className=`prb-palette-result-title`,n.textContent=e.querySelector(`.prb-card-head h2`)?.textContent??``;let r=document.createElement(`span`);return r.className=`prb-palette-result-where`,r.textContent=[e.querySelector(`.prb-card-repo`)?.textContent,e.querySelector(`.prb-card-branch`)?.textContent].filter(Boolean).join(` · `),t.append(n,r),t})),r.textContent=j.length===0?`No reviews match.`:j.length>e.length?`The first ${e.length} of ${v?.textContent??j.length}`:v?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=f.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),it(n))};n.addEventListener(`input`,()=>{m&&(m.value=n.value,m.dispatchEvent(new Event(`input`,{bubbles:!0})),a())}),i.addEventListener(`click`,e=>s(e.target.closest(`.prb-palette-result`)??void 0)),e.addEventListener(`keydown`,e=>{if(e.isComposing)return;let t=o(),r=t.indexOf(e.target);if(e.key===`Enter`&&e.target===n)return e.preventDefault(),s(t[0]);let i=e.key===`ArrowDown`?r<0?t[0]:t[r+1]:e.key===`ArrowUp`?r<=0?n:t[r-1]:null;i&&(e.preventDefault(),i.focus())}),e.append(n,r,i),a(),n.focus(),n.select()}},st={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=v?.textContent??``},r=[h,g,_].flatMap(e=>{if(!e)return[];let t=document.createElement(`label`);t.className=`prb-palette-field`;let r=document.createElement(`span`),i=(e.getAttribute(`aria-label`)??``).replace(/^Filter by /,``);r.textContent=i.charAt(0).toUpperCase()+i.slice(1);let a=document.createElement(`select`);for(let t of e.options)a.append(new Option(t.text,t.value));return a.value=e.value,a.addEventListener(`change`,()=>{e.value=a.value,e.dispatchEvent(new Event(`change`,{bubbles:!0})),n()}),t.append(r,a),[t]});e.append(...r,t),n(),r[0]?.querySelector(`select`)?.focus()}};function ct(e){let t=()=>document.querySelector(`details[data-section="${e}"]`);return{available:()=>!!(t()&&!t().hidden),state:()=>{let e=t();return e&&!e.hidden?e.open?`Expanded`:`Collapsed`:null},run:()=>{let e=t();e&&(e.open=!e.open)}}}var lt=Object.fromEntries(u.map(e=>[`reviews.section.${e}`,ct(e)])),ut=be(`reviews`,{...lt,"reviews.search":{available:()=>m!==null,panel:ot},"reviews.filters":{available:()=>h!==null,panel:st},"reviews.next":{run:()=>W.move(1)},"reviews.previous":{run:()=>W.move(-1)},"reviews.open":{available:()=>W.enterOpens(),run:()=>W.open()},"reviews.openInNewTab":{available:()=>W.enterOpens(),run:()=>W.openInNewTab()}},{onOpen:()=>z(),onSettle:()=>$()});function G(){return le(f.filter(e=>D.has(e.dataset.id??``)),b)}function dt(){return G().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function K(e){w&&(w.textContent=e,w.hidden=!1)}function q(e){for(let t of x?.querySelectorAll(`button`)??[])t.disabled=e}async function ft(e){let t=[...D];if(t.length!==0){q(!0);try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok)return q(!1),K(`That could not be saved. The workspace server refused it.`)}catch{return q(!1),K(`The workspace server did not answer. It may have stopped.`)}pt(G(),e),q(!1),V(!1)}}function pt(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e){t.dataset.status=n;let e=t.querySelector(`.prb-card-status`);e&&(e.dataset.status=n,e.textContent=te(n));let i=t.querySelector(`[data-mark-status]`);i&&(i.dataset.markStatus=r,i.textContent=Se(r))}}async function mt(e,t){try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:[e],complete:t})})).ok)return}catch{return}pt(f.filter(t=>t.dataset.id===e),t),N()}async function ht(e,t){let n;try{let r=await fetch(`/lifecycle`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,state:t})});n=r.ok?await r.json().catch(()=>null):null}catch{n=null}if(!n)return!1;let r=new Set(e);for(let e of f)r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),J(e));return L(n.queue),N(),!0}function J(e){let{stored:t,activity:n}=Ge(e),i=e.querySelector(`[data-lifecycle-chip]`);if(i){let r=he(Ke(e),t,n);i.textContent=r??``,i.hidden=r===void 0}for(let i of e.querySelectorAll(`[data-lifecycle-set]`)){let e=i.dataset.lifecycleSet;i.hidden=!c(e,t,n),i.textContent=r(e,t,n)}}async function gt(e){let t=[...D];if(t.length===0)return;q(!0);let n=await ht(t,e);if(q(!1),!n)return K(`That could not be saved. The workspace server refused it or did not answer.`);V(!1)}async function _t(){let e=[...D];if(e.length===0)return;q(!0);let t=null;try{let n=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e})});if(t=n.ok?await n.json().catch(()=>null):null,!t)return q(!1),H(),K(`Nothing was deleted. The workspace server refused it.`)}catch{return q(!1),H(),K(`The workspace server did not answer. It may have stopped.`)}let n=t.blocked??[],r=new Set(n.map(e=>e.id));for(let e of G())r.has(e.dataset.id??``)||e.remove();f=f.filter(e=>e.isConnected),D.clear();for(let e of r)D.add(e);if(q(!1),H(),n.length===0)return V(!1);N(),K([...new Set(n.map(e=>e.error))].join(` `))}async function vt(){let e=G().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;q(!0);let t=null;try{let n=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,action:`add`})});t=n.ok?await n.json().catch(()=>null):null}catch{return q(!1),H(),K(`The workspace server did not answer. It may have stopped.`)}if(!t?.queue)return q(!1),H(),K(`Nothing was added. The workspace server refused it.`);L(t.queue);let n=t.refused??[];D.clear();for(let e of n)D.add(e.id);if(q(!1),H(),n.length===0)return V(!1);N(),K([...new Set(n.map(e=>e.error))].join(` `))}x?.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-bulk-queue]`))return void vt();let n=t.closest(`[data-bulk-mark]`);if(n)return void ft(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void gt(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){Ye&&(Ye.textContent=se(dt())),C&&(C.hidden=!0),S&&(S.hidden=!1);return}if(t.closest(`[data-bulk-confirm-delete]`))return void _t();if(t.closest(`[data-bulk-cancel-delete]`))return H();if(t.closest(`[data-bulk-cancel]`))return V(!1)}),oe(window,()=>window.location.reload());var Y=`prb-fetch-summary`;function X(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function yt(e){return Ae(X(e),A)}function bt(){for(let e of f){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!Oe(A,X([e])))}}async function xt(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;A=(await e.json()).targets??{}}catch{return}bt(),N()}async function St(e,t){let n=yt(e);if(M||n.repositories===0)return;M=!0;let r=[k,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=Ee(n.repositories));let i=null;try{let e=await fetch(`/fetch-updates`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:n.ids})});e.ok&&(i=await e.json())}catch{}M=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Me),N();let a=i??{repositories:n.repositories,fetched:0,failed:[],moved:0},o={kind:a.fetched<a.repositories?`failed`:`ready`,text:De(a)};if(a.moved>0||Q){try{window.sessionStorage.setItem(Y,JSON.stringify(o))}catch{}if(!wt())return void window.location.reload();Q=!0}fe(_e(),o)}try{let e=window.sessionStorage.getItem(Y);if(e){window.sessionStorage.removeItem(Y);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&fe(_e(),{kind:t.kind,text:t.text})}}catch{}k?.addEventListener(`click`,()=>void St(G(),k)),xt();var Ct=document.body.dataset.indexRevision??``,Z=document.body.dataset.live===`true`?Date.now():0,Q=!1;function wt(){return D.size>0||document.activeElement===m||M||ut.isOpen()||at}function $(){Q&&!wt()&&window.location.reload()}async function Tt(){try{let e=await fetch(`/revision`);if(e.ok){ve(document,!0);let t=await e.json();ge(document,t),t.live&&Z===0&&(Z=Date.now()),t.live||(Z=0);let n=me(Ct,t.revision??``,wt());if(n===`reload`)return void window.location.reload();n===`hold`&&(Q=!0)}}catch{ve(document,!1)}window.setTimeout(()=>void Tt(),ke(Z===0?2**53-1:Date.now()-Z))}Tt(),m?.addEventListener(`blur`,$),document.addEventListener(`click`,()=>window.setTimeout($,0)),ce();
|
|
1
|
+
import{A as e,C as t,D as n,F as r,G as i,H as a,J as o,K as s,L as c,M as ee,N as te,O as ne,P as re,S as l,T as ie,V as ae,Y as oe,_ as se,a as ce,b as le,g as ue,h as de,i as fe,j as pe,k as me,m as he,n as ge,o as _e,p as u,s as ve,t as ye,u as be,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-CXf6hwXL.js";import{a as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./chunk-CndkgJPh.js";import{t as Ne}from"./chunk-BadSI8AL.js";function Pe(e,t){t.forEach((t,n)=>{e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)})}async function Fe(e,t,n){if(e.disabled)return;let r=e.getAttribute(`aria-pressed`)!==`true`;Ie(e,r),e.disabled=!0;let i=await t(r).catch(()=>!1);if(e.disabled=!1,!i)return Ie(e,!r);n(r)}function Ie(e,t){e.setAttribute(`aria-pressed`,String(t)),e.innerHTML=t?`★`:`☆`,e.setAttribute(`aria-label`,`${t?`Unpin`:`Pin`} this review`)}function Le(e,t){let n=e.parentElement?.querySelector(`[data-history-list]`);n&&(n.hidden=!t,e.setAttribute(`aria-expanded`,String(t)))}function Re(e,t,n,r){return{limits:n,expanded:t.filter(e=>e.querySelector(`[data-history-list]:not([hidden])`)).map(e=>e.dataset.id??``).filter(e=>e!==``),main:r?.scrollTop??0,focus:a(e.activeElement,e.body)}}function ze(e,t){let n=e?.limits;if(!n||typeof n!=`object`)return t;let r={...t};for(let e of u){let t=n[e];typeof t==`number`&&Number.isInteger(t)&&t>r[e]&&(r[e]=t)}return r}function Be(e,t,n){if(!t)return;n.reveal(ze(t,n.limits));let r=new Set(o(t,`expanded`));for(let e of n.cards){let t=e.querySelector(`[data-history-toggle]`);t&&r.has(e.dataset.id??``)&&Le(t,!0)}let a=i(t,`main`);n.pane&&a!==null&&(n.pane.scrollTop=a),s(e,t.focus)}function Ve(e,n){let r=Promise.resolve();for(let i of e){let e=i.dataset.section;if(!t(e))continue;let a=i.open;i.addEventListener(`toggle`,()=>{if(i.open===a)return;a=i.open;let t=!i.open;r=r.then(()=>n(e,t)).catch(()=>{})})}}var d=ae({ownsRestore:!0});ye(`/restart`);var f=[...document.querySelectorAll(`[data-card]`)].sort((e,t)=>Number(e.dataset.rank)-Number(t.dataset.rank)),He=Object.fromEntries(u.map(e=>[e,document.querySelector(`[data-cards="${e}"]`)])),p=document.querySelector(`.prb-index`);function Ue(e){return{id:e.dataset.id??``,queue:e.dataset.queue===void 0?void 0:Number(e.dataset.queue),status:e.dataset.status??`new`,prState:e.dataset.prState}}var m=document.querySelector(`[data-search]`),h=document.querySelector(`[data-status-filter]`),g=document.querySelector(`[data-author-filter]`),_=document.querySelector(`[data-pr-filter]`),We=document.querySelector(`[data-no-matches]`),v=document.querySelector(`[data-count]`),y=l();function Ge(e){return{stored:Te({state:e.dataset.lifecycle,at:Number(e.dataset.lifecycleAt)}),activity:re(e.dataset)??{at:0,kind:`created`}}}function Ke(e){return e.dataset.pinned===`true`}function b(e){let{stored:t,activity:n}=Ge(e);return Ce(Ke(e),t,n,E.filter)}var x=document.querySelector(`[data-bulk]`),qe=document.querySelector(`[data-bulk-count]`),Je=document.querySelector(`[data-bulk-delete]`),Ye=document.querySelector(`[data-bulk-question]`),S=document.querySelector(`[data-bulk-confirm]`),C=document.querySelector(`[data-bulk-actions]`),w=document.querySelector(`[data-bulk-error]`),T=document.querySelector(`[data-bulk-select-all]`),E=ie(window.location.hash),D=new Set,O=!1,k=document.querySelector(`[data-bulk-fetch]`),A={},j=[],M=!1;function N(){let t=E.query.trim().toLowerCase();E.author!==``&&![...g?.options??[]].some(e=>e.value===E.author)&&(E.author=``);let n=le(xe(f.map(e=>({...Ue(e),searchText:e.dataset.searchText??``,author:e.dataset.author,card:e})),{...E,query:t}).map(e=>e.card),b);j=n;let r=e(n,b,y),i=new Set(u.flatMap(e=>r[e].shown));for(let e of f)e.hidden=!i.has(e);for(let e of u){let t=He[e];t&&Pe(t,r[e].shown);let n=document.querySelector(`[data-load-more="${e}"]`);n&&(n.hidden=r[e].total<=r[e].shown.length);let i=document.querySelector(`[data-section="${e}"]`);i&&(i.hidden=r[e].total===0);let a=i?.querySelector(`[data-section-count]`);a&&(a.textContent=String(r[e].total))}if(m&&m.value!==E.query&&(m.value=E.query),g&&(g.value=E.author,E.author===``?delete g.dataset.active:g.dataset.active=``),_||(E.pr=`any`),_&&(_.value=E.pr,E.pr===`any`?delete _.dataset.active:_.dataset.active=``),h&&(h.value=E.filter,E.filter===`all`?delete h.dataset.active:h.dataset.active=``),v){let e=n.reduce((e,t)=>e+Number(t.dataset.reviews??1),0);v.textContent=de(e,n.length)}We&&(We.hidden=n.length>0||f.length===0),tt(n)}var Xe=300,P=null;function F(){P!==null&&window.clearTimeout(P),P=null,d.replace(we(E),{})}function I(e,t){if(E={...E,...e},y=l(),N(),t===`now`)return F();P!==null&&window.clearTimeout(P),P=window.setTimeout(F,Xe)}window.addEventListener(`pagehide`,()=>{P!==null&&F()}),document.addEventListener(`click`,e=>{P!==null&&e.target?.closest?.(`a[href]`)&&F()},!0),m?.addEventListener(`input`,()=>I({query:m.value},`settled`)),m?.addEventListener(`keydown`,e=>{e.key===`Escape`&&m.value!==``&&(e.preventDefault(),I({query:``},`now`))}),h?.addEventListener(`change`,()=>{I({filter:h.value},`now`)}),g?.addEventListener(`change`,()=>{I({author:g.value},`now`)}),_?.addEventListener(`change`,()=>{I({pr:_.value},`now`)}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-load-more]`)?.dataset.loadMore;!t||!u.includes(t)||(y={...y,[t]:y[t]+15},N())});for(let e of[`popstate`,`hashchange`])window.addEventListener(e,()=>{E=ie(window.location.hash),y=l(),N(),Qe()});document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-pin]`);if(!t?.dataset.pin)return;e.preventDefault(),e.stopPropagation();let n=t.dataset.pin;Fe(t,e=>fetch(`/pin`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,pinned:e})}).then(e=>e.ok),e=>{let n=t.closest(`[data-card]`);n&&(n.dataset.pinned=String(e),J(n),N())})});async function Ze(e,t){let n;try{let r=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:e,action:t})});if(!r.ok)return;n=(await r.json()).queue}catch{return}L(n),N()}function L(e){let t=new Map(e.map((e,t)=>[e,t]));for(let e of f){let n=t.get(e.dataset.id??``);n===void 0?delete e.dataset.queue:e.dataset.queue=String(n),n!==void 0&&e.dataset.lifecycle!==`active`&&(e.dataset.lifecycle=`active`,delete e.dataset.lifecycleAt,J(e))}for(let e of document.querySelectorAll(`[data-queue-action][data-queue-id]`)){let r=t.has(e.dataset.queueId??``);e.dataset.queueAction=r?`remove`:`add`,e.textContent=n(r)}let r=document.querySelector(`[data-queue-option]`);r&&(r.textContent=ne(e.length))}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-history-toggle]`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.parentElement?.querySelector(`[data-history-list]`);n&&Le(t,n.hidden!==!1)});var R=document.querySelector(`.prb-shell > main`);function Qe(){Be(document,d.current().ui,{cards:f,pane:R,limits:y,reveal:e=>{y=e,N()}})}d.setCapturer(()=>Re(document,f,y,R)),N(),Qe();function z(e){for(let t of document.querySelectorAll(`[data-menu]`)){if(t===e)continue;let n=t.querySelector(`[data-menu-panel]`),r=t.querySelector(`[data-menu-trigger]`);n&&(n.hidden=!0),r?.setAttribute(`aria-expanded`,`false`),B(t)}}function B(e){let t=e.querySelector(`[data-menu-items]`),n=e.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!1),n&&(n.hidden=!0),e.querySelector(`[data-menu-error]`)?.remove(),e.querySelector(`[data-id-field]`)?.remove()}document.addEventListener(`keydown`,e=>{e.key===`Escape`&&z()}),document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-menu]`);if(!n)return void z();let r=t.closest(`[data-menu-trigger]`);if(r){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-panel]`);if(!t)return;let i=t.hidden;z(n),B(n),t.hidden=!i,r.setAttribute(`aria-expanded`,String(i));return}let i=t.closest(`[data-copy-id]`);if(i?.dataset.copyId){e.preventDefault(),e.stopPropagation(),je(i,i.dataset.copyId);return}let a=t.closest(`[data-fetch-review]`);if(a?.dataset.fetchReview){e.preventDefault(),e.stopPropagation(),z();let t=a.closest(`[data-card]`);t&&St([t]);return}let o=t.closest(`[data-mark-status]`);if(o?.dataset.markId){e.preventDefault(),e.stopPropagation(),z(),mt(o.dataset.markId,o.dataset.markStatus===`complete`);return}let s=t.closest(`[data-lifecycle-set]`);if(s?.dataset.lifecycleId){e.preventDefault(),e.stopPropagation(),z(),ht([s.dataset.lifecycleId],s.dataset.lifecycleSet);return}let c=t.closest(`[data-queue-action]`);if(c?.dataset.queueId){e.preventDefault(),e.stopPropagation(),z(),Ze(c.dataset.queueId,c.dataset.queueAction===`remove`?`remove`:`add`);return}if(t.closest(`[data-delete]`)){e.preventDefault(),e.stopPropagation();let t=n.querySelector(`[data-menu-items]`),r=n.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!0),r&&(r.hidden=!1);return}if(t.closest(`[data-cancel-delete]`)){e.preventDefault(),e.stopPropagation(),B(n);return}if(t.closest(`[data-confirm-delete]`)){e.preventDefault(),e.stopPropagation(),$e(n);return}e.preventDefault(),e.stopPropagation()});async function $e(e){let t=e.querySelector(`[data-delete]`),n=t?.dataset.delete;if(!n)return;let r=e.querySelector(`[data-menu-confirm]`),i=e.querySelector(`[data-confirm-delete]`);i&&(i.disabled=!0,i.textContent=`Deleting`);try{let r=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:n,scope:t?.dataset.scope??`review`})});if(r.ok)return void window.location.reload();et(e,(await r.json().catch(()=>null))?.error??`That could not be deleted.`)}catch{et(e,`The workspace server did not answer. It may have stopped.`)}i&&(i.disabled=!1,i.textContent=`Delete`),r&&(r.hidden=!0);let a=e.querySelector(`[data-menu-items]`);a&&(a.hidden=!1)}function et(e,t){e.querySelector(`[data-menu-error]`)?.remove();let n=document.createElement(`p`);n.className=`prb-menu-error`,n.setAttribute(`data-menu-error`,``),n.textContent=t,e.querySelector(`[data-menu-panel]`)?.append(n)}function V(e){O=e,e||D.clear(),p&&(e?p.dataset.selecting=``:delete p.dataset.selecting),document.querySelector(`[data-select-mode]`)?.setAttribute(`aria-pressed`,String(e));for(let t of document.querySelectorAll(`.prb-card-link`))e?t.setAttribute(`aria-disabled`,`true`):t.removeAttribute(`aria-disabled`);H(),N()}function H(){S&&(S.hidden=!0),C&&(C.hidden=!1),w&&(w.hidden=!0,w.textContent=``)}function tt(e){for(let e of f){let t=D.has(e.dataset.id??``),n=e.querySelector(`[data-select]`);n&&(n.checked=t),t?e.dataset.selected=``:delete e.dataset.selected}if(!x||(x.hidden=!O,!O))return;let t=new Set(e.filter(nt).map(e=>e.dataset.id)),n=[...D].filter(e=>!t.has(e)).length;qe&&(qe.textContent=ee(D.size,n)),T&&(T.textContent=pe(e.length),T.disabled=e.every(e=>D.has(e.dataset.id??``))),Je&&(Je.textContent=ue(dt()));for(let e of x.querySelectorAll(`[data-bulk-mark], [data-bulk-lifecycle], [data-bulk-queue], [data-bulk-delete]`))e.disabled=D.size===0;k&&(k.hidden=!Oe(A,X(G())))}function nt(e){return!e.hidden&&e.closest(`details`)?.open!==!1}for(let e of document.querySelectorAll(`details[data-section]`))e.addEventListener(`toggle`,()=>tt(j));Ve(document.querySelectorAll(`details[data-section]`),(e,t)=>fetch(`/sections`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({section:e,collapsed:t})})),document.querySelector(`[data-select-mode]`)?.addEventListener(`click`,()=>{V(!O)}),T?.addEventListener(`click`,()=>{for(let e of j)e.dataset.id&&D.add(e.dataset.id);H(),N()});function U(e){D.has(e)?D.delete(e):D.add(e),H(),N()}document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-select]`);t?.dataset.select&&U(t.dataset.select)}),document.addEventListener(`click`,e=>{if(!O)return;let t=e.target,n=t.closest(`[data-card]`);n?.dataset.id&&(t.closest(`[data-select], [data-pin], [data-menu], [data-history-toggle]`)||(e.preventDefault(),U(n.dataset.id)))}),document.addEventListener(`keydown`,e=>{if(!O||e.key!==`Enter`)return;let t=e.target.closest(`.prb-card-link`)?.closest(`[data-card]`);t?.dataset.id&&(e.preventDefault(),U(t.dataset.id))});var W=Ne({doc:document,item:`[data-card]`,link:`.prb-card-link`,walk:()=>j.filter(nt),enterAllowed:()=>!O,background:()=>R,leadIn:e=>[...e.closest(`[data-cards]`)?.querySelectorAll(`[data-card]:not([hidden])`)??[]][0]===e?e.closest(`details[data-section]`)?.querySelector(`summary`)??null:null}),rt=8;function it(e){let t=e.querySelector(`.prb-card-link`);t&&(t.focus({preventScroll:!0}),document.activeElement!==t&&document.activeElement?.blur(),P!==null&&F(),d.leaving(),at=!0,window.location.assign(t.href))}var at=!1,ot={title:`Search reviews`,mount(e,t){let n=document.createElement(`input`);n.type=`search`,n.className=`prb-palette-input`,n.placeholder=m?.placeholder??``,n.setAttribute(`aria-label`,`Search reviews`),n.spellcheck=!1,n.value=m?.value??``;let r=document.createElement(`p`);r.className=`prb-palette-summary`,r.setAttribute(`aria-live`,`polite`);let i=document.createElement(`div`);i.className=`prb-palette-results`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-label`,`Matching reviews`);let a=()=>{let e=j.slice(0,rt);i.replaceChildren(...e.map(e=>{let t=document.createElement(`button`);t.type=`button`,t.className=`prb-palette-result`,t.dataset.resultId=e.dataset.id??``;let n=document.createElement(`span`);n.className=`prb-palette-result-title`,n.textContent=e.querySelector(`.prb-card-head h2`)?.textContent??``;let r=document.createElement(`span`);return r.className=`prb-palette-result-where`,r.textContent=[e.querySelector(`.prb-card-repo`)?.textContent,e.querySelector(`.prb-card-branch`)?.textContent].filter(Boolean).join(` · `),t.append(n,r),t})),r.textContent=j.length===0?`No reviews match.`:j.length>e.length?`The first ${e.length} of ${v?.textContent??j.length}`:v?.textContent??``},o=()=>[...i.querySelectorAll(`.prb-palette-result`)],s=e=>{let n=f.find(t=>t.dataset.id===e?.dataset.resultId);n&&(t(),it(n))};n.addEventListener(`input`,()=>{m&&(m.value=n.value,m.dispatchEvent(new Event(`input`,{bubbles:!0})),a())}),i.addEventListener(`click`,e=>s(e.target.closest(`.prb-palette-result`)??void 0)),e.addEventListener(`keydown`,e=>{if(e.isComposing)return;let t=o(),r=t.indexOf(e.target);if(e.key===`Enter`&&e.target===n)return e.preventDefault(),s(t[0]);let i=e.key===`ArrowDown`?r<0?t[0]:t[r+1]:e.key===`ArrowUp`?r<=0?n:t[r-1]:null;i&&(e.preventDefault(),i.focus())}),e.append(n,r,i),a(),n.focus(),n.select()}},st={title:`Filters`,mount(e){let t=document.createElement(`p`);t.className=`prb-palette-summary`,t.setAttribute(`aria-live`,`polite`);let n=()=>{t.textContent=v?.textContent??``},r=[h,g,_].flatMap(e=>{if(!e)return[];let t=document.createElement(`label`);t.className=`prb-palette-field`;let r=document.createElement(`span`),i=(e.getAttribute(`aria-label`)??``).replace(/^Filter by /,``);r.textContent=i.charAt(0).toUpperCase()+i.slice(1);let a=document.createElement(`select`);for(let t of e.options)a.append(new Option(t.text,t.value));return a.value=e.value,a.addEventListener(`change`,()=>{e.value=a.value,e.dispatchEvent(new Event(`change`,{bubbles:!0})),n()}),t.append(r,a),[t]});e.append(...r,t),n(),r[0]?.querySelector(`select`)?.focus()}};function ct(e){let t=()=>document.querySelector(`details[data-section="${e}"]`);return{available:()=>!!(t()&&!t().hidden),state:()=>{let e=t();return e&&!e.hidden?e.open?`Expanded`:`Collapsed`:null},run:()=>{let e=t();e&&(e.open=!e.open)}}}var lt=Object.fromEntries(u.map(e=>[`reviews.section.${e}`,ct(e)])),ut=be(`reviews`,{...lt,"reviews.search":{available:()=>m!==null,panel:ot},"reviews.filters":{available:()=>h!==null,panel:st},"reviews.next":{run:()=>W.move(1)},"reviews.previous":{run:()=>W.move(-1)},"reviews.open":{available:()=>W.enterOpens(),run:()=>W.open()},"reviews.openInNewTab":{available:()=>W.enterOpens(),run:()=>W.openInNewTab()}},{onOpen:()=>z(),onSettle:()=>$()});function G(){return le(f.filter(e=>D.has(e.dataset.id??``)),b)}function dt(){return G().reduce((e,t)=>e+Number(t.dataset.reviews??1),0)}function K(e){w&&(w.textContent=e,w.hidden=!1)}function q(e){for(let t of x?.querySelectorAll(`button`)??[])t.disabled=e}async function ft(e){let t=[...D];if(t.length!==0){q(!0);try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:t,complete:e})})).ok)return q(!1),K(`That could not be saved. The workspace server refused it.`)}catch{return q(!1),K(`The workspace server did not answer. It may have stopped.`)}pt(G(),e),q(!1),V(!1)}}function pt(e,t){let n=t?`complete`:`in-progress`,r=t?`in-progress`:`complete`;for(let t of e){t.dataset.status=n;let e=t.querySelector(`.prb-card-status`);e&&(e.dataset.status=n,e.textContent=te(n));let i=t.querySelector(`[data-mark-status]`);i&&(i.dataset.markStatus=r,i.textContent=Se(r))}}async function mt(e,t){try{if(!(await fetch(`/status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:[e],complete:t})})).ok)return}catch{return}pt(f.filter(t=>t.dataset.id===e),t),N()}async function ht(e,t){let n;try{let r=await fetch(`/lifecycle`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,state:t})});n=r.ok?await r.json().catch(()=>null):null}catch{n=null}if(!n)return!1;let r=new Set(e);for(let e of f)r.has(e.dataset.id??``)&&(e.dataset.lifecycle=t,t===`active`?delete e.dataset.lifecycleAt:e.dataset.lifecycleAt=String(n.at),J(e));return L(n.queue),N(),!0}function J(e){let{stored:t,activity:n}=Ge(e),i=e.querySelector(`[data-lifecycle-chip]`);if(i){let r=he(Ke(e),t,n);i.textContent=r??``,i.hidden=r===void 0}for(let i of e.querySelectorAll(`[data-lifecycle-set]`)){let e=i.dataset.lifecycleSet;i.hidden=!c(e,t,n),i.textContent=r(e,t,n)}}async function gt(e){let t=[...D];if(t.length===0)return;q(!0);let n=await ht(t,e);if(q(!1),!n)return K(`That could not be saved. The workspace server refused it or did not answer.`);V(!1)}async function _t(){let e=[...D];if(e.length===0)return;q(!0);let t=null;try{let n=await fetch(`/delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e})});if(t=n.ok?await n.json().catch(()=>null):null,!t)return q(!1),H(),K(`Nothing was deleted. The workspace server refused it.`)}catch{return q(!1),H(),K(`The workspace server did not answer. It may have stopped.`)}let n=t.blocked??[],r=new Set(n.map(e=>e.id));for(let e of G())r.has(e.dataset.id??``)||e.remove();f=f.filter(e=>e.isConnected),D.clear();for(let e of r)D.add(e);if(q(!1),H(),n.length===0)return V(!1);N(),K([...new Set(n.map(e=>e.error))].join(` `))}async function vt(){let e=G().map(e=>e.dataset.id??``).filter(Boolean);if(e.length===0)return;q(!0);let t=null;try{let n=await fetch(`/queue`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:e,action:`add`})});t=n.ok?await n.json().catch(()=>null):null}catch{return q(!1),H(),K(`The workspace server did not answer. It may have stopped.`)}if(!t?.queue)return q(!1),H(),K(`Nothing was added. The workspace server refused it.`);L(t.queue);let n=t.refused??[];D.clear();for(let e of n)D.add(e.id);if(q(!1),H(),n.length===0)return V(!1);N(),K([...new Set(n.map(e=>e.error))].join(` `))}x?.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-bulk-queue]`))return void vt();let n=t.closest(`[data-bulk-mark]`);if(n)return void ft(n.dataset.bulkMark===`complete`);let r=t.closest(`[data-bulk-lifecycle]`);if(r)return void gt(r.dataset.bulkLifecycle);if(t.closest(`[data-bulk-delete]`)){Ye&&(Ye.textContent=se(dt())),C&&(C.hidden=!0),S&&(S.hidden=!1);return}if(t.closest(`[data-bulk-confirm-delete]`))return void _t();if(t.closest(`[data-bulk-cancel-delete]`))return H();if(t.closest(`[data-bulk-cancel]`))return V(!1)}),oe(window,()=>window.location.reload());var Y=`prb-fetch-summary`;function X(e){return e.map(e=>({lineage:(e.dataset.lineage??e.dataset.id??``).split(` `).filter(Boolean)}))}function yt(e){return Ae(X(e),A)}function bt(){for(let e of f){let t=e.querySelector(`[data-fetch-review]`);t&&(t.hidden=!Oe(A,X([e])))}}async function xt(){try{let e=await fetch(`/fetch-updates`);if(!e.ok)return;A=(await e.json()).targets??{}}catch{return}bt(),N()}async function St(e,t){let n=yt(e);if(M||n.repositories===0)return;M=!0;let r=[k,...document.querySelectorAll(`[data-fetch-review]`)];for(let e of r)e&&(e.disabled=!0);t&&(t.textContent=Ee(n.repositories));let i=null;try{let e=await fetch(`/fetch-updates`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({ids:n.ids})});e.ok&&(i=await e.json())}catch{}M=!1;for(let e of r)e&&(e.disabled=!1);t&&(t.textContent=Me),N();let a=i??{repositories:n.repositories,fetched:0,failed:[],moved:0},o={kind:a.fetched<a.repositories?`failed`:`ready`,text:De(a)};if(a.moved>0||Q){try{window.sessionStorage.setItem(Y,JSON.stringify(o))}catch{}if(!wt())return void window.location.reload();Q=!0}fe(_e(),o)}try{let e=window.sessionStorage.getItem(Y);if(e){window.sessionStorage.removeItem(Y);let t=JSON.parse(e);typeof t.kind==`string`&&typeof t.text==`string`&&fe(_e(),{kind:t.kind,text:t.text})}}catch{}k?.addEventListener(`click`,()=>void St(G(),k)),xt();var Ct=document.body.dataset.indexRevision??``,Z=document.body.dataset.live===`true`?Date.now():0,Q=!1;function wt(){return D.size>0||document.activeElement===m||M||ut.isOpen()||at}function $(){Q&&!wt()&&window.location.reload()}async function Tt(){try{let e=await fetch(`/revision`);if(e.ok){ve(document,!0);let t=await e.json();ge(document,t),t.live&&Z===0&&(Z=Date.now()),t.live||(Z=0);let n=me(Ct,t.revision??``,wt());if(n===`reload`)return void window.location.reload();n===`hold`&&(Q=!0)}}catch{ve(document,!1)}window.setTimeout(()=>void Tt(),ke(Z===0?2**53-1:Date.now()-Z))}Tt(),m?.addEventListener(`blur`,$),document.addEventListener(`click`,()=>window.setTimeout($,0)),ce();
|
package/static/settings.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as e,Y as t,a as n,c as r,t as i,u as a}from"./chunk-
|
|
1
|
+
import{V as e,Y as t,a as n,c as r,t as i,u as a}from"./chunk-CXf6hwXL.js";function o(e,t){if(e===``)return null;try{let n=new URL(e);return n.origin===t&&/^\/r\/[^/]+$/.test(n.pathname)?n.href:null}catch{return null}}function s(e){let t=[...document.querySelectorAll(`[data-shutdown]`)],n=document.querySelector(`[data-shutdown-dialog]`),r=document.querySelector(`[data-shutdown-confirm]`);for(let e of t)e.addEventListener(`click`,()=>n?.showModal());document.querySelector(`[data-shutdown-cancel]`)?.addEventListener(`click`,()=>n?.close()),r?.addEventListener(`click`,()=>{r.disabled=!0,r.textContent=`Stopping…`,fetch(e,{method:`POST`}).then(e=>{if(!e.ok)throw Error(`Shutdown refused: ${e.status}`);n?.close(),c(t)}).catch(()=>{r.disabled=!1,r.textContent=`Stop server`})})}function c(e){document.body.dataset.serverStopped=`true`,r(document,`unreachable`);let t=document.createElement(`div`);t.className=`prb-stopped-notice`,t.setAttribute(`role`,`status`);let n=document.body.dataset.wayBack;t.textContent=n?`Workspace server stopped. This page is no longer being served. Run ${n} to bring it back.`:`Workspace server stopped. This page is no longer being served.`,document.body.prepend(t);for(let t of e)t.disabled=!0,t.classList.contains(`prb-strip-action`)||(t.textContent=`Server stopped`)}var l=[{id:`system`,label:`System`,help:`Follow your device setting`},{id:`light`,label:`Light`,help:`Always use light mode`},{id:`dark`,label:`Dark`,help:`Always use dark mode`}];function u(e){return l.some(t=>t.id===e)}function d(e){let t=e.querySelector(`[data-settings-theme]:checked`)?.value;return u(t)?t:void 0}function f(e,t){e.documentElement.dataset.theme=t}function p(e){for(let t of e.querySelectorAll(`[data-settings-theme]`))t.addEventListener(`change`,()=>{let t=d(e);t&&f(e,t)})}s(`/shutdown`),e(),a(`global`,{}),i(`/restart`);function m(){let e=document.querySelector(`[data-settings-back]`),t=o(document.referrer,window.location.origin);if(!e||t===null)return;e.href=t,e.textContent=``;let n=document.createElement(`span`);n.setAttribute(`aria-hidden`,`true`),n.textContent=`‹`,e.append(n,` Back to the review`)}m(),p(document);var h=document.querySelector(`[data-settings-save]`),g=document.querySelector(`[data-settings-status]`),_=document.querySelector(`[data-settings-port]`),v=document.querySelector(`[data-settings-port-error]`),y=document.querySelector(`[data-settings-agent]`);function b(){let e=document.querySelector(`[data-settings-usage]:checked`);return e?e.value===`on`:void 0}function x(e,t){g&&(g.textContent=e,g.dataset.kind=t)}function S(e){v&&(v.textContent=e??``),_&&(e?(_.setAttribute(`aria-invalid`,`true`),_.focus(),_.select()):_.removeAttribute(`aria-invalid`))}async function C(){if(!h)return;let e=b(),t=d(document),n={..._?{port:_.value.trim()}:{},...y?{agent:y.value}:{},...e===void 0?{}:{usageCounts:e},...t===void 0?{}:{theme:t}};h.disabled=!0,h.textContent=`Saving`;try{let e=await(await fetch(`/settings`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)})).json().catch(()=>null);if(!e){x(`Nothing was saved. The workspace server did not answer.`,`error`);return}if(e.error){S(e.error),x(`Nothing was saved.`,`error`);return}S(null),_&&(_.value=String(e.port.configured)),f(document,e.theme),x(e.restartRequired?`Saved. This page is served on port ${e.port.current}; the workspace moves to ${e.port.configured} the next time it starts.`:`Saved.`,`saved`)}catch{x(`Nothing was saved. The workspace server could not be reached.`,`error`)}finally{h.disabled=!1,h.textContent=`Save changes`}}h?.addEventListener(`click`,()=>void C()),n(),t(window,()=>window.location.reload());
|
package/static/shell.css
CHANGED
|
@@ -3139,25 +3139,9 @@ a.prb-guide-pick { text-decoration: none; }
|
|
|
3139
3139
|
font-size: var(--t-body);
|
|
3140
3140
|
}
|
|
3141
3141
|
.prb-index-search:focus { outline: none; border-color: var(--brand); }
|
|
3142
|
-
.
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
padding: 7px 32px 7px 10px;
|
|
3146
|
-
border: 1px solid var(--border);
|
|
3147
|
-
border-radius: 8px;
|
|
3148
|
-
background-color: var(--surface-2);
|
|
3149
|
-
color: var(--text-primary);
|
|
3150
|
-
font: inherit;
|
|
3151
|
-
font-size: var(--t-meta);
|
|
3152
|
-
cursor: pointer;
|
|
3153
|
-
}
|
|
3154
|
-
.prb-index-author:hover { border-color: var(--border-strong); }
|
|
3155
|
-
.prb-index-author:focus-visible { outline: none; border-color: var(--brand); }
|
|
3156
|
-
/* Filled like a pressed pill once it narrows the list, so a filtered view is never mistaken for all of it. */
|
|
3157
|
-
.prb-index-author[data-active] { border-color: var(--brand); background-color: var(--brand); color: var(--on-brand); }
|
|
3158
|
-
/* Status: one control where five chips were. The box is the label, so "Status:" reads as part of the
|
|
3159
|
-
control rather than a caption beside it; the select inside is bare and carries the chevron. Same
|
|
3160
|
-
border, radius, height and fill-when-narrowing as the author filter beside it. */
|
|
3142
|
+
/* Review state: one control where five chips were. The box is the label, so "Review state:" reads
|
|
3143
|
+
as part of the control rather than a caption beside it; the select inside is bare and carries the
|
|
3144
|
+
chevron. Author and PR are the same control. */
|
|
3161
3145
|
.prb-index-status {
|
|
3162
3146
|
display: flex;
|
|
3163
3147
|
align-items: center;
|
|
@@ -3183,6 +3167,9 @@ a.prb-guide-pick { text-decoration: none; }
|
|
|
3183
3167
|
.prb-index-status select:focus-visible { outline: none; }
|
|
3184
3168
|
.prb-index-status:has(select[data-active]) { border-color: var(--brand); background-color: var(--brand); color: var(--on-brand-quiet); }
|
|
3185
3169
|
.prb-index-status select[data-active] { color: var(--on-brand); }
|
|
3170
|
+
/* The GitHub mark on Author and PR. currentColor, so it is muted beside "Author:" at rest and goes
|
|
3171
|
+
light with it once the filter fills. */
|
|
3172
|
+
.prb-index-forge-mark { flex: none; margin-right: 6px; }
|
|
3186
3173
|
|
|
3187
3174
|
.prb-cards {
|
|
3188
3175
|
display: flex;
|
|
@@ -5212,7 +5199,6 @@ span.prb-arch-location:hover { text-decoration: none; }
|
|
|
5212
5199
|
*
|
|
5213
5200
|
* Both selects in the workspace are listed here rather than each carrying its own copy: it is one
|
|
5214
5201
|
* control with two sizes, and a caret that differed between them would be a bug nobody could name. */
|
|
5215
|
-
.prb-index-author,
|
|
5216
5202
|
.prb-index-status select,
|
|
5217
5203
|
.prb-settings-field select {
|
|
5218
5204
|
appearance: none;
|
|
@@ -5223,7 +5209,6 @@ span.prb-arch-location:hover { text-decoration: none; }
|
|
|
5223
5209
|
background-size: 12px;
|
|
5224
5210
|
}
|
|
5225
5211
|
/* Filled purple, so the grey would disappear into it. */
|
|
5226
|
-
.prb-index-author[data-active],
|
|
5227
5212
|
.prb-index-status select[data-active] {
|
|
5228
5213
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
|
|
5229
5214
|
}
|
|
@@ -5811,7 +5796,7 @@ body .prb-body[data-focus]:not([data-focus='buddy']) .prb-ask-tab { top: 64px; }
|
|
|
5811
5796
|
font: 500 var(--t-micro) / 1 ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace;
|
|
5812
5797
|
white-space: nowrap;
|
|
5813
5798
|
}
|
|
5814
|
-
/* The same item reads "Mark
|
|
5799
|
+
/* The same item reads "Mark not reviewed" once a review is marked; the chord marks reviewed only. */
|
|
5815
5800
|
.prb-menu-item[data-mark-status='in-progress']::after { content: none; }
|
|
5816
5801
|
.prb-menu-item[data-shortcut-hint][hidden] { display: none; }
|
|
5817
5802
|
|
|
@@ -5891,3 +5876,185 @@ body .prb-body[data-focus]:not([data-focus='buddy']) .prb-ask-tab { top: 64px; }
|
|
|
5891
5876
|
font-size: var(--t-micro);
|
|
5892
5877
|
}
|
|
5893
5878
|
.prb-palette-prompt[data-enter-target] { background: var(--surface-2); }
|
|
5879
|
+
|
|
5880
|
+
/* ── Feedback selection ──
|
|
5881
|
+
Choosing the Issues and Questions to raise with the author. The checkboxes ship on every card
|
|
5882
|
+
and show only while the body carries the mode, so entering it is a stylesheet change, as the
|
|
5883
|
+
inbox's Select mode is. Quiet at rest: Select sits at the weight of the focus toggle beside it. */
|
|
5884
|
+
.pr-helper-feedback-pick { display: none; }
|
|
5885
|
+
.prb-body[data-feedback-selecting] .pr-helper-feedback-pick {
|
|
5886
|
+
display: block;
|
|
5887
|
+
flex: none;
|
|
5888
|
+
width: 16px;
|
|
5889
|
+
height: 16px;
|
|
5890
|
+
margin: 2px 0 0;
|
|
5891
|
+
accent-color: var(--pane-accent);
|
|
5892
|
+
cursor: pointer;
|
|
5893
|
+
}
|
|
5894
|
+
.prb-doc .prb-doc-head .prb-selection-toggle { align-self: center; margin-left: auto; }
|
|
5895
|
+
.prb-doc .prb-doc-head .prb-selection-toggle + .prb-focus-toggle { margin-left: -8px; }
|
|
5896
|
+
.prb-selection-toggle {
|
|
5897
|
+
padding: 3px 10px;
|
|
5898
|
+
border: 1px solid var(--pane-line);
|
|
5899
|
+
border-radius: 8px;
|
|
5900
|
+
background: transparent;
|
|
5901
|
+
color: var(--pane-ink-muted);
|
|
5902
|
+
font: inherit;
|
|
5903
|
+
font-size: var(--t-meta);
|
|
5904
|
+
cursor: pointer;
|
|
5905
|
+
}
|
|
5906
|
+
.prb-selection-toggle:hover { color: var(--pane-ink); border-color: var(--pane-ink-faint); }
|
|
5907
|
+
.prb-selection-toggle[aria-pressed="true"] {
|
|
5908
|
+
border-color: var(--pane-accent);
|
|
5909
|
+
background: var(--pane-accent);
|
|
5910
|
+
color: #fff;
|
|
5911
|
+
}
|
|
5912
|
+
/* Two faces, Choose feedback and Done, one shown by the pressed state. */
|
|
5913
|
+
.prb-selection-toggle :is(.prb-selection-toggle-idle, .prb-selection-toggle-active) { display: inline-flex; align-items: center; gap: 6px; }
|
|
5914
|
+
.prb-selection-toggle[aria-pressed="true"] .prb-selection-toggle-idle,
|
|
5915
|
+
.prb-selection-toggle:not([aria-pressed="true"]) .prb-selection-toggle-active { display: none; }
|
|
5916
|
+
/* At the foot of the pane, on the pane's own column. Sticky, so a selection made at the top of a
|
|
5917
|
+
long list is acted on from wherever the reader has scrolled to; and the pane is a column while
|
|
5918
|
+
selecting, so on a short list the tray sits at the foot rather than straight after the last card,
|
|
5919
|
+
halfway up the screen. The side margins are the pane's 32px padding, and on a wide pane the gap
|
|
5920
|
+
either side of its 860px column, so the tray's edges are the cards' edges. */
|
|
5921
|
+
.prb-body[data-feedback-selecting] .prb-doc { display: flex; flex-direction: column; }
|
|
5922
|
+
.prb-body[data-feedback-selecting] .prb-doc > .prb-pane { flex: 1 0 auto; width: 100%; }
|
|
5923
|
+
.prb-selection-tray {
|
|
5924
|
+
position: sticky;
|
|
5925
|
+
bottom: 16px;
|
|
5926
|
+
z-index: 3;
|
|
5927
|
+
display: flex;
|
|
5928
|
+
flex-wrap: wrap;
|
|
5929
|
+
align-items: center;
|
|
5930
|
+
gap: 8px;
|
|
5931
|
+
margin: auto max(32px, calc((100% - 796px) / 2)) 16px;
|
|
5932
|
+
padding: 10px 14px;
|
|
5933
|
+
border: 1px solid var(--pane-accent);
|
|
5934
|
+
border-radius: 12px;
|
|
5935
|
+
background: var(--pane-surface);
|
|
5936
|
+
box-shadow: 0 6px 20px rgba(15, 23, 42, 0.12);
|
|
5937
|
+
}
|
|
5938
|
+
.prb-selection-tray[hidden] { display: none; }
|
|
5939
|
+
.prb-selection-count {
|
|
5940
|
+
margin: 0;
|
|
5941
|
+
font-size: var(--t-meta);
|
|
5942
|
+
color: var(--pane-ink);
|
|
5943
|
+
font-weight: 600;
|
|
5944
|
+
}
|
|
5945
|
+
.prb-selection-goto {
|
|
5946
|
+
padding: 0;
|
|
5947
|
+
border: 0;
|
|
5948
|
+
background: none;
|
|
5949
|
+
color: var(--pane-accent-ink);
|
|
5950
|
+
font: inherit;
|
|
5951
|
+
font-weight: 400;
|
|
5952
|
+
cursor: pointer;
|
|
5953
|
+
}
|
|
5954
|
+
.prb-selection-goto[hidden] { display: none; }
|
|
5955
|
+
.prb-selection-sep { color: var(--pane-ink-faint); white-space: pre; }
|
|
5956
|
+
.prb-selection-goto:hover [data-feedback-goto-label] { text-decoration: underline; }
|
|
5957
|
+
.prb-selection-spacer { flex: 1; }
|
|
5958
|
+
.prb-selection-button {
|
|
5959
|
+
padding: 6px 12px;
|
|
5960
|
+
border: 1px solid var(--pane-line);
|
|
5961
|
+
border-radius: 8px;
|
|
5962
|
+
background: transparent;
|
|
5963
|
+
color: var(--pane-ink-muted);
|
|
5964
|
+
font: inherit;
|
|
5965
|
+
font-size: var(--t-meta);
|
|
5966
|
+
cursor: pointer;
|
|
5967
|
+
}
|
|
5968
|
+
.prb-selection-button:hover:not(:disabled) { color: var(--pane-ink); border-color: var(--pane-ink-faint); }
|
|
5969
|
+
.prb-selection-button:disabled { opacity: 0.5; cursor: default; }
|
|
5970
|
+
.prb-selection-primary { border-color: var(--pane-accent); background: var(--pane-accent); color: #fff; font-weight: 600; }
|
|
5971
|
+
.prb-selection-primary:hover:not(:disabled) { color: #fff; border-color: var(--pane-accent-ink); background: var(--pane-accent-ink); }
|
|
5972
|
+
/* "2 selected" under Issues or Questions in the rail: the selection is a place's contents too. */
|
|
5973
|
+
.prb-rail-selected { display: block; font-size: var(--t-micro); color: var(--text-muted); }
|
|
5974
|
+
.prb-rail-selected[hidden] { display: none; }
|
|
5975
|
+
/* The draft is read here, so it gets most of the window: 80% of it each way, a column of head, tabs,
|
|
5976
|
+
one scrolling panel and the actions, with only the panel scrolling. `[open]` because a closed
|
|
5977
|
+
dialog's own display:none must stay in charge. */
|
|
5978
|
+
.prb-draft-dialog { width: 80vw; height: 80vh; max-width: none; max-height: none; box-sizing: border-box; }
|
|
5979
|
+
.prb-draft-dialog[open] { display: flex; flex-direction: column; }
|
|
5980
|
+
.prb-draft-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
|
|
5981
|
+
.prb-draft-head h2 { margin: 0; }
|
|
5982
|
+
.prb-dialog .prb-draft-count { margin: 0; font-size: var(--t-meta); }
|
|
5983
|
+
.prb-draft-tabs { display: flex; gap: 4px; margin: 14px 0 0; border-bottom: 1px solid var(--border); }
|
|
5984
|
+
.prb-dialog-actions .prb-draft-tab,
|
|
5985
|
+
.prb-draft-tab {
|
|
5986
|
+
margin-bottom: -1px;
|
|
5987
|
+
padding: 7px 12px;
|
|
5988
|
+
border: 0;
|
|
5989
|
+
border-bottom: 2px solid transparent;
|
|
5990
|
+
border-radius: 0;
|
|
5991
|
+
background: none;
|
|
5992
|
+
color: var(--text-secondary);
|
|
5993
|
+
font: inherit;
|
|
5994
|
+
font-size: var(--t-body);
|
|
5995
|
+
cursor: pointer;
|
|
5996
|
+
}
|
|
5997
|
+
.prb-draft-tab:hover { color: var(--text-primary); }
|
|
5998
|
+
.prb-draft-tab[aria-selected="true"] { color: var(--text-primary); border-bottom-color: var(--brand); font-weight: 600; }
|
|
5999
|
+
.prb-draft-tab:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
|
|
6000
|
+
.prb-draft-panel { flex: 1 1 auto; min-height: 0; margin-top: 14px; }
|
|
6001
|
+
.prb-draft-panel[hidden] { display: none; }
|
|
6002
|
+
/* Preview: for reading. The panel's full width, the review's own Markdown styles, and a scroll of its own. */
|
|
6003
|
+
.prb-draft-preview { overflow-y: auto; padding: 4px 4px 4px 0; font-size: var(--t-body); line-height: var(--lh-body); color: var(--text-secondary); }
|
|
6004
|
+
.prb-draft-preview h5 { margin: 18px 0 8px; font-size: var(--t-section); color: var(--text-primary); }
|
|
6005
|
+
.prb-draft-preview > h5:first-child { margin-top: 0; }
|
|
6006
|
+
.prb-draft-preview ol { padding-left: 22px; }
|
|
6007
|
+
.prb-draft-preview li + li { margin-top: 14px; }
|
|
6008
|
+
.prb-draft-preview li > p { margin: 0 0 6px; }
|
|
6009
|
+
.prb-draft-preview code {
|
|
6010
|
+
padding: 1px 4px;
|
|
6011
|
+
border-radius: 4px;
|
|
6012
|
+
background: var(--surface-2);
|
|
6013
|
+
color: var(--text-primary);
|
|
6014
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
6015
|
+
font-size: var(--t-code);
|
|
6016
|
+
overflow-wrap: anywhere;
|
|
6017
|
+
}
|
|
6018
|
+
.prb-draft-preview:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: 2px; border-radius: 4px; }
|
|
6019
|
+
.prb-dialog .prb-draft-empty { color: var(--text-muted); }
|
|
6020
|
+
/* Markdown: for editing. The whole panel is the box. */
|
|
6021
|
+
.prb-draft-text {
|
|
6022
|
+
display: block;
|
|
6023
|
+
width: 100%;
|
|
6024
|
+
height: 100%;
|
|
6025
|
+
box-sizing: border-box;
|
|
6026
|
+
padding: 10px 12px;
|
|
6027
|
+
border: 1px solid var(--border);
|
|
6028
|
+
border-radius: 8px;
|
|
6029
|
+
background: var(--surface-2);
|
|
6030
|
+
color: var(--text-primary);
|
|
6031
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
6032
|
+
font-size: var(--t-code);
|
|
6033
|
+
line-height: 1.5;
|
|
6034
|
+
resize: none;
|
|
6035
|
+
}
|
|
6036
|
+
.prb-draft-text:focus { outline: none; border-color: var(--brand); }
|
|
6037
|
+
/* At phone width the window is the margin: the 16px gutter either side, and most of the height. */
|
|
6038
|
+
@media (max-width: 600px) {
|
|
6039
|
+
.prb-draft-dialog { width: calc(100vw - 32px); height: calc(100vh - 32px); padding: 18px 16px; }
|
|
6040
|
+
}
|
|
6041
|
+
/* Copy Markdown: the copy control with its word showing, as KISS's Copy draft comment is, dressed
|
|
6042
|
+
as the dialog's primary action. The word says Copied or Copy failed after a click, so the hover
|
|
6043
|
+
bubble that would repeat it is not drawn, and the colour stays the button's. */
|
|
6044
|
+
.prb-draft-dialog .pr-helper-msg-copy.pr-helper-finding-copy {
|
|
6045
|
+
width: auto;
|
|
6046
|
+
height: auto;
|
|
6047
|
+
margin: 0;
|
|
6048
|
+
gap: 6px;
|
|
6049
|
+
padding: 7px 14px;
|
|
6050
|
+
border: 1px solid var(--brand);
|
|
6051
|
+
border-radius: 8px;
|
|
6052
|
+
background: var(--brand);
|
|
6053
|
+
color: var(--on-brand);
|
|
6054
|
+
font-size: var(--t-body);
|
|
6055
|
+
font-weight: 600;
|
|
6056
|
+
opacity: 1;
|
|
6057
|
+
}
|
|
6058
|
+
.prb-draft-dialog .pr-helper-finding-copy::after { display: none; }
|
|
6059
|
+
.prb-draft-dialog .pr-helper-msg-copy .pr-helper-msg-copy-label[hidden] { display: none; }
|
|
6060
|
+
.prb-draft-dialog .pr-helper-msg-copy.pr-helper-finding-copy:is(:hover, .copied, .failed) { background: var(--brand-hover); color: var(--on-brand); }
|