@ironmussa/funny 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -2
- package/packages/client/dist/assets/{AcceptInvitePage-Bz8azFPS.js → AcceptInvitePage-BjMGmkD4.js} +1 -1
- package/packages/client/dist/assets/{ActivityPane-DY9GzNxE.js → ActivityPane-Cl-bUP3W.js} +1 -1
- package/packages/client/dist/assets/{AddProjectView-CS9PMuwG.js → AddProjectView-DZuks8BQ.js} +1 -1
- package/packages/client/dist/assets/{AllThreadsView-wK8q3SsH.js → AllThreadsView-DdT3QdFb.js} +1 -1
- package/packages/client/dist/assets/{AnalyticsView-CZlraPUL.js → AnalyticsView-b_BZhrh1.js} +1 -1
- package/packages/client/dist/assets/{App-9j57f85r.js → App-CY9kuarV.js} +3 -3
- package/packages/client/dist/assets/{AutomationInboxView-CDlKbclJ.js → AutomationInboxView-BQfGidRk.js} +1 -1
- package/packages/client/dist/assets/{BrowserPanel-B7imTgqS.js → BrowserPanel-CY_wB1AB.js} +1 -1
- package/packages/client/dist/assets/{BrowserPreview-DOUyF-0l.js → BrowserPreview-2gdJqMpN.js} +1 -1
- package/packages/client/dist/assets/{CircuitBreakerDialog-C20MeUCC.js → CircuitBreakerDialog-B6kP1aCS.js} +1 -1
- package/packages/client/dist/assets/{CommandPalette-B55GwOW8.js → CommandPalette-DeBQCdqo.js} +1 -1
- package/packages/client/dist/assets/{CommentsPane-js2FWA8j.js → CommentsPane-JY0CN5R2.js} +1 -1
- package/packages/client/dist/assets/{CsvTable-CBgoinyU.js → CsvTable-CaJ4BQ4d.js} +1 -1
- package/packages/client/dist/assets/{FileSearchDialog-HCT2Hz0_.js → FileSearchDialog-C2RhpM7Z.js} +1 -1
- package/packages/client/dist/assets/{FileTree-DUODDbNL.js → FileTree-Bl25zGAE.js} +1 -1
- package/packages/client/dist/assets/{FolderPicker-DEwPUyou.js → FolderPicker-CpXi_ZrF.js} +1 -1
- package/packages/client/dist/assets/{GeneralSettingsView-DkKqhc1H.js → GeneralSettingsView-f8pBncJY.js} +2 -2
- package/packages/client/dist/assets/{GitProgressModal-wumxtrFG.js → GitProgressModal-CJG5MsSI.js} +1 -1
- package/packages/client/dist/assets/{LiveColumnsView-C9sNbvg3.js → LiveColumnsView-DwUkXA8m.js} +1 -1
- package/packages/client/dist/assets/{LoginPage-5VQrfpbg.js → LoginPage-CkgRw9Ji.js} +1 -1
- package/packages/client/dist/assets/{MediaPreview-DzlqoZwu.js → MediaPreview-DmMe4hGN.js} +1 -1
- package/packages/client/dist/assets/{MediaPreviewDialog-C9ZILO-C.js → MediaPreviewDialog-DHIv3gai.js} +1 -1
- package/packages/client/dist/assets/{MermaidBlock-xuBty90Y.js → MermaidBlock-BZLj2TmL.js} +1 -1
- package/packages/client/dist/assets/{MobilePage-B3b4tpPe.js → MobilePage-BRWC2SVo.js} +2 -2
- package/packages/client/dist/assets/{MonacoEditorDialog-DfJmfHiL.js → MonacoEditorDialog-CTUQ5NFr.js} +1 -1
- package/packages/client/dist/assets/{OrchestratorView--Df-JFQd.js → OrchestratorView-wTF6Ae0A.js} +1 -1
- package/packages/client/dist/assets/{PreferencesPanel-CAhnrHw0.js → PreferencesPanel-CpIL485D.js} +1 -1
- package/packages/client/dist/assets/{PreviewBrowser-DKz2hR71.js → PreviewBrowser-CEXO1tHq.js} +1 -1
- package/packages/client/dist/assets/{ProjectFilesPane-BbOGQ3kp.js → ProjectFilesPane-02_p9zry.js} +1 -1
- package/packages/client/dist/assets/{ProjectHeader-DZ9UUaqW.js → ProjectHeader-TWkvwAxm.js} +1 -1
- package/packages/client/dist/assets/{ProjectHooksSettings-BGHkJMxp.js → ProjectHooksSettings-CIaY32WM.js} +1 -1
- package/packages/client/dist/assets/{ReviewPane-83OOq41s.js → ReviewPane-DHTvq8t1.js} +1 -1
- package/packages/client/dist/assets/{SearchablePicker-Cz6G4abl.js → SearchablePicker-BJnuJVEi.js} +1 -1
- package/packages/client/dist/assets/{SettingsDetailView-DwWVM6qW.js → SettingsDetailView-eBDvn5cS.js} +1 -1
- package/packages/client/dist/assets/{SettingsPageContent-Cre7rDf1.js → SettingsPageContent-CiHRUvG3.js} +3 -3
- package/packages/client/dist/assets/{SetupWizard-im6s3weh.js → SetupWizard-B8rFRPma.js} +1 -1
- package/packages/client/dist/assets/{Sidebar-C7PRUuZe.js → Sidebar-CPU0yoaQ.js} +1 -1
- package/packages/client/dist/assets/{StashTab-CzC8WNxJ.js → StashTab-BswTfOlb.js} +1 -1
- package/packages/client/dist/assets/{TestRunnerPane-DjzPYNLs.js → TestRunnerPane-DZXDbHCu.js} +1 -1
- package/packages/client/dist/assets/{TextSearchDialog-DcYyEuMd.js → TextSearchDialog-BUMBp448.js} +1 -1
- package/packages/client/dist/assets/{ThreadPowerline-CTbQgGLL.js → ThreadPowerline-CSegubLW.js} +1 -1
- package/packages/client/dist/assets/{ThreadStatusPin-CYsH0F8e.js → ThreadStatusPin-DhrEC0n-.js} +1 -1
- package/packages/client/dist/assets/{ThreadView-DUaDYGnz.js → ThreadView-hYXeM23q.js} +1 -1
- package/packages/client/dist/assets/{app-store-CVcOgstJ.js → app-store-DKW9sVHv.js} +1 -1
- package/packages/client/dist/assets/{automation-store-DteeWFhQ.js → automation-store-C8v9UlHX.js} +1 -1
- package/packages/client/dist/assets/{browser-panel-store-3T75tTA2.js → browser-panel-store-CSx5jc7O.js} +2 -2
- package/packages/client/dist/assets/{button-Bi9_EZFh.js → button-B9Ypx1uQ.js} +1 -1
- package/packages/client/dist/assets/{combine-JFcc9GB_.js → combine-CIrCcf3o.js} +1 -1
- package/packages/client/dist/assets/{comment-store-DgECCb00.js → comment-store-BfRTY3FY.js} +1 -1
- package/packages/client/dist/assets/{diff-parse-CRTMJKOI.js → diff-parse-DgLol0S6.js} +1 -1
- package/packages/client/dist/assets/{element-DgNlo25W.js → element-yfBHMYal.js} +1 -1
- package/packages/client/dist/assets/{go-to-thread-DJT-R5-a.js → go-to-thread-DD0G5vFp.js} +1 -1
- package/packages/client/dist/assets/{index-Bmp1UFM1.js → index-DNxUSLe_.js} +2 -2
- package/packages/client/dist/assets/{input-BGZP-HTx.js → input-CJ3TsT2L.js} +1 -1
- package/packages/client/dist/assets/{items-C-m69VjA.js → items-7qqySF-X.js} +1 -1
- package/packages/client/dist/assets/{job-store-BBERDOJO.js → job-store-0PeOgBpX.js} +1 -1
- package/packages/client/dist/assets/{kbd-BrgsdFIb.js → kbd-d4Wzagpn.js} +1 -1
- package/packages/client/dist/assets/{loading-state-DGzdeccZ.js → loading-state-yLj5fYb6.js} +1 -1
- package/packages/client/dist/assets/{markdown-components-DbIYr3N1.js → markdown-components-DxMKBjnh.js} +1 -1
- package/packages/client/dist/assets/{native-git-store-CYZj3IWH.js → native-git-store-CCenGgLt.js} +1 -1
- package/packages/client/dist/assets/{orchestrator-store-B-nOHeLj.js → orchestrator-store-DP8UohlO.js} +1 -1
- package/packages/client/dist/assets/{pipeline-approval-store-DOhazL3I.js → pipeline-approval-store-BiH1mYlB.js} +1 -1
- package/packages/client/dist/assets/{pr-detail-store-BJ3P2gik.js → pr-detail-store-DHF0exs_.js} +1 -1
- package/packages/client/dist/assets/{providers-BD43Asis.js → providers-Dd9yhyUY.js} +1 -1
- package/packages/client/dist/assets/{sidebar-CL7TSCIO.js → sidebar-Dzb_F1kj.js} +1 -1
- package/packages/client/dist/assets/{tabs-DWlrx7U8.js → tabs-Cu3cWMHb.js} +1 -1
- package/packages/client/dist/assets/{test-store-C40x04Fz.js → test-store-D72ZqWH2.js} +1 -1
- package/packages/client/dist/assets/{tooltip-icon-button-DUnFi3-p.js → tooltip-icon-button-8C1wJ-l9.js} +1 -1
- package/packages/client/dist/assets/use-active-thread-id-ZlJtsqq4.js +1 -0
- package/packages/client/dist/assets/{use-branch-switch-4nDECRMh.js → use-branch-switch-C45m2mx7.js} +1 -1
- package/packages/client/dist/assets/{use-image-lightbox-13VQ9o9i.js → use-image-lightbox-CsMDwY1v.js} +1 -1
- package/packages/client/dist/assets/{use-stable-navigate-uXVRGpin.js → use-stable-navigate-Cz_jWBHP.js} +1 -1
- package/packages/client/dist/assets/{use-terminal-scope-DHhH7AvQ.js → use-terminal-scope-BX8zAMzc.js} +1 -1
- package/packages/client/dist/assets/{use-thread-creation-CgT3SuOi.js → use-thread-creation-DSLV7F8I.js} +1 -1
- package/packages/client/dist/assets/{use-thread-search-CbgQmS3O.js → use-thread-search-CXsiNqRR.js} +1 -1
- package/packages/client/dist/assets/{use-todo-panel-CsXYDjtr.js → use-todo-panel-DjPuehjq.js} +1 -1
- package/packages/client/dist/assets/{use-unified-prompt-model-groups-CUMps-gq.js → use-unified-prompt-model-groups-wdA26Vnd.js} +1 -1
- package/packages/client/dist/assets/{use-ws-DVvliZBW.js → use-ws-AWIhcFYo.js} +3 -3
- package/packages/client/dist/assets/{visualizer-loader-Dv9AyyLp.js → visualizer-loader-oxC04P38.js} +1 -1
- package/packages/client/dist/assets/{watcher-store-srZSE5jI.js → watcher-store-gym76Ag_.js} +1 -1
- package/packages/client/dist/index.html +1 -1
- package/packages/runtime/dist/index.js +2 -2
- package/packages/runtime/dist/index.js.map +1 -1
- package/packages/client/dist/assets/use-active-thread-id-De6IjhUY.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Yn as t,Zt as n,i as r,jt as i,n as a,t as o,wt as s,yr as c,zr as l}from"./icons-sqwAEN28.js";import{t as u}from"./mermaid-DOtnPRYX.js";import{o as d}from"./markdown-DBtwZWLP.js";import{G as f,W as p,j as m,lt as h,q as g,yt as _}from"./index-Bmp1UFM1.js";import{t as v}from"./button-Bi9_EZFh.js";import{$r as y,Gr as b,Jr as x,K as S,Ur as C,Xr as w,qr as T}from"./items-C-m69VjA.js";var E=e(l(),1);function D(e){return{startOnLoad:!1,theme:e,securityLevel:`strict`,suppressErrorRendering:!0}}function O(e){for(let t of[e,`d${e}`,`i${e}`])document.getElementById(t)?.remove()}function k(e){if(!e)return e;let t=document.createElement(`template`);t.innerHTML=e;let n=t.content;n.querySelectorAll(`script`).forEach(e=>e.remove()),n.querySelectorAll(`*`).forEach(e=>{for(let t of Array.from(e.attributes)){let n=t.name.toLowerCase(),r=t.value.trim().toLowerCase();(n.startsWith(`on`)||(n===`href`||n===`xlink:href`||n===`src`)&&r.startsWith(`javascript:`))&&e.removeAttribute(t.name)}});let r=n.querySelector(`svg`);return r?r.outerHTML:``}function A(e){let t=e.ownerDocument,n=Array.from(e.querySelectorAll(`foreignObject`));for(let e of n){let n=parseFloat(e.getAttribute(`x`)??`0`),r=parseFloat(e.getAttribute(`y`)??`0`),i=parseFloat(e.getAttribute(`width`)??`0`),a=parseFloat(e.getAttribute(`height`)??`0`);e.querySelectorAll(`br`).forEach(e=>e.replaceWith(` `));let o=(e.textContent??``).replace(/\s+/g,` `).trim(),s=t.createElementNS(`http://www.w3.org/2000/svg`,`text`);s.setAttribute(`x`,String(n+i/2)),s.setAttribute(`y`,String(r+a/2)),s.setAttribute(`text-anchor`,`middle`),s.setAttribute(`dominant-baseline`,`middle`),s.setAttribute(`font-size`,`12`),s.setAttribute(`fill`,`currentColor`),s.textContent=o,e.parentNode?.replaceChild(s,e)}}function j(e){let t=e.getAttribute(`width`),n=e.getAttribute(`height`),r=e.getAttribute(`viewBox`)?.split(/[\s,]+/).map(Number),i=!!r&&r.length===4&&r.every(e=>Number.isFinite(e)&&e>=0),a=e=>!!e&&!e.includes(`%`);return{w:i?r[2]:a(t)?parseFloat(t):800,h:i?r[3]:a(n)?parseFloat(n):600}}var M=e(d(),1),N=m(`mermaid`);function P(e){let[t,n]=(0,E.useState)(``),[r,i]=(0,E.useState)(``),{resolvedTheme:a}=_();return(0,E.useEffect)(()=>{let t=!1;n(``),i(``);let r=`mermaid-${Math.random().toString(36).slice(2)}`,o=a===`monochrome`?`default`:`dark`;return u.initialize(D(o)),u.render(r,e).then(({svg:e})=>{t||n(k(e))}).catch(e=>{t||i(e instanceof Error?e.message:String(e))}),()=>{t=!0,O(r)}},[e,a]),{svg:t,error:r}}var F=.1,I=20;function L(e){return Math.min(I,Math.max(F,e))}function R(){let e=(0,E.useRef)(null),t=(0,E.useRef)(null),[n,r]=(0,E.useState)(1),[i,a]=(0,E.useState)(1),[o,s]=(0,E.useState)({x:0,y:0}),[c,l]=(0,E.useState)(!1),u=(0,E.useRef)(n),d=(0,E.useRef)(o);u.current=n,d.current=o;let f=(0,E.useRef)(null),p=(0,E.useCallback)((e,t,n)=>{let i=u.current,a=L(i*e);if(a===i)return;let o=(t-d.current.x)/i,c=(n-d.current.y)/i,l={x:t-o*a,y:n-c*a};r(a),s(l)},[]),m=(0,E.useCallback)(e=>{p(e,0,0)},[p]),h=(0,E.useCallback)(()=>{let t=e.current;if(!t)return;let n=t.querySelector(`svg`);if(!n)return;let i=t.clientWidth,o=t.clientHeight,c=n.clientWidth,l=n.clientHeight;if(!c||!l){let e=n.getAttribute(`width`),t=n.getAttribute(`height`);c=e?parseFloat(e):0,l=t?parseFloat(t):0}if(!i||!o||!c||!l)return;let u=L(Math.min(i/c,o/l)*.95);a(u),r(u),s({x:0,y:0})},[]),g=(0,E.useCallback)(()=>{r(i),s({x:0,y:0})},[i]),_=(0,E.useCallback)(n=>{if(t.current&&=(t.current(),null),e.current=n,!n)return;let r=e=>{e.preventDefault();let t=n.getBoundingClientRect(),r=e.clientX-(t.left+t.width/2),i=e.clientY-(t.top+t.height/2);p(e.deltaY>0?.9:1.1,r,i)};n.addEventListener(`wheel`,r,{passive:!1}),t.current=()=>n.removeEventListener(`wheel`,r)},[p]),v=(0,E.useCallback)(e=>{e.button===0&&(e.currentTarget.setPointerCapture(e.pointerId),f.current={startX:e.clientX,startY:e.clientY,originX:o.x,originY:o.y},l(!0))},[o]),y=(0,E.useCallback)(e=>{if(!f.current)return;let t=e.clientX-f.current.startX,n=e.clientY-f.current.startY;s({x:f.current.originX+t,y:f.current.originY+n})},[]),b=(0,E.useCallback)(()=>{f.current=null,l(!1)},[]);return{containerRef:_,scale:n,displayScale:i>0?n/i:n,offset:o,zoomBy:m,reset:g,fit:h,onPointerDown:v,onPointerMove:y,onPointerUp:b,isDragging:c}}var z=420;function B({chart:e}){let{svg:t,error:n}=P(e),[r,s]=(0,E.useState)(!1),c=R(),l=(0,E.useCallback)(e=>{e&&t&&c.fit()},[t,c.fit]);return n?(0,M.jsxs)(`div`,{className:`border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-2 rounded border px-3 py-2 text-xs`,"data-testid":`mermaid-error`,children:[(0,M.jsx)(`span`,{className:`font-medium`,children:`Invalid diagram`}),(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:n})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`group border-border bg-card relative overflow-hidden rounded border`,style:{height:z},"data-testid":`mermaid-diagram`,children:[(0,M.jsx)(`div`,{ref:c.containerRef,className:`absolute inset-0 flex items-center justify-center select-none`,style:{cursor:c.isDragging?`grabbing`:`grab`},onPointerDown:c.onPointerDown,onPointerMove:c.onPointerMove,onPointerUp:c.onPointerUp,onPointerCancel:c.onPointerUp,children:(0,M.jsx)(`div`,{ref:l,className:`[&>svg]:max-w-none`,style:{transform:`translate(${c.offset.x}px, ${c.offset.y}px) scale(${c.scale})`,transformOrigin:`center center`},dangerouslySetInnerHTML:{__html:t}},t)}),(0,M.jsx)(`div`,{className:`pointer-events-none absolute top-2 right-2 flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:(0,M.jsxs)(`div`,{className:`border-border bg-background/90 pointer-events-auto flex items-center gap-1 rounded-md border px-1 py-0.5 shadow-xs backdrop-blur-sm`,children:[(0,M.jsxs)(`span`,{className:`text-muted-foreground px-1 text-xs`,children:[Math.round(c.displayScale*100),`%`]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>c.zoomBy(1/1.2),className:`text-muted-foreground`,"data-testid":`mermaid-inline-zoom-out`,children:(0,M.jsx)(o,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom out`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>c.zoomBy(1.2),className:`text-muted-foreground`,"data-testid":`mermaid-inline-zoom-in`,children:(0,M.jsx)(a,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom in`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:c.reset,className:`text-muted-foreground text-xs`,"data-testid":`mermaid-inline-zoom-reset`,children:`1:1`})}),(0,M.jsx)(f,{children:`Reset zoom`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>s(!0),className:`text-muted-foreground`,"data-testid":`mermaid-inline-expand`,children:(0,M.jsx)(i,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Expand`})]})]})})]}),(0,M.jsx)(U,{chart:e,open:r,onClose:()=>s(!1)})]})}async function V(e){let t=`%%{init: {"theme": "default", "flowchart": {"htmlLabels": false}}}%%\n${e}`,n=`mermaid-export-${Math.random().toString(36).slice(2)}`;u.initialize(D(`default`));try{let{svg:e}=await u.render(n,t);return k(e)}finally{O(n)}}async function H(e){let t=new DOMParser().parseFromString(e,`text/html`).querySelector(`svg`);if(!t)throw Error(`mermaid output had no <svg> element`);t.getAttribute(`xmlns`)||t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),t.getAttribute(`xmlns:xlink`)||t.setAttribute(`xmlns:xlink`,`http://www.w3.org/1999/xlink`),A(t);let{w:n,h:r}=j(t);t.setAttribute(`width`,String(n)),t.setAttribute(`height`,String(r));let i=document.createElement(`canvas`);i.width=n*2,i.height=r*2;let a=i.getContext(`2d`);a.scale(2,2);let o=new XMLSerializer().serializeToString(t),s=new Blob([o],{type:`image/svg+xml;charset=utf-8`}),c=URL.createObjectURL(s);return new Promise((e,t)=>{let o=new window.Image;o.onload=()=>{a.fillStyle=`#ffffff`,a.fillRect(0,0,n,r),a.drawImage(o,0,0,n,r),URL.revokeObjectURL(c),i.toBlob(n=>{n?e(n):t(Error(`Failed to create PNG blob`))},`image/png`)},o.onerror=()=>{URL.revokeObjectURL(c),t(Error(`Failed to load SVG image`))},o.src=c})}function U({chart:e,open:l,onClose:u}){let{svg:d}=P(e),[m,_]=(0,E.useState)(!1),D=R(),[O,k]=S(),[A,j]=(0,E.useState)(!1),F=l?d:``,I=(0,E.useCallback)(e=>{e&&F&&D.fit()},[F,D.fit]),L=(0,E.useCallback)(async()=>{if(d)try{let t=V(e).then(H);await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),j(!0),setTimeout(()=>j(!1),2e3),C.success(`Diagram image copied to clipboard`)}catch(e){N.error(`copy-image failed`,{error:e instanceof Error?e.message:String(e)}),C.error(`Could not copy image to clipboard`)}},[e,d]),z=(0,E.useCallback)(()=>{k(e),C.success(`Diagram code copied to clipboard`)},[e,k]);return(0,M.jsx)(b,{open:l,onOpenChange:e=>!e&&u(),children:(0,M.jsxs)(T,{className:h(m?`max-w-[100vw] max-h-screen w-screen h-screen`:`w-[90vw] max-w-[1200px] h-[85vh]`,`flex flex-col gap-0 overflow-hidden p-0`),onOpenAutoFocus:e=>e.preventDefault(),children:[(0,M.jsxs)(w,{className:`border-border shrink-0 border-b px-4 py-3`,children:[(0,M.jsx)(y,{className:`flex items-center gap-2 text-sm`,children:`Mermaid Diagram`}),(0,M.jsx)(x,{className:`sr-only`,children:`Expanded Mermaid diagram view`}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:z,className:`text-muted-foreground`,"data-testid":`mermaid-copy-code`,children:O?(0,M.jsx)(c,{className:`icon-base`}):(0,M.jsx)(t,{className:`icon-base`})})}),(0,M.jsx)(f,{children:O?`Copied!`:`Copy code`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:L,className:`text-muted-foreground`,"data-testid":`mermaid-copy-image`,children:A?(0,M.jsx)(c,{className:`icon-base`}):(0,M.jsx)(n,{className:`icon-base`})})}),(0,M.jsx)(f,{children:A?`Copied!`:`Copy as image`})]}),(0,M.jsx)(`div`,{className:`bg-border mx-1 h-4 w-px`}),(0,M.jsxs)(`span`,{className:`text-muted-foreground mr-1 text-xs`,children:[Math.round(D.displayScale*100),`%`]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>D.zoomBy(1/1.2),className:`text-muted-foreground`,"data-testid":`mermaid-zoom-out`,children:(0,M.jsx)(o,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom out`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>D.zoomBy(1.2),className:`text-muted-foreground`,"data-testid":`mermaid-zoom-in`,children:(0,M.jsx)(a,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom in`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:D.reset,className:`text-muted-foreground text-xs`,"data-testid":`mermaid-zoom-reset`,children:`1:1`})}),(0,M.jsx)(f,{children:`Reset zoom`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>_(e=>!e),className:`text-muted-foreground`,"data-testid":`mermaid-toggle-fullscreen`,children:m?(0,M.jsx)(s,{className:`icon-base`}):(0,M.jsx)(i,{className:`icon-base`})})}),(0,M.jsx)(f,{children:m?`Exit fullscreen`:`Fullscreen`})]}),(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:u,className:`text-muted-foreground`,"data-testid":`mermaid-close`,children:(0,M.jsx)(r,{className:`icon-base`})})]})]}),(0,M.jsx)(`div`,{ref:D.containerRef,className:`bg-background flex min-h-0 flex-1 items-center justify-center overflow-hidden select-none`,style:{cursor:D.isDragging?`grabbing`:`grab`},onPointerDown:D.onPointerDown,onPointerMove:D.onPointerMove,onPointerUp:D.onPointerUp,onPointerCancel:D.onPointerUp,children:(0,M.jsx)(`div`,{ref:I,className:`[&>svg]:max-w-none`,style:{transform:`translate(${D.offset.x}px, ${D.offset.y}px) scale(${D.scale})`,transformOrigin:`center center`},dangerouslySetInnerHTML:{__html:d},"data-testid":`mermaid-expanded-diagram`},F)})]})})}export{B as MermaidBlock};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Yn as t,Zt as n,i as r,jt as i,n as a,t as o,wt as s,yr as c,zr as l}from"./icons-sqwAEN28.js";import{t as u}from"./mermaid-DOtnPRYX.js";import{o as d}from"./markdown-DBtwZWLP.js";import{G as f,W as p,j as m,lt as h,q as g,yt as _}from"./index-DNxUSLe_.js";import{t as v}from"./button-B9Ypx1uQ.js";import{$r as y,Gr as b,Jr as x,K as S,Ur as C,Xr as w,qr as T}from"./items-7qqySF-X.js";var E=e(l(),1);function D(e){return{startOnLoad:!1,theme:e,securityLevel:`strict`,suppressErrorRendering:!0}}function O(e){for(let t of[e,`d${e}`,`i${e}`])document.getElementById(t)?.remove()}function k(e){if(!e)return e;let t=document.createElement(`template`);t.innerHTML=e;let n=t.content;n.querySelectorAll(`script`).forEach(e=>e.remove()),n.querySelectorAll(`*`).forEach(e=>{for(let t of Array.from(e.attributes)){let n=t.name.toLowerCase(),r=t.value.trim().toLowerCase();(n.startsWith(`on`)||(n===`href`||n===`xlink:href`||n===`src`)&&r.startsWith(`javascript:`))&&e.removeAttribute(t.name)}});let r=n.querySelector(`svg`);return r?r.outerHTML:``}function A(e){let t=e.ownerDocument,n=Array.from(e.querySelectorAll(`foreignObject`));for(let e of n){let n=parseFloat(e.getAttribute(`x`)??`0`),r=parseFloat(e.getAttribute(`y`)??`0`),i=parseFloat(e.getAttribute(`width`)??`0`),a=parseFloat(e.getAttribute(`height`)??`0`);e.querySelectorAll(`br`).forEach(e=>e.replaceWith(` `));let o=(e.textContent??``).replace(/\s+/g,` `).trim(),s=t.createElementNS(`http://www.w3.org/2000/svg`,`text`);s.setAttribute(`x`,String(n+i/2)),s.setAttribute(`y`,String(r+a/2)),s.setAttribute(`text-anchor`,`middle`),s.setAttribute(`dominant-baseline`,`middle`),s.setAttribute(`font-size`,`12`),s.setAttribute(`fill`,`currentColor`),s.textContent=o,e.parentNode?.replaceChild(s,e)}}function j(e){let t=e.getAttribute(`width`),n=e.getAttribute(`height`),r=e.getAttribute(`viewBox`)?.split(/[\s,]+/).map(Number),i=!!r&&r.length===4&&r.every(e=>Number.isFinite(e)&&e>=0),a=e=>!!e&&!e.includes(`%`);return{w:i?r[2]:a(t)?parseFloat(t):800,h:i?r[3]:a(n)?parseFloat(n):600}}var M=e(d(),1),N=m(`mermaid`);function P(e){let[t,n]=(0,E.useState)(``),[r,i]=(0,E.useState)(``),{resolvedTheme:a}=_();return(0,E.useEffect)(()=>{let t=!1;n(``),i(``);let r=`mermaid-${Math.random().toString(36).slice(2)}`,o=a===`monochrome`?`default`:`dark`;return u.initialize(D(o)),u.render(r,e).then(({svg:e})=>{t||n(k(e))}).catch(e=>{t||i(e instanceof Error?e.message:String(e))}),()=>{t=!0,O(r)}},[e,a]),{svg:t,error:r}}var F=.1,I=20;function L(e){return Math.min(I,Math.max(F,e))}function R(){let e=(0,E.useRef)(null),t=(0,E.useRef)(null),[n,r]=(0,E.useState)(1),[i,a]=(0,E.useState)(1),[o,s]=(0,E.useState)({x:0,y:0}),[c,l]=(0,E.useState)(!1),u=(0,E.useRef)(n),d=(0,E.useRef)(o);u.current=n,d.current=o;let f=(0,E.useRef)(null),p=(0,E.useCallback)((e,t,n)=>{let i=u.current,a=L(i*e);if(a===i)return;let o=(t-d.current.x)/i,c=(n-d.current.y)/i,l={x:t-o*a,y:n-c*a};r(a),s(l)},[]),m=(0,E.useCallback)(e=>{p(e,0,0)},[p]),h=(0,E.useCallback)(()=>{let t=e.current;if(!t)return;let n=t.querySelector(`svg`);if(!n)return;let i=t.clientWidth,o=t.clientHeight,c=n.clientWidth,l=n.clientHeight;if(!c||!l){let e=n.getAttribute(`width`),t=n.getAttribute(`height`);c=e?parseFloat(e):0,l=t?parseFloat(t):0}if(!i||!o||!c||!l)return;let u=L(Math.min(i/c,o/l)*.95);a(u),r(u),s({x:0,y:0})},[]),g=(0,E.useCallback)(()=>{r(i),s({x:0,y:0})},[i]),_=(0,E.useCallback)(n=>{if(t.current&&=(t.current(),null),e.current=n,!n)return;let r=e=>{e.preventDefault();let t=n.getBoundingClientRect(),r=e.clientX-(t.left+t.width/2),i=e.clientY-(t.top+t.height/2);p(e.deltaY>0?.9:1.1,r,i)};n.addEventListener(`wheel`,r,{passive:!1}),t.current=()=>n.removeEventListener(`wheel`,r)},[p]),v=(0,E.useCallback)(e=>{e.button===0&&(e.currentTarget.setPointerCapture(e.pointerId),f.current={startX:e.clientX,startY:e.clientY,originX:o.x,originY:o.y},l(!0))},[o]),y=(0,E.useCallback)(e=>{if(!f.current)return;let t=e.clientX-f.current.startX,n=e.clientY-f.current.startY;s({x:f.current.originX+t,y:f.current.originY+n})},[]),b=(0,E.useCallback)(()=>{f.current=null,l(!1)},[]);return{containerRef:_,scale:n,displayScale:i>0?n/i:n,offset:o,zoomBy:m,reset:g,fit:h,onPointerDown:v,onPointerMove:y,onPointerUp:b,isDragging:c}}var z=420;function B({chart:e}){let{svg:t,error:n}=P(e),[r,s]=(0,E.useState)(!1),c=R(),l=(0,E.useCallback)(e=>{e&&t&&c.fit()},[t,c.fit]);return n?(0,M.jsxs)(`div`,{className:`border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-2 rounded border px-3 py-2 text-xs`,"data-testid":`mermaid-error`,children:[(0,M.jsx)(`span`,{className:`font-medium`,children:`Invalid diagram`}),(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:n})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`group border-border bg-card relative overflow-hidden rounded border`,style:{height:z},"data-testid":`mermaid-diagram`,children:[(0,M.jsx)(`div`,{ref:c.containerRef,className:`absolute inset-0 flex items-center justify-center select-none`,style:{cursor:c.isDragging?`grabbing`:`grab`},onPointerDown:c.onPointerDown,onPointerMove:c.onPointerMove,onPointerUp:c.onPointerUp,onPointerCancel:c.onPointerUp,children:(0,M.jsx)(`div`,{ref:l,className:`[&>svg]:max-w-none`,style:{transform:`translate(${c.offset.x}px, ${c.offset.y}px) scale(${c.scale})`,transformOrigin:`center center`},dangerouslySetInnerHTML:{__html:t}},t)}),(0,M.jsx)(`div`,{className:`pointer-events-none absolute top-2 right-2 flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:(0,M.jsxs)(`div`,{className:`border-border bg-background/90 pointer-events-auto flex items-center gap-1 rounded-md border px-1 py-0.5 shadow-xs backdrop-blur-sm`,children:[(0,M.jsxs)(`span`,{className:`text-muted-foreground px-1 text-xs`,children:[Math.round(c.displayScale*100),`%`]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>c.zoomBy(1/1.2),className:`text-muted-foreground`,"data-testid":`mermaid-inline-zoom-out`,children:(0,M.jsx)(o,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom out`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>c.zoomBy(1.2),className:`text-muted-foreground`,"data-testid":`mermaid-inline-zoom-in`,children:(0,M.jsx)(a,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom in`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:c.reset,className:`text-muted-foreground text-xs`,"data-testid":`mermaid-inline-zoom-reset`,children:`1:1`})}),(0,M.jsx)(f,{children:`Reset zoom`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>s(!0),className:`text-muted-foreground`,"data-testid":`mermaid-inline-expand`,children:(0,M.jsx)(i,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Expand`})]})]})})]}),(0,M.jsx)(U,{chart:e,open:r,onClose:()=>s(!1)})]})}async function V(e){let t=`%%{init: {"theme": "default", "flowchart": {"htmlLabels": false}}}%%\n${e}`,n=`mermaid-export-${Math.random().toString(36).slice(2)}`;u.initialize(D(`default`));try{let{svg:e}=await u.render(n,t);return k(e)}finally{O(n)}}async function H(e){let t=new DOMParser().parseFromString(e,`text/html`).querySelector(`svg`);if(!t)throw Error(`mermaid output had no <svg> element`);t.getAttribute(`xmlns`)||t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),t.getAttribute(`xmlns:xlink`)||t.setAttribute(`xmlns:xlink`,`http://www.w3.org/1999/xlink`),A(t);let{w:n,h:r}=j(t);t.setAttribute(`width`,String(n)),t.setAttribute(`height`,String(r));let i=document.createElement(`canvas`);i.width=n*2,i.height=r*2;let a=i.getContext(`2d`);a.scale(2,2);let o=new XMLSerializer().serializeToString(t),s=new Blob([o],{type:`image/svg+xml;charset=utf-8`}),c=URL.createObjectURL(s);return new Promise((e,t)=>{let o=new window.Image;o.onload=()=>{a.fillStyle=`#ffffff`,a.fillRect(0,0,n,r),a.drawImage(o,0,0,n,r),URL.revokeObjectURL(c),i.toBlob(n=>{n?e(n):t(Error(`Failed to create PNG blob`))},`image/png`)},o.onerror=()=>{URL.revokeObjectURL(c),t(Error(`Failed to load SVG image`))},o.src=c})}function U({chart:e,open:l,onClose:u}){let{svg:d}=P(e),[m,_]=(0,E.useState)(!1),D=R(),[O,k]=S(),[A,j]=(0,E.useState)(!1),F=l?d:``,I=(0,E.useCallback)(e=>{e&&F&&D.fit()},[F,D.fit]),L=(0,E.useCallback)(async()=>{if(d)try{let t=V(e).then(H);await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),j(!0),setTimeout(()=>j(!1),2e3),C.success(`Diagram image copied to clipboard`)}catch(e){N.error(`copy-image failed`,{error:e instanceof Error?e.message:String(e)}),C.error(`Could not copy image to clipboard`)}},[e,d]),z=(0,E.useCallback)(()=>{k(e),C.success(`Diagram code copied to clipboard`)},[e,k]);return(0,M.jsx)(b,{open:l,onOpenChange:e=>!e&&u(),children:(0,M.jsxs)(T,{className:h(m?`max-w-[100vw] max-h-screen w-screen h-screen`:`w-[90vw] max-w-[1200px] h-[85vh]`,`flex flex-col gap-0 overflow-hidden p-0`),onOpenAutoFocus:e=>e.preventDefault(),children:[(0,M.jsxs)(w,{className:`border-border shrink-0 border-b px-4 py-3`,children:[(0,M.jsx)(y,{className:`flex items-center gap-2 text-sm`,children:`Mermaid Diagram`}),(0,M.jsx)(x,{className:`sr-only`,children:`Expanded Mermaid diagram view`}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:z,className:`text-muted-foreground`,"data-testid":`mermaid-copy-code`,children:O?(0,M.jsx)(c,{className:`icon-base`}):(0,M.jsx)(t,{className:`icon-base`})})}),(0,M.jsx)(f,{children:O?`Copied!`:`Copy code`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:L,className:`text-muted-foreground`,"data-testid":`mermaid-copy-image`,children:A?(0,M.jsx)(c,{className:`icon-base`}):(0,M.jsx)(n,{className:`icon-base`})})}),(0,M.jsx)(f,{children:A?`Copied!`:`Copy as image`})]}),(0,M.jsx)(`div`,{className:`bg-border mx-1 h-4 w-px`}),(0,M.jsxs)(`span`,{className:`text-muted-foreground mr-1 text-xs`,children:[Math.round(D.displayScale*100),`%`]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>D.zoomBy(1/1.2),className:`text-muted-foreground`,"data-testid":`mermaid-zoom-out`,children:(0,M.jsx)(o,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom out`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>D.zoomBy(1.2),className:`text-muted-foreground`,"data-testid":`mermaid-zoom-in`,children:(0,M.jsx)(a,{className:`icon-base`})})}),(0,M.jsx)(f,{children:`Zoom in`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:D.reset,className:`text-muted-foreground text-xs`,"data-testid":`mermaid-zoom-reset`,children:`1:1`})}),(0,M.jsx)(f,{children:`Reset zoom`})]}),(0,M.jsxs)(p,{children:[(0,M.jsx)(g,{asChild:!0,children:(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:()=>_(e=>!e),className:`text-muted-foreground`,"data-testid":`mermaid-toggle-fullscreen`,children:m?(0,M.jsx)(s,{className:`icon-base`}):(0,M.jsx)(i,{className:`icon-base`})})}),(0,M.jsx)(f,{children:m?`Exit fullscreen`:`Fullscreen`})]}),(0,M.jsx)(v,{variant:`ghost`,size:`icon-sm`,onClick:u,className:`text-muted-foreground`,"data-testid":`mermaid-close`,children:(0,M.jsx)(r,{className:`icon-base`})})]})]}),(0,M.jsx)(`div`,{ref:D.containerRef,className:`bg-background flex min-h-0 flex-1 items-center justify-center overflow-hidden select-none`,style:{cursor:D.isDragging?`grabbing`:`grab`},onPointerDown:D.onPointerDown,onPointerMove:D.onPointerMove,onPointerUp:D.onPointerUp,onPointerCancel:D.onPointerUp,children:(0,M.jsx)(`div`,{ref:I,className:`[&>svg]:max-w-none`,style:{transform:`translate(${D.offset.x}px, ${D.offset.y}px) scale(${D.scale})`,transformOrigin:`center center`},dangerouslySetInnerHTML:{__html:d},"data-testid":`mermaid-expanded-diagram`},F)})]})})}export{B as MermaidBlock};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReviewPane-
|
|
2
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{B as t,L as n,Mr as r,Q as i,hn as a,hr as o,zr as s}from"./icons-sqwAEN28.js";import{At as c}from"./mermaid-DOtnPRYX.js";import{o as l}from"./markdown-DBtwZWLP.js";import{a as u,c as d,n as f,r as p,t as m}from"./use-image-lightbox-13VQ9o9i.js";import{t as h}from"./useTranslation-DAPPK3Hy.js";import{P as g,ct as _,f as v,k as y,lt as b}from"./index-Bmp1UFM1.js";import{Dr as x,Et as ee,Hr as S,It as C,Lt as w,M as T,Pn as E,Qt as D,St as O,Zt as k,_t as A,c as j,d as M,f as N,in as P,j as F,l as I,m as L,mn as R,nn as z,p as B,r as V,t as H,u as U,wr as W,wt as G,yr as K,yt as q}from"./items-C-m69VjA.js";import{t as J}from"./loading-state-DGzdeccZ.js";import{n as te}from"./use-ws-DVvliZBW.js";import{t as ne}from"./use-todo-panel-CsXYDjtr.js";import{t as Y}from"./app-store-CVcOgstJ.js";import{n as re,r as X,t as ie}from"./use-thread-creation-CgT3SuOi.js";import{r as Z,t as ae}from"./SettingsPageContent-Cre7rDf1.js";var Q=e(s(),1),$=e(l(),1);function oe({status:e}){let{t}=h(),n=k(e,F(e=>e.status)),r=z[n]??z.pending,i=r.icon,a=r.className.split(` `).filter(e=>e!==`animate-spin`).join(` `),o={...D(t),completed:t(`thread.status.done`)};return(0,$.jsxs)(`span`,{className:b(`bg-muted/50 inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium`,a),children:[(0,$.jsx)(i,{className:b(`size-3 shrink-0`,r.className)}),o[n]]})}var se=(0,Q.lazy)(()=>c(()=>import(`./ReviewPane-83OOq41s.js`).then(e=>({default:e.ReviewPane})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32])));function ce({projectId:e,threadId:t,onBack:n}){let{t:i}=h(),a=Y(e=>e.selectThread),o=K(e=>e.reviewPaneOpen),s=K(e=>e.setReviewPaneOpen),c=ee(e=>e),l=G(),g=O(),_=q(),v=w(e=>e.loadOlderMessages),y=d(),{openLightbox:b,lightbox:x}=m(),S=(0,Q.useRef)(null),C=(0,Q.useRef)(c);C.current=c;let{sending:T,handleSend:E,handleStop:D,handlePermissionApproval:k,handleToolRespond:A}=f({activeThreadRef:C,sendingRef:(0,Q.useRef)(!1),streamRef:S});(0,Q.useEffect)(()=>(a(t),()=>{a(null)}),[t,a]),(0,Q.useEffect)(()=>(s(!1),()=>s(!1)),[t,s]);let j=(0,Q.useRef)(new Set),M=(0,Q.useRef)(null);if(c?.id&&c.id!==M.current){M.current=c.id;let e=new Set;if(l){for(let t of l)if(e.add(t.id),t.toolCalls)for(let n of t.toolCalls)e.add(n.id)}j.current=e}let N=ne(),P=(0,Q.useRef)(new Map),F=(0,Q.useMemo)(()=>{let e=new Map;N.forEach((t,n)=>e.set(t.toolCallId,n));let t=P.current;return t.size===e.size&&[...e].every(([e,n])=>t.get(e)===n)?t:(P.current=e,e)},[N]),I=c?.provider===`external`,R=c?.status===`running`||(c?.queuedCount??0)>0,z=c?.hasMore??!1,B=c?.loadingMore??!1,V=c?.totalMessages??0;return(0,$.jsxs)($.Fragment,{children:[x,o&&c&&(0,$.jsxs)(`div`,{className:`bg-background fixed inset-0 z-50 flex flex-col`,"data-testid":`mobile-review-overlay`,children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:()=>s(!1),"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-review-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`min-w-0 flex-1 truncate text-base font-semibold`,children:i(`review.title`)})]}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(J,{testId:`mobile-review-loading`}),children:(0,$.jsx)(se,{})})})]}),(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:n,"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:c?(0,$.jsx)(L,{as:`span`,title:c.title,className:`text-base font-semibold`,containerClassName:`max-w-full`}):i(`thread.loading`,`Loading...`)})}),c&&(0,$.jsx)(oe,{status:c.status})]}),c?(0,$.jsx)(p,{ref:S,threadId:c.id,status:c.status,messages:l??u,leadingUserMessage:c.leadingUserMessage,threadEvents:g,compactionEvents:_,initInfo:c.initInfo,resultInfo:c.resultInfo,waitingReason:c.waitingReason,pendingPermission:c.pendingPermission,isExternal:I,model:c.model,permissionMode:c.permissionMode,onSend:E,onPermissionApproval:k,onToolRespond:A,pagination:{hasMore:z,loadingMore:B,load:v,total:V},createdAt:c.createdAt,snapshotMap:F,knownIds:j.current,onOpenLightbox:b,prefersReducedMotion:y,footer:(0,$.jsx)(X,{onSubmit:E,onStop:D,loading:T,running:R&&!I,placeholder:i(`thread.nextPrompt`)})}):(0,$.jsx)(J,{testId:`mobile-chat-loading`})]})}function le({projectId:e,onBack:t,onCreated:n}){let{t:i}=h(),a=Y(e=>e.loadThreadsForProject),{creating:o,createThread:s}=ie({projectId:e,defaultThreadMode:Y(e=>e.projects).find(t=>t.id===e)?.defaultMode??`local`,toolPermissions:v(e=>e.toolPermissions),onSuccess:async t=>{await a(e),n(t)}});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:t,"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:i(`thread.newThread`,`New Thread`)})]}),(0,$.jsx)(`div`,{className:`text-muted-foreground flex flex-1 items-center justify-center p-4`,children:(0,$.jsxs)(`div`,{className:`text-center`,children:[(0,$.jsx)(`p`,{className:`mb-4 text-4xl`,children:`✨`}),(0,$.jsx)(`p`,{className:`text-foreground text-2xl font-semibold`,children:i(`thread.whatShouldAgentDo`)}),(0,$.jsx)(`p`,{className:`mt-2 text-sm`,children:i(`thread.describeTask`)})]})}),(0,$.jsx)(`div`,{className:`px-3 pb-3`,children:(0,$.jsx)(X,{onSubmit:s,loading:o,isNewThread:!0,showBacklog:!0,projectId:e,newThreadContextBar:(0,$.jsx)(re,{projectId:e})})})]})}function ue({projects:e,onSelect:t}){let{t:n}=h(),[r,i]=(0,Q.useState)(null),o=e=>{i(e),setTimeout(()=>t(e),120)};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`img`,{src:`/favicon.svg`,alt:``,"aria-hidden":`true`,className:`icon-lg shrink-0`,"data-testid":`mobile-project-list-home-icon`}),(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:`funny`})]}),(0,$.jsx)(P,{className:`flex-1`,children:e.length===0?(0,$.jsx)(`div`,{className:`text-muted-foreground flex h-full items-center justify-center p-4 text-sm`,children:n(`sidebar.noProjects`,`No projects yet. Add one from the desktop app.`)}):(0,$.jsx)(`div`,{className:`space-y-1 p-2`,children:e.map(e=>(0,$.jsxs)(`button`,{onClick:()=>o(e.id),className:b(`flex w-full items-center gap-3 rounded-lg px-4 py-3 text-left hover:bg-accent`,r===e.id?`bg-accent`:`active:bg-accent`),children:[(0,$.jsx)(a,{className:`icon-lg text-muted-foreground shrink-0`}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,$.jsx)(`div`,{className:`text-muted-foreground truncate text-xs`,children:e.path})]})]},e.id))})})]})}function de({projectId:e,onBack:t}){let{t:n}=h(),i=Y(e=>e.projects).find(t=>t.id===e),a=y(e=>e.user),[s,c]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{x.setState({selectedProjectId:e})},[e]);let l=H({selectedProjectId:e,isProjectAdmin:i?.role===`owner`||i?.role===`admin`||i?.userId===a?.id}),u=n(`settings.title`,`Settings`);if(s){let e=n(V[s]??s);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:()=>c(null),"aria-label":n(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-project-settings-page-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(j,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(M,{className:`flex-nowrap`,children:[(0,$.jsx)(I,{children:(0,$.jsx)(U,{asChild:!0,className:`cursor-pointer truncate`,children:(0,$.jsx)(`button`,{type:`button`,onClick:()=>c(null),"data-testid":`mobile-project-settings-crumb-root`,children:i?.name||u})})}),(0,$.jsx)(B,{}),(0,$.jsx)(I,{className:`min-w-0`,children:(0,$.jsx)(N,{className:`truncate`,children:e})})]})})]}),(0,$.jsx)(P,{className:`min-h-0 flex-1`,children:(0,$.jsx)(`div`,{className:`px-3 py-4`,children:(0,$.jsx)(ae,{page:s,label:e})})})]})}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:t,"aria-label":n(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-project-settings-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(j,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(M,{className:`flex-nowrap`,children:[(0,$.jsx)(I,{children:(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:u})}),i?.name&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(B,{}),(0,$.jsx)(I,{className:`min-w-0`,children:(0,$.jsx)(N,{className:`truncate`,children:i.name})})]})]})})]}),(0,$.jsx)(P,{className:`min-h-0 flex-1`,children:(0,$.jsx)(`div`,{className:`flex flex-col p-2`,children:l.map(e=>{let t=e.icon;return(0,$.jsxs)(`button`,{onClick:()=>c(e.id),"data-testid":`mobile-settings-nav-${e.id}`,className:`hover:bg-accent active:bg-accent flex items-center gap-3 rounded-md px-3 py-3 text-left`,children:[(0,$.jsx)(t,{className:`icon-base text-muted-foreground shrink-0`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium`,children:n(V[e.id]??e.label)}),(0,$.jsx)(o,{className:`icon-sm text-muted-foreground shrink-0`})]},e.id)})})})]})}function fe({projectId:e,query:t,onQueryChange:n,caseSensitive:i,onCaseSensitiveChange:a,onBack:o,onSelectThread:s}){let{t:c}=h(),l=Y(e=>e.projects),u=C(e),d=l.find(t=>t.id===e),[f,p]=(0,Q.useState)(new Map),m=(0,Q.useRef)(void 0),_=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{m.current&&clearTimeout(m.current);let n=t.trim();if(!n){p(new Map);return}let r=`${n}|${e}|${i?`1`:`0`}`,a=_.current.get(r);if(a){p(a);return}return m.current=setTimeout(()=>{g.searchThreadContent(n,e,i).then(e=>{if(e.isOk()){let t=new Map,{threadIds:n,snippets:i}=e.value;for(let e of n)t.set(e,i[e]||``);if(_.current.set(r,t),_.current.size>50){let e=_.current.keys().next().value;_.current.delete(e)}p(t)}})},300),()=>{m.current&&clearTimeout(m.current)}},[t,e,i]);let v=(0,Q.useMemo)(()=>{let e=u.filter(e=>!e.archived);if(!t.trim())return e;let n=i?e=>!!e&&e.includes(t):(e=>t=>!!t&&E(t).includes(e))(E(t));return e.filter(e=>n(e.title)||n(e.branch)||n(e.status)||f.has(e.id))},[u,t,i,f]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:o,"aria-label":c(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`div`,{className:`flex-1`,children:(0,$.jsx)(R,{query:t,onQueryChange:n,totalMatches:v.length,caseSensitive:i,onCaseSensitiveChange:a,placeholder:c(`allThreads.searchPlaceholder`,{defaultValue:`Search {{name}}…`,name:d?.name??``}),testIdPrefix:`mobile-search`})})]}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 py-2`,children:(0,$.jsx)(Z,{threads:v,search:t,contentSnippets:f,emptyMessage:c(`allThreads.noThreads`,`No threads yet.`),searchEmptyMessage:c(`allThreads.noMatch`,`No threads match your search.`),hideBranch:!0,onThreadClick:e=>s(e.id)})})]})}function pe({projectId:e,onBack:a,onSelectThread:o,onNewThread:s,onSearch:c,onSettings:l}){let{t:u}=h(),d=Y(e=>e.projects),f=Y(e=>e.loadThreadsForProject),p=C(e),m=d.find(t=>t.id===e);(0,Q.useEffect)(()=>{f(e)},[e,f]);let g=[...p].filter(e=>!e.archived).sort((e,t)=>{let n=[`running`,`waiting`],r=+!n.includes(e.status),i=+!n.includes(t.status);return r===i?new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime():r-i});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:a,"aria-label":u(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`flex-1 truncate text-base font-semibold`,children:m?.name??`Project`}),(0,$.jsx)(`button`,{onClick:c,"aria-label":u(`sidebar.search`,`Search`),className:`hover:bg-accent rounded p-1.5`,"data-testid":`mobile-thread-search`,children:(0,$.jsx)(t,{className:`icon-sm`})}),(0,$.jsx)(`button`,{onClick:l,"aria-label":u(`settings.title`,`Settings`),className:`hover:bg-accent rounded p-1.5`,"data-testid":`mobile-thread-settings`,children:(0,$.jsx)(n,{className:`icon-sm`})}),(0,$.jsxs)(`button`,{onClick:s,className:`bg-primary text-primary-foreground active:bg-primary/80 flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium`,children:[(0,$.jsx)(i,{className:`icon-sm`}),u(`sidebar.newThread`,`New`)]})]}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 py-2`,children:(0,$.jsx)(Z,{threads:g,search:``,emptyMessage:u(`sidebar.noThreads`,`No threads yet. Create one to start.`),searchEmptyMessage:u(`sidebar.noThreads`,`No threads yet. Create one to start.`),hideBranch:!0,onThreadClick:e=>o(e.id)})})]})}function me(){let[e,t]=(0,Q.useState)({screen:`projects`}),[n,r]=(0,Q.useState)(!1),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(!1),c=Y(e=>e.loadProjects),l=Y(e=>e.projects);return te(),(0,Q.useEffect)(()=>{c().finally(()=>r(!0))},[c]),(0,Q.useEffect)(()=>{W(e=>{let n=T(e);n.projectId&&n.threadId?t({screen:`chat`,projectId:n.projectId,threadId:n.threadId,from:`threads`}):n.projectId&&t({screen:`threads`,projectId:n.projectId})})},[]),n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`bg-background text-foreground flex h-dvh flex-col overflow-hidden`,children:[e.screen===`projects`&&(0,$.jsx)(ue,{projects:l,onSelect:e=>t({screen:`threads`,projectId:e})}),e.screen===`threads`&&(0,$.jsx)(pe,{projectId:e.projectId,onBack:()=>t({screen:`projects`}),onSelectThread:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`threads`}),onNewThread:()=>t({screen:`newThread`,projectId:e.projectId}),onSearch:()=>{a(``),s(!1),t({screen:`search`,projectId:e.projectId})},onSettings:()=>t({screen:`settings`,projectId:e.projectId})}),e.screen===`settings`&&(0,$.jsx)(de,{projectId:e.projectId,onBack:()=>t({screen:`threads`,projectId:e.projectId})}),e.screen===`search`&&(0,$.jsx)(fe,{projectId:e.projectId,query:i,onQueryChange:a,caseSensitive:o,onCaseSensitiveChange:s,onBack:()=>t({screen:`threads`,projectId:e.projectId}),onSelectThread:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`search`})}),e.screen===`newThread`&&(0,$.jsx)(A,{threadId:null,children:(0,$.jsx)(le,{projectId:e.projectId,onBack:()=>t({screen:`threads`,projectId:e.projectId}),onCreated:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`threads`})})}),e.screen===`chat`&&(0,$.jsx)(A,{threadId:e.threadId,children:(0,$.jsx)(ce,{projectId:e.projectId,threadId:e.threadId,onBack:()=>t(e.from===`search`?{screen:`search`,projectId:e.projectId}:{screen:`threads`,projectId:e.projectId})})})]}),(0,$.jsx)(S,{position:`top-center`,duration:_})]}):(0,$.jsx)(`div`,{className:`bg-background text-foreground flex h-dvh`,children:(0,$.jsx)(J,{testId:`mobile-page-loading`})})}export{me as MobilePage};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReviewPane-DHTvq8t1.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/index-DNxUSLe_.js","assets/mermaid-DOtnPRYX.js","assets/dist-9FgEnJXd.js","assets/dist-Bdl9_5dx.js","assets/dist-D13Y8-qe.js","assets/icons-sqwAEN28.js","assets/tiptap-ByTP6yRf.js","assets/markdown-DBtwZWLP.js","assets/clsx-CjueKrWZ.js","assets/motion-622LpYRB.js","assets/_core-lD_pNs53.js","assets/initReactI18next-Dr0vnWXF.js","assets/auth-events-BAwnCYTy.js","assets/telemetry-BE4cJhqj.js","assets/circuit-breaker-store-DR3Dx8rQ.js","assets/react-B8mHUpgK.js","assets/index-CD_81O-J.css","assets/items-7qqySF-X.js","assets/button-B9Ypx1uQ.js","assets/syntax-C54GZp2G.js","assets/useTranslation-DAPPK3Hy.js","assets/input-CJ3TsT2L.js","assets/tabs-Cu3cWMHb.js","assets/StashTab-BswTfOlb.js","assets/diff-parse-DgLol0S6.js","assets/FileTree-Bl25zGAE.js","assets/loading-state-yLj5fYb6.js","assets/GitProgressModal-CJG5MsSI.js","assets/markdown-components-DxMKBjnh.js","assets/pr-detail-store-DHF0exs_.js","assets/review-pane-store-B31R8Yhv.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{B as t,L as n,Mr as r,Q as i,hn as a,hr as o,zr as s}from"./icons-sqwAEN28.js";import{At as c}from"./mermaid-DOtnPRYX.js";import{o as l}from"./markdown-DBtwZWLP.js";import{a as u,c as d,n as f,r as p,t as m}from"./use-image-lightbox-CsMDwY1v.js";import{t as h}from"./useTranslation-DAPPK3Hy.js";import{P as g,ct as _,f as v,k as y,lt as b}from"./index-DNxUSLe_.js";import{Dr as x,Et as ee,Hr as S,It as C,Lt as w,M as T,Pn as E,Qt as D,St as O,Zt as k,_t as A,c as j,d as M,f as N,in as P,j as F,l as I,m as L,mn as R,nn as z,p as B,r as V,t as H,u as U,wr as W,wt as G,yr as K,yt as q}from"./items-7qqySF-X.js";import{t as J}from"./loading-state-yLj5fYb6.js";import{n as te}from"./use-ws-AWIhcFYo.js";import{t as ne}from"./use-todo-panel-DjPuehjq.js";import{t as Y}from"./app-store-DKW9sVHv.js";import{n as re,r as X,t as ie}from"./use-thread-creation-DSLV7F8I.js";import{r as Z,t as ae}from"./SettingsPageContent-CiHRUvG3.js";var Q=e(s(),1),$=e(l(),1);function oe({status:e}){let{t}=h(),n=k(e,F(e=>e.status)),r=z[n]??z.pending,i=r.icon,a=r.className.split(` `).filter(e=>e!==`animate-spin`).join(` `),o={...D(t),completed:t(`thread.status.done`)};return(0,$.jsxs)(`span`,{className:b(`bg-muted/50 inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium`,a),children:[(0,$.jsx)(i,{className:b(`size-3 shrink-0`,r.className)}),o[n]]})}var se=(0,Q.lazy)(()=>c(()=>import(`./ReviewPane-DHTvq8t1.js`).then(e=>({default:e.ReviewPane})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32])));function ce({projectId:e,threadId:t,onBack:n}){let{t:i}=h(),a=Y(e=>e.selectThread),o=K(e=>e.reviewPaneOpen),s=K(e=>e.setReviewPaneOpen),c=ee(e=>e),l=G(),g=O(),_=q(),v=w(e=>e.loadOlderMessages),y=d(),{openLightbox:b,lightbox:x}=m(),S=(0,Q.useRef)(null),C=(0,Q.useRef)(c);C.current=c;let{sending:T,handleSend:E,handleStop:D,handlePermissionApproval:k,handleToolRespond:A}=f({activeThreadRef:C,sendingRef:(0,Q.useRef)(!1),streamRef:S});(0,Q.useEffect)(()=>(a(t),()=>{a(null)}),[t,a]),(0,Q.useEffect)(()=>(s(!1),()=>s(!1)),[t,s]);let j=(0,Q.useRef)(new Set),M=(0,Q.useRef)(null);if(c?.id&&c.id!==M.current){M.current=c.id;let e=new Set;if(l){for(let t of l)if(e.add(t.id),t.toolCalls)for(let n of t.toolCalls)e.add(n.id)}j.current=e}let N=ne(),P=(0,Q.useRef)(new Map),F=(0,Q.useMemo)(()=>{let e=new Map;N.forEach((t,n)=>e.set(t.toolCallId,n));let t=P.current;return t.size===e.size&&[...e].every(([e,n])=>t.get(e)===n)?t:(P.current=e,e)},[N]),I=c?.provider===`external`,R=c?.status===`running`||(c?.queuedCount??0)>0,z=c?.hasMore??!1,B=c?.loadingMore??!1,V=c?.totalMessages??0;return(0,$.jsxs)($.Fragment,{children:[x,o&&c&&(0,$.jsxs)(`div`,{className:`bg-background fixed inset-0 z-50 flex flex-col`,"data-testid":`mobile-review-overlay`,children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:()=>s(!1),"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-review-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`min-w-0 flex-1 truncate text-base font-semibold`,children:i(`review.title`)})]}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(J,{testId:`mobile-review-loading`}),children:(0,$.jsx)(se,{})})})]}),(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:n,"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:c?(0,$.jsx)(L,{as:`span`,title:c.title,className:`text-base font-semibold`,containerClassName:`max-w-full`}):i(`thread.loading`,`Loading...`)})}),c&&(0,$.jsx)(oe,{status:c.status})]}),c?(0,$.jsx)(p,{ref:S,threadId:c.id,status:c.status,messages:l??u,leadingUserMessage:c.leadingUserMessage,threadEvents:g,compactionEvents:_,initInfo:c.initInfo,resultInfo:c.resultInfo,waitingReason:c.waitingReason,pendingPermission:c.pendingPermission,isExternal:I,model:c.model,permissionMode:c.permissionMode,onSend:E,onPermissionApproval:k,onToolRespond:A,pagination:{hasMore:z,loadingMore:B,load:v,total:V},createdAt:c.createdAt,snapshotMap:F,knownIds:j.current,onOpenLightbox:b,prefersReducedMotion:y,footer:(0,$.jsx)(X,{onSubmit:E,onStop:D,loading:T,running:R&&!I,placeholder:i(`thread.nextPrompt`)})}):(0,$.jsx)(J,{testId:`mobile-chat-loading`})]})}function le({projectId:e,onBack:t,onCreated:n}){let{t:i}=h(),a=Y(e=>e.loadThreadsForProject),{creating:o,createThread:s}=ie({projectId:e,defaultThreadMode:Y(e=>e.projects).find(t=>t.id===e)?.defaultMode??`local`,toolPermissions:v(e=>e.toolPermissions),onSuccess:async t=>{await a(e),n(t)}});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-3 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:t,"aria-label":i(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:i(`thread.newThread`,`New Thread`)})]}),(0,$.jsx)(`div`,{className:`text-muted-foreground flex flex-1 items-center justify-center p-4`,children:(0,$.jsxs)(`div`,{className:`text-center`,children:[(0,$.jsx)(`p`,{className:`mb-4 text-4xl`,children:`✨`}),(0,$.jsx)(`p`,{className:`text-foreground text-2xl font-semibold`,children:i(`thread.whatShouldAgentDo`)}),(0,$.jsx)(`p`,{className:`mt-2 text-sm`,children:i(`thread.describeTask`)})]})}),(0,$.jsx)(`div`,{className:`px-3 pb-3`,children:(0,$.jsx)(X,{onSubmit:s,loading:o,isNewThread:!0,showBacklog:!0,projectId:e,newThreadContextBar:(0,$.jsx)(re,{projectId:e})})})]})}function ue({projects:e,onSelect:t}){let{t:n}=h(),[r,i]=(0,Q.useState)(null),o=e=>{i(e),setTimeout(()=>t(e),120)};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`img`,{src:`/favicon.svg`,alt:``,"aria-hidden":`true`,className:`icon-lg shrink-0`,"data-testid":`mobile-project-list-home-icon`}),(0,$.jsx)(`h1`,{className:`text-base font-semibold`,children:`funny`})]}),(0,$.jsx)(P,{className:`flex-1`,children:e.length===0?(0,$.jsx)(`div`,{className:`text-muted-foreground flex h-full items-center justify-center p-4 text-sm`,children:n(`sidebar.noProjects`,`No projects yet. Add one from the desktop app.`)}):(0,$.jsx)(`div`,{className:`space-y-1 p-2`,children:e.map(e=>(0,$.jsxs)(`button`,{onClick:()=>o(e.id),className:b(`flex w-full items-center gap-3 rounded-lg px-4 py-3 text-left hover:bg-accent`,r===e.id?`bg-accent`:`active:bg-accent`),children:[(0,$.jsx)(a,{className:`icon-lg text-muted-foreground shrink-0`}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,$.jsx)(`div`,{className:`text-muted-foreground truncate text-xs`,children:e.path})]})]},e.id))})})]})}function de({projectId:e,onBack:t}){let{t:n}=h(),i=Y(e=>e.projects).find(t=>t.id===e),a=y(e=>e.user),[s,c]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{x.setState({selectedProjectId:e})},[e]);let l=H({selectedProjectId:e,isProjectAdmin:i?.role===`owner`||i?.role===`admin`||i?.userId===a?.id}),u=n(`settings.title`,`Settings`);if(s){let e=n(V[s]??s);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:()=>c(null),"aria-label":n(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-project-settings-page-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(j,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(M,{className:`flex-nowrap`,children:[(0,$.jsx)(I,{children:(0,$.jsx)(U,{asChild:!0,className:`cursor-pointer truncate`,children:(0,$.jsx)(`button`,{type:`button`,onClick:()=>c(null),"data-testid":`mobile-project-settings-crumb-root`,children:i?.name||u})})}),(0,$.jsx)(B,{}),(0,$.jsx)(I,{className:`min-w-0`,children:(0,$.jsx)(N,{className:`truncate`,children:e})})]})})]}),(0,$.jsx)(P,{className:`min-h-0 flex-1`,children:(0,$.jsx)(`div`,{className:`px-3 py-4`,children:(0,$.jsx)(ae,{page:s,label:e})})})]})}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:t,"aria-label":n(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,"data-testid":`mobile-project-settings-back`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(j,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(M,{className:`flex-nowrap`,children:[(0,$.jsx)(I,{children:(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:u})}),i?.name&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(B,{}),(0,$.jsx)(I,{className:`min-w-0`,children:(0,$.jsx)(N,{className:`truncate`,children:i.name})})]})]})})]}),(0,$.jsx)(P,{className:`min-h-0 flex-1`,children:(0,$.jsx)(`div`,{className:`flex flex-col p-2`,children:l.map(e=>{let t=e.icon;return(0,$.jsxs)(`button`,{onClick:()=>c(e.id),"data-testid":`mobile-settings-nav-${e.id}`,className:`hover:bg-accent active:bg-accent flex items-center gap-3 rounded-md px-3 py-3 text-left`,children:[(0,$.jsx)(t,{className:`icon-base text-muted-foreground shrink-0`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium`,children:n(V[e.id]??e.label)}),(0,$.jsx)(o,{className:`icon-sm text-muted-foreground shrink-0`})]},e.id)})})})]})}function fe({projectId:e,query:t,onQueryChange:n,caseSensitive:i,onCaseSensitiveChange:a,onBack:o,onSelectThread:s}){let{t:c}=h(),l=Y(e=>e.projects),u=C(e),d=l.find(t=>t.id===e),[f,p]=(0,Q.useState)(new Map),m=(0,Q.useRef)(void 0),_=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{m.current&&clearTimeout(m.current);let n=t.trim();if(!n){p(new Map);return}let r=`${n}|${e}|${i?`1`:`0`}`,a=_.current.get(r);if(a){p(a);return}return m.current=setTimeout(()=>{g.searchThreadContent(n,e,i).then(e=>{if(e.isOk()){let t=new Map,{threadIds:n,snippets:i}=e.value;for(let e of n)t.set(e,i[e]||``);if(_.current.set(r,t),_.current.size>50){let e=_.current.keys().next().value;_.current.delete(e)}p(t)}})},300),()=>{m.current&&clearTimeout(m.current)}},[t,e,i]);let v=(0,Q.useMemo)(()=>{let e=u.filter(e=>!e.archived);if(!t.trim())return e;let n=i?e=>!!e&&e.includes(t):(e=>t=>!!t&&E(t).includes(e))(E(t));return e.filter(e=>n(e.title)||n(e.branch)||n(e.status)||f.has(e.id))},[u,t,i,f]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:o,"aria-label":c(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`div`,{className:`flex-1`,children:(0,$.jsx)(R,{query:t,onQueryChange:n,totalMatches:v.length,caseSensitive:i,onCaseSensitiveChange:a,placeholder:c(`allThreads.searchPlaceholder`,{defaultValue:`Search {{name}}…`,name:d?.name??``}),testIdPrefix:`mobile-search`})})]}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 py-2`,children:(0,$.jsx)(Z,{threads:v,search:t,contentSnippets:f,emptyMessage:c(`allThreads.noThreads`,`No threads yet.`),searchEmptyMessage:c(`allThreads.noMatch`,`No threads match your search.`),hideBranch:!0,onThreadClick:e=>s(e.id)})})]})}function pe({projectId:e,onBack:a,onSelectThread:o,onNewThread:s,onSearch:c,onSettings:l}){let{t:u}=h(),d=Y(e=>e.projects),f=Y(e=>e.loadThreadsForProject),p=C(e),m=d.find(t=>t.id===e);(0,Q.useEffect)(()=>{f(e)},[e,f]);let g=[...p].filter(e=>!e.archived).sort((e,t)=>{let n=[`running`,`waiting`],r=+!n.includes(e.status),i=+!n.includes(t.status);return r===i?new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime():r-i});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`header`,{className:`border-border flex h-14 shrink-0 items-center gap-2 border-b px-4`,children:[(0,$.jsx)(`button`,{onClick:a,"aria-label":u(`common.back`,`Back`),className:`hover:bg-accent -ml-1 rounded p-1`,children:(0,$.jsx)(r,{className:`icon-lg`})}),(0,$.jsx)(`h1`,{className:`flex-1 truncate text-base font-semibold`,children:m?.name??`Project`}),(0,$.jsx)(`button`,{onClick:c,"aria-label":u(`sidebar.search`,`Search`),className:`hover:bg-accent rounded p-1.5`,"data-testid":`mobile-thread-search`,children:(0,$.jsx)(t,{className:`icon-sm`})}),(0,$.jsx)(`button`,{onClick:l,"aria-label":u(`settings.title`,`Settings`),className:`hover:bg-accent rounded p-1.5`,"data-testid":`mobile-thread-settings`,children:(0,$.jsx)(n,{className:`icon-sm`})}),(0,$.jsxs)(`button`,{onClick:s,className:`bg-primary text-primary-foreground active:bg-primary/80 flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium`,children:[(0,$.jsx)(i,{className:`icon-sm`}),u(`sidebar.newThread`,`New`)]})]}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 py-2`,children:(0,$.jsx)(Z,{threads:g,search:``,emptyMessage:u(`sidebar.noThreads`,`No threads yet. Create one to start.`),searchEmptyMessage:u(`sidebar.noThreads`,`No threads yet. Create one to start.`),hideBranch:!0,onThreadClick:e=>o(e.id)})})]})}function me(){let[e,t]=(0,Q.useState)({screen:`projects`}),[n,r]=(0,Q.useState)(!1),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(!1),c=Y(e=>e.loadProjects),l=Y(e=>e.projects);return te(),(0,Q.useEffect)(()=>{c().finally(()=>r(!0))},[c]),(0,Q.useEffect)(()=>{W(e=>{let n=T(e);n.projectId&&n.threadId?t({screen:`chat`,projectId:n.projectId,threadId:n.threadId,from:`threads`}):n.projectId&&t({screen:`threads`,projectId:n.projectId})})},[]),n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`bg-background text-foreground flex h-dvh flex-col overflow-hidden`,children:[e.screen===`projects`&&(0,$.jsx)(ue,{projects:l,onSelect:e=>t({screen:`threads`,projectId:e})}),e.screen===`threads`&&(0,$.jsx)(pe,{projectId:e.projectId,onBack:()=>t({screen:`projects`}),onSelectThread:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`threads`}),onNewThread:()=>t({screen:`newThread`,projectId:e.projectId}),onSearch:()=>{a(``),s(!1),t({screen:`search`,projectId:e.projectId})},onSettings:()=>t({screen:`settings`,projectId:e.projectId})}),e.screen===`settings`&&(0,$.jsx)(de,{projectId:e.projectId,onBack:()=>t({screen:`threads`,projectId:e.projectId})}),e.screen===`search`&&(0,$.jsx)(fe,{projectId:e.projectId,query:i,onQueryChange:a,caseSensitive:o,onCaseSensitiveChange:s,onBack:()=>t({screen:`threads`,projectId:e.projectId}),onSelectThread:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`search`})}),e.screen===`newThread`&&(0,$.jsx)(A,{threadId:null,children:(0,$.jsx)(le,{projectId:e.projectId,onBack:()=>t({screen:`threads`,projectId:e.projectId}),onCreated:n=>t({screen:`chat`,projectId:e.projectId,threadId:n,from:`threads`})})}),e.screen===`chat`&&(0,$.jsx)(A,{threadId:e.threadId,children:(0,$.jsx)(ce,{projectId:e.projectId,threadId:e.threadId,onBack:()=>t(e.from===`search`?{screen:`search`,projectId:e.projectId}:{screen:`threads`,projectId:e.projectId})})})]}),(0,$.jsx)(S,{position:`top-center`,duration:_})]}):(0,$.jsx)(`div`,{className:`bg-background text-foreground flex h-dvh`,children:(0,$.jsx)(J,{testId:`mobile-page-loading`})})}export{me as MobilePage};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MonacoCodeView-BFWCJg1k.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/monaco-dp65NPQw.js","assets/icons-sqwAEN28.js","assets/markdown-DBtwZWLP.js","assets/monaco-setup-pMTTM56o.js","assets/mermaid-DOtnPRYX.js","assets/editor.api2-KGjWAjnM.js","assets/editor-Br_kD0ds.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Kn as t,Ln as n,Mn as r,Or as i,Rn as a,Yn as o,jt as s,pn as c,wt as ee,yr as te,zr as ne}from"./icons-sqwAEN28.js";import{At as l}from"./mermaid-DOtnPRYX.js";import{o as u,r as re,t as ie}from"./markdown-DBtwZWLP.js";import{t as ae}from"./useTranslation-DAPPK3Hy.js";import{G as d,P as f,W as p,f as oe,j as m,lt as h,o as se,q as g,yt as ce}from"./index-
|
|
2
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Kn as t,Ln as n,Mn as r,Or as i,Rn as a,Yn as o,jt as s,pn as c,wt as ee,yr as te,zr as ne}from"./icons-sqwAEN28.js";import{At as l}from"./mermaid-DOtnPRYX.js";import{o as u,r as re,t as ie}from"./markdown-DBtwZWLP.js";import{t as ae}from"./useTranslation-DAPPK3Hy.js";import{G as d,P as f,W as p,f as oe,j as m,lt as h,o as se,q as g,yt as ce}from"./index-DNxUSLe_.js";import{n as le}from"./rehype-sanitize-DLZhivS4.js";import{t as _}from"./button-B9Ypx1uQ.js";import{$r as ue,Gr as de,Jr as fe,K as pe,U as me,Ur as he,W as ge,Xr as _e,in as ve,mn as ye,qr as be}from"./items-7qqySF-X.js";import{n as xe}from"./markdown-components-DxMKBjnh.js";var v=e(ne(),1);function Se(e={query:``}){let t=e.query.trim(),n=e.matchClass??`md-search-match`;return e=>{if(!t)return;let r=t.toLowerCase(),i=t.length;function a(e){let t=[];for(let n of e)if(n.type===`element`){let e=n,r=e.tagName;if(r===`code`||r===`pre`){t.push(n);continue}e.children=a(e.children),t.push(e)}else n.type===`text`?t.push(...o(n)):t.push(n);return t}function o(e){let t=e.value,a=t.toLowerCase();if(!a.includes(r))return[e];let o=[],s=0,c=a.indexOf(r);for(;c!==-1;){c>s&&o.push({type:`text`,value:t.slice(s,c)});let e={type:`element`,tagName:`mark`,properties:{className:[n]},children:[{type:`text`,value:t.slice(c,c+i)}]};o.push(e),s=c+i,c=a.indexOf(r,s)}return s<t.length&&o.push({type:`text`,value:t.slice(s)}),o}e.children=a(e.children)}}var y=e(u(),1),Ce=`\`~!@#$%^&*()-=+[{]}\\|;:'",.<>/?
|
|
3
3
|
`,b=m(`blame`),we=(0,v.lazy)(()=>l(()=>import(`./MonacoCodeView-BFWCJg1k.js`).then(e=>({default:e.MonacoCodeView})),__vite__mapDeps([0,1,2,3,4,5,6,7,8])));function x({open:e,onOpenChange:ne,filePath:l,initialContent:u}){let{t:m}=ae(),{resolvedTheme:me}=ce(),x=se[oe(e=>e.fontSize)],[S,C]=(0,v.useState)(``),[Ae,je]=(0,v.useState)(``),[w,Me]=(0,v.useState)(!0),[T,Ne]=(0,v.useState)(!1),Pe=Oe(l),Fe=ke(Pe,l),Ie=Fe===`markdown`,E=ge(Pe),D=Ie||!!E,Le=`/api/files/raw?path=${encodeURIComponent(l)}`,Re=!!E?.contributes.binary,[O,ze]=(0,v.useState)(D),[Be,Ve]=pe();(0,v.useEffect)(()=>{e&&ze(D)},[e,l,D]);let k=(0,v.useRef)(null),He=(0,v.useRef)(null),A=(0,v.useRef)(null),j=(0,v.useRef)([]),M=(0,v.useRef)([]),N=(0,v.useRef)(null),[P,Ue]=(0,v.useState)(null),[F,We]=(0,v.useState)(!0),[Ge,Ke]=(0,v.useState)(0),[I,qe]=(0,v.useState)(1),L=(0,v.useRef)(null),[R,z]=(0,v.useState)(!1),[B,V]=(0,v.useState)(``),[H,Je]=(0,v.useState)(``),[U,W]=(0,v.useState)(0),[G,K]=(0,v.useState)(-1),[q,Ye]=(0,v.useState)(!1),[J,Xe]=(0,v.useState)(!1),[Y,Ze]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let e=setTimeout(()=>Je(B),200);return()=>clearTimeout(e)},[B]);let Qe=S!==Ae,X=!(O&&D),$e=me===`monochrome`?`vs`:`funny-dark`,[et,tt]=(0,v.useState)(null);e&&u!=null&&l!==et?(C(u),je(u),tt(l)):!e&&et!==null&&tt(null);let Z=(0,v.useRef)(void 0);(0,v.useEffect)(()=>{if(!(!e||!Qe))return clearTimeout(Z.current),Z.current=setTimeout(async()=>{let e=await f.writeFile(l,S);e.isOk()?(je(S),he.success(m(`editor.saved`,`File saved`))):he.error(m(`editor.failedToSave`,`Failed to save file`),{description:e.error.message})},1e3),()=>clearTimeout(Z.current)},[e,Qe,l,S,m]);let nt=()=>{ne(!1)},rt=(0,v.useCallback)(e=>{k.current=e,N.current=null,L.current=null,qe(e.getPosition()?.lineNumber??1),e.onDidChangeCursorPosition(e=>qe(e.position.lineNumber)),Ke(e=>e+1);let t=e.getModel();if(t){let n=e.getVisibleRanges().at(-1)?.endLineNumber??0,r=Math.min(t.getLineCount(),Math.max(n,100));t.tokenization?.forceTokenization?.(r)}},[]),it=(0,v.useCallback)(()=>{z(!1),V(``)},[]);(0,v.useEffect)(()=>{if(!e||!l){b.info(`blame fetch effect: skip (latched)`,{open:e,filePath:l});return}b.info(`blame fetch effect`,{open:e,filePath:l});let t=!1;return f.getFileBlame(l).then(e=>{t||(e.isOk()?(b.info(`blame loaded`,{filePath:l,hunks:e.value.hunks.length,blamedLineCount:e.value.blamedLineCount}),Ue(e.value)):(b.warn(`blame fetch failed`,{filePath:l,error:e.error.message}),Ue(null)))}),()=>{t=!0}},[e,l]),(0,v.useEffect)(()=>{let e=k.current,t=e?.getModel();if(!e||!t)return;if(!X||!F||!P){L.current?.clear();return}let n=t.getLineCount(),r=Math.min(Math.max(I,1),n),i=Ee(r,t.getLineMaxColumn(r),P);L.current?L.current.set(i):L.current=e.createDecorationsCollection(i),b.info(`blame render`,{line:I,count:i.length})},[P,F,X,I,S,Ge]),(0,v.useEffect)(()=>{if(!e)return;let t=e=>{e.ctrlKey&&e.key===`f`&&(e.preventDefault(),e.stopPropagation(),z(!0),requestAnimationFrame(()=>{A.current?.focus(),A.current?.select()}))};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[e]),(0,v.useEffect)(()=>{e||(z(!1),V(``))},[e,l]),(0,v.useEffect)(()=>{if(X)return;let e=He.current;if(!e){j.current=[],W(0),K(-1);return}if(!(R&&H.trim())){j.current=[],W(0),K(-1);return}let t=Array.from(e.querySelectorAll(`mark.md-search-match`));j.current=t,W(t.length),K(t.length>0?0:-1)},[H,R,S,X]),(0,v.useEffect)(()=>{if(X)return;let e=j.current;e.forEach((e,t)=>{t===G?e.dataset.active=`true`:delete e.dataset.active});let t=e[G];t&&t.scrollIntoView({block:`center`,behavior:`smooth`})},[G,U,X]),(0,v.useEffect)(()=>{if(!X)return;let e=k.current,t=e?.getModel();if(!e||!t)return;let n=R?H:``;if(!n){N.current?.clear(),M.current=[],W(0),K(-1);return}let r=[];try{r=t.findMatches(n,!1,Y,q,J?Ce:null,!1)}catch{r=[]}M.current=r,W(r.length),K(r.length>0?0:-1)},[H,Y,q,J,R,S,X]),(0,v.useEffect)(()=>{if(!X)return;let e=k.current;if(!e)return;let t=M.current,n=t.map((e,t)=>({range:e.range,options:{inlineClassName:t===G?`monaco-search-match-active`:`monaco-search-match`}}));N.current?N.current.set(n):N.current=e.createDecorationsCollection(n);let r=t[G];r&&e.revealRangeInCenterIfOutsideViewport(r.range)},[G,U,X]),(0,v.useEffect)(()=>{X?(j.current.forEach(e=>delete e.dataset.active),j.current=[]):(N.current?.clear(),M.current=[]),R&&H&&(W(0),K(-1))},[X]);let at=(0,v.useCallback)(()=>{K(e=>U===0?-1:(e+1)%U)},[U]),ot=(0,v.useCallback)(()=>{K(e=>U===0?-1:(e-1+U)%U)},[U]),Q=R&&!X?H.trim():``,st=(0,v.useMemo)(()=>(0,y.jsx)(re,{remarkPlugins:[ie],rehypePlugins:[le,[Se,{query:Q}]],components:Te,children:S}),[S,Q]),$=X;return(0,y.jsx)(de,{open:e,onOpenChange:nt,children:(0,y.jsxs)(be,{className:h(T?`max-w-[100vw] max-h-screen w-screen h-screen flex flex-col gap-0 p-0`:`flex h-[85vh] w-[90vw] max-w-[850px] flex-col gap-0 p-0`,`overflow-hidden`),onOpenAutoFocus:e=>e.preventDefault(),children:[(0,y.jsxs)(_e,{className:`border-border shrink-0 overflow-hidden border-b px-4 py-3`,children:[(0,y.jsxs)(ue,{className:`flex min-w-0 items-center gap-2 overflow-hidden font-mono text-sm`,children:[(0,y.jsx)(r,{className:`icon-base shrink-0`}),(0,y.jsx)(`span`,{className:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`,style:{direction:`rtl`,textAlign:`left`},children:l})]}),(0,y.jsxs)(p,{children:[(0,y.jsx)(g,{asChild:!0,children:(0,y.jsx)(_,{variant:`ghost`,size:`icon-sm`,onClick:()=>Ve(S),disabled:!S,className:`text-muted-foreground shrink-0`,"data-testid":`editor-copy-content`,"aria-label":m(`editor.copy`,`Copy`),children:Be?(0,y.jsx)(te,{className:`icon-base`}):(0,y.jsx)(t,{className:`icon-base`})})}),(0,y.jsx)(d,{side:`bottom`,children:m(`editor.copy`,`Copy`)})]}),D&&!Re&&(0,y.jsxs)(p,{children:[(0,y.jsx)(g,{asChild:!0,children:(0,y.jsx)(_,{variant:`ghost`,size:`icon-sm`,onClick:()=>ze(e=>!e),className:`text-muted-foreground shrink-0`,"data-testid":`editor-toggle-preview`,children:O?(0,y.jsx)(o,{className:`icon-base`}):(0,y.jsx)(i,{className:`icon-base`})})}),(0,y.jsx)(d,{side:`bottom`,children:O?m(`editor.showCode`,`Show code`):m(`editor.showPreview`,`Show preview`)})]}),X&&P&&P.hunks.length>0&&(0,y.jsxs)(p,{children:[(0,y.jsx)(g,{asChild:!0,children:(0,y.jsx)(_,{variant:`ghost`,size:`icon-sm`,onClick:()=>We(e=>!e),className:h(`shrink-0`,F?`text-foreground`:`text-muted-foreground`),"data-testid":`editor-toggle-blame`,children:(0,y.jsx)(c,{className:`icon-base`})})}),(0,y.jsx)(d,{side:`bottom`,children:F?m(`editor.hideBlame`,`Hide blame`):m(`editor.showBlame`,`Show blame`)})]}),X&&(0,y.jsxs)(p,{children:[(0,y.jsx)(g,{asChild:!0,children:(0,y.jsx)(_,{variant:`ghost`,size:`icon-sm`,onClick:()=>Me(e=>!e),className:`text-muted-foreground shrink-0`,"data-testid":`editor-toggle-minimap`,children:w?(0,y.jsx)(a,{className:`icon-base`}):(0,y.jsx)(n,{className:`icon-base`})})}),(0,y.jsx)(d,{side:`bottom`,children:m(w?`editor.hideMinimap`:`editor.showMinimap`)})]}),(0,y.jsxs)(p,{children:[(0,y.jsx)(g,{asChild:!0,children:(0,y.jsx)(_,{variant:`ghost`,size:`icon-sm`,onClick:()=>Ne(e=>!e),className:`text-muted-foreground shrink-0`,"data-testid":`editor-toggle-fullscreen`,children:T?(0,y.jsx)(ee,{className:`icon-base`}):(0,y.jsx)(s,{className:`icon-base`})})}),(0,y.jsx)(d,{side:`bottom`,children:m(T?`editor.exitFullscreen`:`editor.fullscreen`)})]}),(0,y.jsx)(fe,{className:`sr-only`,children:m(`editor.dialogDescription`,`Editor for ${De(l)}`)})]}),(0,y.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[R&&(0,y.jsx)(ye,{query:B,onQueryChange:V,totalMatches:U,currentIndex:G,onNext:at,onPrev:ot,onClose:it,placeholder:m(`editor.searchPlaceholder`,`Find`),showIcon:!1,autoFocus:!0,inputRef:A,caseSensitive:$?q:void 0,onCaseSensitiveChange:$?Ye:void 0,wholeWord:$?J:void 0,onWholeWordChange:$?Xe:void 0,regex:$?Y:void 0,onRegexChange:$?Ze:void 0,testIdPrefix:`editor-search`,className:`border-border bg-popover absolute top-3 right-4 z-10 rounded-md border px-2 py-1 shadow-md`}),O&&Ie?(0,y.jsx)(ve,{className:`h-full`,children:(0,y.jsx)(`div`,{ref:He,className:h(xe,`px-8 py-6`),children:st})}):O&&E?(0,y.jsx)(E.Component,{source:S,src:Le,fill:!0}):(0,y.jsx)(v.Suspense,{fallback:(0,y.jsx)(`div`,{className:`h-full`}),children:(0,y.jsx)(we,{language:Fe,theme:$e,content:S,onChange:C,onMount:rt,showMinimap:w,codeFontSizePx:x,wordWrap:F&&P?`off`:`on`})})]})]})})}var Te={code({className:e,children:t,...n}){let r=/language-(\w+)/.exec(e||``)?.[1],i=r?me(r):void 0;if(i){let e=i.Component;return(0,y.jsx)(e,{source:String(t).trim()})}return e?(0,y.jsx)(`code`,{className:h(`text-xs`,e),...n,children:t}):(0,y.jsx)(`code`,{className:`bg-muted rounded px-1.5 py-0.5 text-xs`,...n,children:t})},pre({children:e}){return(0,y.jsx)(`pre`,{className:`bg-muted/50 overflow-auto rounded-md p-3 text-sm`,children:e})}};function S(e){return e.replace(/[\\`*_[\]]/g,`\\$&`)}function C(e,t){for(let n of e.hunks)if(t>=n.startLine&&t<n.startLine+n.lineCount)return n}function Ee(e,t,n){let r=C(n,e),i=r?`${r.author}, ${r.relativeDate} • ${r.summary}`:`You • Uncommitted changes`,a=r?{value:`**${S(r.summary)}**\n\n${S(r.author)} • ${r.relativeDate}\n\n\`${r.shortHash}\``}:{value:`_Not committed yet_`};return[{range:{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t},options:{after:{content:` ${i}`,inlineClassName:`monaco-blame-inline`},hoverMessage:a,showIfCollapsed:!0}}]}function De(e){return e.split(/[/\\]/).pop()||e}function Oe(e){let t=e.lastIndexOf(`.`);return t>Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))?e.substring(t+1):``}function ke(e,t){if(t){let e=De(t);if(/^\.env(\..+)?$/.test(e)||e===`.env`)return`dotenv`}return{env:`dotenv`,ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,cjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,go:`go`,java:`java`,kt:`kotlin`,swift:`swift`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,cs:`csharp`,md:`markdown`,mdx:`markdown`,json:`json`,yaml:`yaml`,yml:`yaml`,toml:`toml`,xml:`xml`,html:`html`,css:`css`,scss:`scss`,less:`less`,sql:`sql`,sh:`shell`,bash:`shell`,ps1:`powershell`,dockerfile:`dockerfile`,php:`php`,vue:`vue`,graphql:`graphql`}[e.toLowerCase()]||`plaintext`}export{x as MonacoEditorDialog};
|
package/packages/client/dist/assets/{OrchestratorView--Df-JFQd.js → OrchestratorView-wTF6Ae0A.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{$t as t,Rr as n,Y as r,r as i,tr as a,zr as o}from"./icons-sqwAEN28.js";import{o as s}from"./markdown-DBtwZWLP.js";import{_t as c,lt as l}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{$t as t,Rr as n,Y as r,r as i,tr as a,zr as o}from"./icons-sqwAEN28.js";import{o as s}from"./markdown-DBtwZWLP.js";import{_t as c,lt as l}from"./index-DNxUSLe_.js";import{t as u}from"./button-B9Ypx1uQ.js";import{Ft as d,Rt as f,at as p,in as m}from"./items-7qqySF-X.js";import{t as h}from"./loading-state-yLj5fYb6.js";import{useOrchestratorStore as g}from"./orchestrator-store-DP8UohlO.js";var _=e(o(),1),v=e(s(),1);function y(e){return e.nextRetryAtMs&&e.nextRetryAtMs>0?`retry-queued`:e.pipelineRunId?`dispatched`:`claimed`}function b({status:e}){return e===`dispatched`?(0,v.jsxs)(p,{variant:`default`,className:`gap-1`,children:[(0,v.jsx)(i,{className:`icon-2xs`}),` dispatched`]}):e===`retry-queued`?(0,v.jsxs)(p,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-600`,children:[(0,v.jsx)(t,{className:`icon-2xs`}),` retry-queued`]}):(0,v.jsxs)(p,{variant:`secondary`,className:`gap-1`,children:[(0,v.jsx)(a,{className:`icon-2xs`}),` claimed`]})}function x(e){if(!e)return`—`;let t=e-Date.now(),n=Math.round(Math.abs(t)/1e3),r=t<0;if(n<60)return r?`${n}s ago`:`in ${n}s`;let i=Math.round(n/60);if(i<60)return r?`${i}m ago`:`in ${i}m`;let a=Math.round(i/60);return r?`${a}h ago`:`in ${a}h`}function S(){let e=c(),t=g(e=>e.runsByThread),i=g(e=>e.loading),a=g(e=>e.refreshing),o=g(e=>e.lastError),s=g(e=>e.loadRuns),S=g(e=>e.refresh),C=d(),w=(0,_.useMemo)(()=>{let e=new Map;for(let t of Object.values(C))for(let n of t)e.set(n.id,{id:n.id,title:n.title??``,projectId:n.projectId});return t=>e.get(t)},[C]);(0,_.useEffect)(()=>{s()},[s]);let T=(0,_.useMemo)(()=>Object.values(t).sort((e,t)=>t.lastEventAtMs-e.lastEventAtMs),[t]);return(0,v.jsxs)(`div`,{className:`flex h-full min-w-0 flex-1 flex-col`,"data-testid":`orchestrator-view`,children:[(0,v.jsxs)(`div`,{className:`border-border flex items-center gap-3 border-b px-4 py-3`,children:[(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,v.jsx)(n,{className:`icon-sm text-muted-foreground`}),` Orchestrator queue`]}),(0,v.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:`Active runs claimed by the orchestrator. Updates in real time.`})]}),(0,v.jsxs)(u,{variant:`outline`,size:`sm`,onClick:()=>S(),disabled:a,"data-testid":`orchestrator-refresh`,children:[(0,v.jsx)(r,{className:l(`icon-xs`,a&&`animate-spin`)}),(0,v.jsx)(`span`,{className:`ml-1`,children:`Refresh`})]})]}),o&&(0,v.jsx)(`div`,{className:`border-destructive/20 bg-destructive/10 text-destructive border-b px-4 py-2 text-xs`,children:o}),(0,v.jsx)(m,{className:`min-h-0 flex-1`,children:i&&T.length===0?(0,v.jsx)(h,{testId:`orchestrator-loading`,label:`Loading…`}):T.length===0?(0,v.jsx)(`div`,{className:`text-muted-foreground px-4 py-12 text-center text-xs`,children:`No runs in flight. The orchestrator picks up queued threads on the next tick.`}):(0,v.jsx)(`ul`,{className:`divide-border divide-y`,children:T.map(t=>{let n=y(t),r=w(t.threadId);return(0,v.jsx)(`li`,{className:`hover:bg-accent/30 flex items-center gap-3 px-4 py-3`,"data-testid":`orchestrator-run-${t.threadId}`,children:(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`button`,{onClick:()=>{r?.projectId&&e(f(`/projects/${r.projectId}/threads/${t.threadId}`))},disabled:!r,className:l(`truncate text-sm font-medium`,r?`cursor-pointer hover:underline`:`cursor-default text-muted-foreground`),"data-testid":`orchestrator-run-open-${t.threadId}`,children:r?.title||t.threadId.slice(0,12)}),(0,v.jsx)(b,{status:n}),t.attempt>0&&(0,v.jsxs)(p,{variant:`outline`,className:`text-[10px]`,children:[`attempt `,t.attempt]})]}),(0,v.jsxs)(`div`,{className:`text-muted-foreground mt-1 flex flex-wrap items-center gap-3 text-xs`,children:[(0,v.jsxs)(`span`,{className:`font-mono`,children:[`thread `,t.threadId.slice(0,8)]}),t.pipelineRunId&&(0,v.jsxs)(`span`,{className:`font-mono`,children:[`pipeline `,t.pipelineRunId.slice(0,8)]}),(0,v.jsxs)(`span`,{children:[`last event `,x(t.lastEventAtMs)]}),t.nextRetryAtMs&&(0,v.jsxs)(`span`,{children:[`retry `,x(t.nextRetryAtMs)]})]}),t.lastError&&(0,v.jsx)(`div`,{className:`text-destructive mt-1 truncate text-xs`,title:t.lastError,children:t.lastError})]})},t.threadId)})})})]})}export{S as OrchestratorView};
|
package/packages/client/dist/assets/{PreferencesPanel-CAhnrHw0.js → PreferencesPanel-CpIL485D.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{$ as t,Cr as n,Dr as r,Et as i,Gn as a,Mr as o,Nt as s,R as c,Z as l,d as u,f as d,j as f,k as p,mt as m}from"./icons-sqwAEN28.js";import{o as h}from"./markdown-DBtwZWLP.js";import{t as g}from"./useTranslation-DAPPK3Hy.js";import{_t as _,k as v}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{$ as t,Cr as n,Dr as r,Et as i,Gn as a,Mr as o,Nt as s,R as c,Z as l,d as u,f as d,j as f,k as p,mt as m}from"./icons-sqwAEN28.js";import{o as h}from"./markdown-DBtwZWLP.js";import{t as g}from"./useTranslation-DAPPK3Hy.js";import{_t as _,k as v}from"./index-DNxUSLe_.js";import{Rt as y,gt as b,yr as x}from"./items-7qqySF-X.js";import{c as S,i as C,n as w,o as T,s as E}from"./sidebar-Dzb_F1kj.js";import{t as D}from"./tooltip-icon-button-8C1wJ-l9.js";var O=e(h(),1),k=[{id:`general`,label:`settings.general`,icon:f},{id:`providers`,label:`Providers`,icon:t},{id:`models`,label:`settings.models`,icon:p},{id:`appearance`,label:`settings.appearance`,icon:m},{id:`github`,label:`GitHub`,icon:b},{id:`ai-keys`,label:`AI Providers`,icon:r},{id:`speech`,label:`Speech`,icon:i},{id:`email`,label:`Email (SMTP)`,icon:s},{id:`users`,label:`Users`,icon:u},{id:`organizations`,label:`settings.organizations`,icon:n},{id:`team-members`,label:`Team Members`,icon:d},{id:`runners`,label:`settings.runners`,icon:c},{id:`agent-templates`,label:`settings.agentTemplates`,icon:r},{id:`extensions`,label:`Extensions`,icon:l},{id:`system`,label:`settings.system`,icon:a}],A=new Set([`email`,`users`,`organizations`,`team-members`,`extensions`,`system`]);function j(e,t){let n=k.find(t=>t.id===e);return n?n.label.startsWith(`settings.`)?t(n.label):n.label:e}function M(){let e=_(),{t}=g(),n=x(e=>e.activePreferencesPage),r=x(e=>e.settingsReturnPath),i=x(e=>e.setSettingsReturnPath),a=v(e=>e.user?.role===`admin`)?k:k.filter(e=>!A.has(e.id));return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(C,{className:`px-4 py-3`,children:(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(D,{onClick:()=>{let t=r??`/`;i(null),e(y(t))},className:`text-muted-foreground hover:text-foreground`,"data-testid":`preferences-back`,tooltip:t(`common.back`),children:(0,O.jsx)(o,{className:`icon-sm`})}),(0,O.jsx)(`h1`,{className:`text-sm font-medium`,children:t(`settings.title`)})]})}),(0,O.jsx)(w,{className:`px-2 pb-2`,children:(0,O.jsx)(T,{children:a.map(r=>{let i=r.icon;return(0,O.jsx)(S,{children:(0,O.jsxs)(E,{isActive:n===r.id,onClick:()=>e(y(`/preferences/${r.id}`)),"data-testid":`preferences-nav-${r.id}`,children:[(0,O.jsx)(i,{className:`icon-base`}),(0,O.jsx)(`span`,{children:r.label.startsWith(`settings.`)?t(r.label):r.label})]})},r.id)})})})]})}export{M as n,j as r,A as t};
|
package/packages/client/dist/assets/{PreviewBrowser-DKz2hR71.js → PreviewBrowser-CEXO1tHq.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/event-DtDdWjW6.js","assets/core-0_kFspMt.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Y as t,i as n,zn as r,zr as i}from"./icons-sqwAEN28.js";import{At as a}from"./mermaid-DOtnPRYX.js";import{o}from"./markdown-DBtwZWLP.js";import{G as s,W as c,lt as l,q as u}from"./index-
|
|
2
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Y as t,i as n,zn as r,zr as i}from"./icons-sqwAEN28.js";import{At as a}from"./mermaid-DOtnPRYX.js";import{o}from"./markdown-DBtwZWLP.js";import{G as s,W as c,lt as l,q as u}from"./index-DNxUSLe_.js";import{t as d}from"./button-B9Ypx1uQ.js";var f=e(i(),1),p=e(o(),1),m=!!window.__TAURI_INTERNALS__;function h(){let[e,i]=(0,f.useState)([]),[o,h]=(0,f.useState)(null),[g,_]=(0,f.useState)(0),v=e.find(e=>e.commandId===o);(0,f.useEffect)(()=>{if(!m)return;let e=[];return(async()=>{let{listen:t,emit:n}=await a(async()=>{let{listen:e,emit:t}=await import(`./event-DtDdWjW6.js`);return{listen:e,emit:t}},__vite__mapDeps([0,1])),r=await t(`preview:add-tab`,e=>{let t=e.payload;i(e=>e.some(e=>e.commandId===t.commandId)?e:[...e,t]),h(t.commandId)});e.push(r);let o=await t(`preview:remove-tab`,e=>{let{commandId:t}=e.payload;i(e=>e.filter(e=>e.commandId!==t)),h(e=>e===t?null:e)});e.push(o);let s=await t(`preview:focus-tab`,e=>{h(e.payload.commandId)});e.push(s);let c=await t(`preview:refresh-tab`,e=>{_(e=>e+1)});e.push(c),await n(`preview:ready`,{})})(),()=>{e.forEach(e=>e())}},[]),(0,f.useEffect)(()=>{o&&!e.some(e=>e.commandId===o)&&h(e[e.length-1]?.commandId??null)},[e,o]);let y=()=>_(e=>e+1),b=async t=>{if(i(e=>e.filter(e=>e.commandId!==t)),o===t){let n=e.filter(e=>e.commandId!==t);h(n[n.length-1]?.commandId??null)}if(m){let{emit:e}=await a(async()=>{let{emit:e}=await import(`./event-DtDdWjW6.js`);return{emit:e}},__vite__mapDeps([0,1]));e(`preview:tab-closed`,{commandId:t})}};return(0,p.jsxs)(`div`,{className:`bg-background text-foreground flex h-screen flex-col`,children:[(0,p.jsxs)(`div`,{className:`border-border bg-muted/30 flex min-h-[36px] items-center border-b`,children:[(0,p.jsx)(`div`,{className:`flex flex-1 items-center overflow-x-auto`,children:e.map(e=>(0,p.jsxs)(`div`,{className:l(`flex items-center gap-1.5 px-3 py-1.5 text-xs cursor-pointer border-r border-border min-w-0 max-w-[200px] group`,e.commandId===o?`bg-background text-foreground`:`text-muted-foreground hover:bg-accent/50`),onClick:()=>h(e.commandId),children:[(0,p.jsx)(`span`,{className:`truncate`,children:e.label}),(0,p.jsxs)(`span`,{className:`text-muted-foreground/60 shrink-0 text-xs`,children:[`:`,e.port]}),(0,p.jsx)(`button`,{onClick:t=>{t.stopPropagation(),b(e.commandId)},className:`hover:text-status-error ml-auto shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,children:(0,p.jsx)(n,{className:`icon-xs`})})]},e.commandId))}),v&&(0,p.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 px-2`,children:[(0,p.jsxs)(`span`,{className:`text-muted-foreground mr-1 font-mono text-xs`,children:[`localhost:`,v.port]}),(0,p.jsxs)(c,{children:[(0,p.jsx)(u,{asChild:!0,children:(0,p.jsx)(d,{variant:`ghost`,size:`icon-xs`,onClick:y,"aria-label":`Refresh`,className:`text-muted-foreground hover:text-foreground`,children:(0,p.jsx)(t,{className:`icon-sm`})})}),(0,p.jsx)(s,{children:`Refresh`})]}),(0,p.jsxs)(c,{children:[(0,p.jsx)(u,{asChild:!0,children:(0,p.jsx)(d,{variant:`ghost`,size:`icon-xs`,onClick:()=>{v&&window.open(`http://localhost:${v.port}`,`_blank`)},"aria-label":`Open in browser`,className:`text-muted-foreground hover:text-foreground`,children:(0,p.jsx)(r,{className:`icon-sm`})})}),(0,p.jsx)(s,{children:`Open in browser`})]})]})]}),(0,p.jsx)(`div`,{className:`relative flex-1`,children:v?(0,p.jsx)(`iframe`,{src:`http://localhost:${v.port}`,className:`h-full w-full border-0`,title:`Preview: ${v.label}`},`${v.commandId}-${g}`):(0,p.jsx)(`div`,{className:`text-muted-foreground flex h-full items-center justify-center text-sm`,children:`No previews open. Start a command with a port to see it here.`})})]})}export{h as PreviewBrowser};
|
package/packages/client/dist/assets/{ProjectFilesPane-BbOGQ3kp.js → ProjectFilesPane-02_p9zry.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Y as t,xn as n,yn as r,zr as i}from"./icons-sqwAEN28.js";import{o as a}from"./markdown-DBtwZWLP.js";import{t as o}from"./useTranslation-DAPPK3Hy.js";import{G as s,P as c,W as l,j as u,q as d}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Y as t,xn as n,yn as r,zr as i}from"./icons-sqwAEN28.js";import{o as a}from"./markdown-DBtwZWLP.js";import{t as o}from"./useTranslation-DAPPK3Hy.js";import{G as s,P as c,W as l,j as u,q as d}from"./index-DNxUSLe_.js";import{t as f}from"./button-B9Ypx1uQ.js";import{Dr as p,Ot as m,Pt as h,W as g,dn as _,mn as v,yr as y,zr as b}from"./items-7qqySF-X.js";import{t as x}from"./media-preview-store-ButZu4P3.js";import{_ as S,g as C}from"./StashTab-BswTfOlb.js";import{r as w,t as T}from"./FileTree-Bl25zGAE.js";import{t as E}from"./loading-state-yLj5fYb6.js";import{r as D}from"./MediaPreview-DmMe4hGN.js";var O=e(i(),1),k=e(a(),1),A=u(`project-files-pane`),j=1e4,M=`project-files-collapsed:`;function N(e){return e?`${M}${e}`:null}function P(e){let t=N(e);if(!t)return null;try{let e=localStorage.getItem(t);if(!e)return null;let n=JSON.parse(e);if(Array.isArray(n))return new Set(n.filter(e=>typeof e==`string`))}catch{}return null}function F(e,t){let n=N(e);if(n)try{localStorage.setItem(n,JSON.stringify([...t]))}catch{}}function I(){let{t:e}=o(),i=y(e=>e.designViewDesignId),a=C(),u=h(S()),M=p(e=>e.projects).find(e=>e.id===a),N=m(),I=(0,O.useMemo)(()=>i&&M?.path?`${M.path}/designs/${i}`:N||u?.worktreePath||M?.path,[i,M?.path,N,u?.worktreePath]),[L,R]=(0,O.useState)([]),[z,B]=(0,O.useState)(!1),[V,H]=(0,O.useState)(!1),[U,W]=(0,O.useState)(``),[G,K]=(0,O.useState)(!1),[q,J]=(0,O.useState)(new Set),Y=(0,O.useRef)(0),X=(0,O.useRef)(null),Z=(0,O.useCallback)(()=>{if(!I)return;let e=++Y.current;B(!0),c.browseFiles(I,void 0,j).then(t=>{e===Y.current&&(t.isOk()?(R(t.value.files.map(e=>typeof e==`string`?e:e.path)),H(t.value.truncated)):(A.error(`Failed to load project files`,{error:String(t.error)}),R([]),H(!1)),B(!1))})},[I]);(0,O.useEffect)(()=>(Z(),()=>{Y.current++}),[Z]),(0,O.useEffect)(()=>{X.current=null;let e=P(I);J(e??new Set),e&&(X.current=I??null)},[I]);let Q=(0,O.useMemo)(()=>L.map(e=>({path:e,status:`modified`,staged:!1})),[L]);(0,O.useEffect)(()=>{if(X.current===(I??null)||L.length===0)return;let e=w(Q);J(e),F(I,e),X.current=I??null},[I,L,Q]);let $=(0,O.useMemo)(()=>{let e=U.trim();if(!e)return Q;if(G)return Q.filter(t=>t.path.includes(e));let t=e.toLowerCase();return Q.filter(e=>e.path.toLowerCase().includes(t))},[Q,U,G]),ee=(0,O.useCallback)(e=>{J(e),F(I,e)},[I]),te=(0,O.useCallback)(()=>{let e=w($);J(e),F(I,e)},[$,I]),ne=(0,O.useCallback)(()=>{let e=new Set;J(e),F(I,e)},[I]),re=(0,O.useCallback)(e=>{if(!I)return;let t=`${I}/${e}`,n=e.split(`/`).pop()??e;if(D(n)){x.getState().open(t);return}if(g(_(n))?.contributes.binary){b.getState().openBinaryFile(t);return}b.getState().openFile(t)},[I]);return(0,k.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,k.jsxs)(`div`,{className:`border-border flex shrink-0 items-center gap-0.5 border-b px-2 py-1`,children:[(0,k.jsxs)(l,{children:[(0,k.jsx)(d,{asChild:!0,children:(0,k.jsx)(f,{variant:`ghost`,size:`icon-sm`,onClick:te,disabled:!I||L.length===0,"data-testid":`project-files-collapse-all`,className:`text-muted-foreground`,children:(0,k.jsx)(n,{className:`icon-base`})})}),(0,k.jsx)(s,{side:`bottom`,children:e(`common.collapseAll`,`Collapse all folders`)})]}),(0,k.jsxs)(l,{children:[(0,k.jsx)(d,{asChild:!0,children:(0,k.jsx)(f,{variant:`ghost`,size:`icon-sm`,onClick:ne,disabled:!I||L.length===0,"data-testid":`project-files-expand-all`,className:`text-muted-foreground`,children:(0,k.jsx)(r,{className:`icon-base`})})}),(0,k.jsx)(s,{side:`bottom`,children:e(`common.expandAll`,`Expand all folders`)})]}),(0,k.jsxs)(l,{children:[(0,k.jsx)(d,{asChild:!0,children:(0,k.jsx)(f,{variant:`ghost`,size:`icon-sm`,onClick:Z,disabled:z||!I,"data-testid":`project-files-refresh`,className:`text-muted-foreground`,children:(0,k.jsx)(t,{className:z?`icon-base animate-spin`:`icon-base`})})}),(0,k.jsx)(s,{side:`bottom`,children:e(`common.refresh`,`Refresh`)})]})]}),(0,k.jsx)(`div`,{className:`border-sidebar-border shrink-0 border-b px-2 py-1`,children:(0,k.jsx)(v,{query:U,onQueryChange:W,placeholder:e(`projectFiles.filterPlaceholder`,`Filter files…`),totalMatches:$.length,resultLabel:U?`${$.length}/${Q.length}`:``,caseSensitive:G,onCaseSensitiveChange:K,onClose:U?()=>W(``):void 0,autoFocus:!1,testIdPrefix:`project-files-filter`})}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:I?z&&L.length===0?(0,k.jsx)(E,{testId:`project-files-loading`,label:e(`projectFiles.loading`,`Loading files...`)}):$.length===0?(0,k.jsx)(`div`,{className:`text-muted-foreground flex h-full items-center justify-center text-xs`,children:U?e(`projectFiles.noMatches`,`No files match your filter`):e(`projectFiles.empty`,`No files in this project`)}):(0,k.jsx)(T,{files:$,onFileClick:re,basePath:I,virtualize:!0,hideStatus:!0,hideDiffStats:!0,searchQuery:U,testIdPrefix:`project-files`,collapsedFolders:q,onCollapsedFoldersChange:ee}):(0,k.jsx)(`div`,{className:`text-muted-foreground flex h-full items-center justify-center text-xs`,children:e(`projectFiles.noProject`,`Select a project first`)})}),V&&(0,k.jsx)(`div`,{className:`border-border text-muted-foreground shrink-0 border-t px-3 py-1.5 text-center text-xs`,children:e(`projectFiles.truncated`,{limit:j,defaultValue:`Showing first ${j} files`})})]})}export{I as ProjectFilesPane};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Bn as t,D as n,G as r,I as i,Ir as a,Kn as o,Lt as s,Mr as c,Ot as l,Rr as u,Sn as d,Tt as f,Ut as p,_n as ee,b as m,dn as h,et as g,i as _,k as v,nr as y,nt as b,on as x,pn as S,qn as C,rt as w,un as te,w as T,yr as E,zn as D,zr as O}from"./icons-sqwAEN28.js";import{o as k}from"./markdown-DBtwZWLP.js";import{t as ne}from"./useTranslation-DAPPK3Hy.js";import{F as A,G as j,P as M,W as N,d as re,dt as ie,gt as ae,j as P,k as oe,lt as se,q as F}from"./index-Bmp1UFM1.js";import{t as I}from"./button-Bi9_EZFh.js";import{$ as ce,$n as le,$r as ue,An as de,Ar as fe,Ct as pe,Dn as me,Dr as he,Dt as ge,Et as L,Fr as _e,Gn as R,Gr as z,Ir as ve,Jn as B,K as ye,Kn as V,Kr as be,Lr as xe,Lt as Se,Mn as Ce,Mr as we,On as Te,Ot as Ee,P as H,Qn as De,Rr as Oe,Rt as U,Tt as ke,Un as W,Ur as G,Xn as Ae,Xr as je,Yr as Me,Z as Ne,Zn as K,a as q,c as Pe,d as Fe,ei as Ie,er as Le,et as Re,jn as ze,jr as Be,k as Ve,l as He,m as Ue,nt as We,p as J,qr as Ge,rt as Y,sr as Ke,tn as qe,tr as Je,tt as Ye,vt as Xe,yr as X}from"./items-C-m69VjA.js";import{t as Ze}from"./input-BGZP-HTx.js";import{r as Z}from"./kbd-BrgsdFIb.js";import{t as Qe}from"./use-stable-navigate-uXVRGpin.js";import{useBrowserPanelStore as $e}from"./browser-panel-store-3T75tTA2.js";var Q=e(k(),1),$=e(O(),1);function et(){let[e,t]=(0,$.useState)(!1),[n,r]=(0,$.useState)(!1),i=(0,$.useRef)(null),a=(0,$.useCallback)(e=>{e?(i.current&&clearTimeout(i.current),t(!0)):(document.activeElement?.blur(),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>t(!1),200))},[]);return(0,$.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]),{tooltipProps:{open:!e&&n,onOpenChange:r},menuProps:{onOpenChange:a},contentProps:{onCloseAutoFocus:e=>e.preventDefault()}}}var tt=P(`thread-share`),nt={view:`Viewer`,comment:`Commenter`,steer:`Editor`},rt={view:`View the thread (read-only).`,comment:`View the thread and leave comments.`,steer:`View, comment, read-only git, and send follow-ups to the agent.`};function it(e){return`Can ${e===`steer`?`edit`:e===`comment`?`comment`:`view`}`}function at({threadId:e,projectId:t}){let n=oe(e=>e.user?.id??null),r=oe(e=>e.user?.displayName??e.user?.username??`You`),a=L(e=>e?.userId??null),o=L(e=>e?.title??null),s=!!n&&a===n,c=X(e=>e.shareDialogOpen),l=X(e=>e.setShareDialogOpen),[u,d]=(0,$.useState)([]),[f,ee]=(0,$.useState)([]),[m,h]=(0,$.useState)(!1),[g,v]=(0,$.useState)(!1),[y,b]=(0,$.useState)(`view`);(0,$.useEffect)(()=>{l(!1)},[e]);let x=(0,$.useCallback)(async()=>{(await A.listThreadShares(e)).match(e=>d(e),e=>tt.warn(`Failed to list thread shares`,{error:String(e)}))},[e]);(0,$.useEffect)(()=>{c&&(x(),M.listProjectMembers(t).then(e=>{e.match(({members:e})=>{ee(e.map(e=>({userId:e.userId,name:e.user?.name??e.user?.username??e.user?.email??e.userId})).filter(e=>e.userId&&e.userId!==n))},e=>tt.warn(`Failed to load project members`,{error:String(e)}))}))},[c,t,n,x]);let S=async t=>{h(!0),(await A.shareThread(e,t,y)).mapErr(e=>{tt.warn(`Failed to share thread`,{error:String(e)}),G.error(`Could not share thread`,{description:String(e)})}),await x(),h(!1)},C=async t=>{h(!0),await A.unshareThread(e,t),await x(),h(!1)},w=()=>{let n=`${window.location.origin}${U(ve({id:e,projectId:t,isScratch:!1}))}`;navigator.clipboard?.writeText(n),v(!0),setTimeout(()=>v(!1),1500)};if(!s)return null;let te=new Set(u.map(e=>e.sharedWithUserId)),T=f.filter(e=>!te.has(e.userId));return(0,Q.jsxs)(z,{open:c,onOpenChange:l,children:[(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(Ie,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,"data-testid":`header-share-thread`,className:u.length>0?`text-status-info`:`text-muted-foreground`,children:(0,Q.jsx)(i,{className:`icon-base`})})})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:`Share thread`,keys:[`Alt`,`H`]})})]}),(0,Q.jsxs)(Ge,{className:`max-w-md gap-0 overflow-hidden p-0`,"data-testid":`share-thread-dialog`,children:[(0,Q.jsx)(je,{className:`min-w-0 px-6 pt-6 pb-0`,children:(0,Q.jsx)(ue,{className:`min-w-0 leading-snug break-words`,style:{overflowWrap:`anywhere`},children:o?`Share “${o}”`:`Share this thread`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 px-6 pt-4`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground mb-1.5 text-xs font-medium`,children:`Access level`}),(0,Q.jsx)(`div`,{className:`bg-muted/50 inline-flex rounded-md p-0.5`,role:`group`,"data-testid":`share-level-picker`,children:[`view`,`comment`,`steer`].map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>b(e),"aria-pressed":y===e,"data-testid":`share-level-${e}`,className:se(`rounded px-3 py-1 text-xs font-medium transition-colors`,y===e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:nt[e]},e))}),(0,Q.jsx)(`p`,{className:`text-muted-foreground mt-1.5 text-[11px]`,children:rt[y]})]}),(0,Q.jsx)(`div`,{className:`min-w-0 px-6 pt-4`,children:(0,Q.jsxs)(Ne,{className:`rounded-lg border`,shouldFilter:!0,children:[(0,Q.jsx)(Ye,{placeholder:`Add a project member…`,className:`h-10`}),(0,Q.jsxs)(Y,{className:`max-h-44`,children:[(0,Q.jsx)(ce,{className:`text-muted-foreground py-6 text-center text-sm`,children:`No project members to add.`}),(0,Q.jsx)(Re,{children:T.map(e=>(0,Q.jsxs)(We,{value:e.name,disabled:m,onSelect:()=>void S(e.userId),className:`gap-2`,"data-testid":`share-add-${e.userId}`,children:[(0,Q.jsx)(me,{className:`h-7 w-7 shrink-0`,children:(0,Q.jsx)(Te,{name:e.name,className:`text-xs`,children:e.name.charAt(0).toUpperCase()})}),(0,Q.jsx)(`span`,{className:`truncate text-sm`,children:e.name})]},e.userId))})]})]})}),(0,Q.jsxs)(`div`,{className:`min-w-0 px-6 pt-5`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground mb-2 text-xs font-medium`,children:`People with access`}),(0,Q.jsxs)(`div`,{className:`space-y-1`,"data-testid":`share-current-list`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-1 py-1.5`,children:[(0,Q.jsx)(me,{className:`h-8 w-8 shrink-0`,children:(0,Q.jsx)(Te,{name:r,className:`text-xs`,children:r.charAt(0).toUpperCase()})}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsxs)(`p`,{className:`truncate text-sm font-medium`,children:[r,` (you)`]})}),(0,Q.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-xs`,children:`Owner`})]}),u.map(e=>(0,Q.jsxs)(`div`,{className:`hover:bg-muted/50 flex items-center gap-3 rounded-md px-1 py-1.5`,"data-testid":`share-row-${e.sharedWithUserId}`,children:[(0,Q.jsx)(me,{className:`h-8 w-8 shrink-0`,children:(0,Q.jsx)(Te,{name:e.user?.name??e.sharedWithUserId,className:`text-xs`,children:(e.user?.name??`?`).charAt(0).toUpperCase()})}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsx)(`p`,{className:`truncate text-sm`,children:e.user?.name??e.sharedWithUserId})}),(0,Q.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-xs`,"data-testid":`share-row-level-${e.sharedWithUserId}`,children:it(e.level??`view`)}),(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground hover:text-status-danger h-7 w-7 shrink-0`,disabled:m,onClick:()=>C(e.sharedWithUserId),"data-testid":`share-revoke-${e.sharedWithUserId}`,"aria-label":`Remove access`,children:(0,Q.jsx)(_,{className:`h-4 w-4`})})]},e.sharedWithUserId))]})]}),(0,Q.jsxs)(Me,{className:`mt-5 items-center justify-between border-t px-6 py-4 sm:justify-between`,children:[(0,Q.jsxs)(I,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:w,"data-testid":`share-copy-link`,children:[g?(0,Q.jsx)(E,{className:`h-4 w-4`}):(0,Q.jsx)(p,{className:`h-4 w-4`}),g?`Copied`:`Copy link`]}),(0,Q.jsx)(be,{asChild:!0,children:(0,Q.jsx)(I,{size:`sm`,"data-testid":`share-done`,children:`Done`})})]})]})]})}function ot({projectId:e,threadId:t,worktreeBranch:i}){let{t:a}=ne(),[o,c]=(0,$.useState)([]),[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(null),{tooltipProps:p,menuProps:ee,contentProps:m}=et(),h=H(e=>e.tabs),_=new Set;for(let e of h)e.commandId&&e.alive&&_.add(e.commandId);let v=(0,$.useCallback)(async()=>{let t=await M.listCommands(e);t.isOk()&&c(t.value)},[e]);(0,$.useEffect)(()=>{l&&v()},[l,v]);let y=async n=>{if(d)return;f(n.id);let r=await M.runCommand(e,n.id,t);if(f(null),r.isErr()){G.error(a(`startup.commandRunError`,`Failed to start command`));return}H.getState().addTab({id:crypto.randomUUID(),label:n.label,cwd:``,alive:!0,commandId:n.id,projectId:e})},b=async t=>{(await M.stopCommand(e,t.id)).isErr()&&G.error(a(`startup.commandStopError`,`Failed to stop command`))},x=o.some(e=>_.has(e.id));return(0,Q.jsxs)(de,{open:l,onOpenChange:e=>{u(e),ee.onOpenChange(e)},children:[(0,Q.jsxs)(N,{...p,children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(Ce,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-startup-commands`,variant:`ghost`,size:`icon-sm`,className:x?`text-status-success`:`text-muted-foreground`,children:(0,Q.jsx)(r,{className:`icon-base`})})})}),(0,Q.jsx)(j,{children:a(`startup.title`,`Startup Commands`)})]}),(0,Q.jsxs)(ze,{align:`end`,className:`w-64 p-2`,...m,children:[t&&(0,Q.jsxs)(`div`,{"data-testid":`startup-worktree-banner`,className:`border-border/60 bg-muted/40 text-muted-foreground mb-2 flex items-center gap-1.5 rounded-md border px-2 py-1.5 text-xs`,children:[(0,Q.jsx)(S,{className:`icon-xs shrink-0`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[a(`startup.inWorktree`,`In worktree`),i?(0,Q.jsxs)(Q.Fragment,{children:[`: `,(0,Q.jsx)(`span`,{className:`text-foreground font-mono`,children:i})]}):null]})]}),o.length===0?(0,Q.jsx)(`p`,{className:`text-muted-foreground py-3 text-center text-xs`,children:a(`startup.noCommands`)}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:o.map(e=>{let t=_.has(e.id),r=d===e.id;return(0,Q.jsxs)(`div`,{className:`hover:bg-accent/50 flex items-center justify-between gap-2 rounded-md px-2 py-1.5 transition-colors`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t&&(0,Q.jsx)(s,{className:`icon-xs text-status-success shrink-0 animate-spin`}),(0,Q.jsx)(`span`,{className:`truncate text-sm`,children:e.label})]}),(0,Q.jsx)(`span`,{className:`text-muted-foreground mt-0.5 block truncate font-mono text-xs`,children:e.command})]}),t?(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,onClick:()=>b(e),className:`text-status-error hover:text-status-error/80 shrink-0`,children:(0,Q.jsx)(n,{className:`icon-xs`})}):(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,onClick:()=>y(e),disabled:!!d,className:`text-status-success hover:text-status-success/80 shrink-0`,children:r?(0,Q.jsx)(s,{className:`icon-xs animate-spin`}):(0,Q.jsx)(g,{className:`icon-xs`})})]},e.id)})})]})]})}function st(e,t){let n=[];for(let r of e){let e=r.role===`user`?`User`:r.role===`assistant`?`Assistant`:`System`;if(r.content?.trim()&&n.push(`## ${e}\n\n${r.content.trim()}\n`),t&&r.toolCalls?.length)for(let e of r.toolCalls){let t=``;try{let n=typeof e.input==`string`?JSON.parse(e.input):e.input;t=JSON.stringify(n,null,2)}catch{t=String(e.input)}n.push(`### Tool: ${e.name}\n\n\`\`\`json\n${t}\n\`\`\`\n`),e.output&&n.push(`**Output:**\n\n\`\`\`\n${e.output}\n\`\`\`\n`)}}return n.join(`
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Bn as t,D as n,G as r,I as i,Ir as a,Kn as o,Lt as s,Mr as c,Ot as l,Rr as u,Sn as d,Tt as f,Ut as p,_n as ee,b as m,dn as h,et as g,i as _,k as v,nr as y,nt as b,on as x,pn as S,qn as C,rt as w,un as te,w as T,yr as E,zn as D,zr as O}from"./icons-sqwAEN28.js";import{o as k}from"./markdown-DBtwZWLP.js";import{t as ne}from"./useTranslation-DAPPK3Hy.js";import{F as A,G as j,P as M,W as N,d as re,dt as ie,gt as ae,j as P,k as oe,lt as se,q as F}from"./index-DNxUSLe_.js";import{t as I}from"./button-B9Ypx1uQ.js";import{$ as ce,$n as le,$r as ue,An as de,Ar as fe,Ct as pe,Dn as me,Dr as he,Dt as ge,Et as L,Fr as _e,Gn as R,Gr as z,Ir as ve,Jn as B,K as ye,Kn as V,Kr as be,Lr as xe,Lt as Se,Mn as Ce,Mr as we,On as Te,Ot as Ee,P as H,Qn as De,Rr as Oe,Rt as U,Tt as ke,Un as W,Ur as G,Xn as Ae,Xr as je,Yr as Me,Z as Ne,Zn as K,a as q,c as Pe,d as Fe,ei as Ie,er as Le,et as Re,jn as ze,jr as Be,k as Ve,l as He,m as Ue,nt as We,p as J,qr as Ge,rt as Y,sr as Ke,tn as qe,tr as Je,tt as Ye,vt as Xe,yr as X}from"./items-7qqySF-X.js";import{t as Ze}from"./input-CJ3TsT2L.js";import{r as Z}from"./kbd-d4Wzagpn.js";import{t as Qe}from"./use-stable-navigate-Cz_jWBHP.js";import{useBrowserPanelStore as $e}from"./browser-panel-store-CSx5jc7O.js";var Q=e(k(),1),$=e(O(),1);function et(){let[e,t]=(0,$.useState)(!1),[n,r]=(0,$.useState)(!1),i=(0,$.useRef)(null),a=(0,$.useCallback)(e=>{e?(i.current&&clearTimeout(i.current),t(!0)):(document.activeElement?.blur(),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>t(!1),200))},[]);return(0,$.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]),{tooltipProps:{open:!e&&n,onOpenChange:r},menuProps:{onOpenChange:a},contentProps:{onCloseAutoFocus:e=>e.preventDefault()}}}var tt=P(`thread-share`),nt={view:`Viewer`,comment:`Commenter`,steer:`Editor`},rt={view:`View the thread (read-only).`,comment:`View the thread and leave comments.`,steer:`View, comment, read-only git, and send follow-ups to the agent.`};function it(e){return`Can ${e===`steer`?`edit`:e===`comment`?`comment`:`view`}`}function at({threadId:e,projectId:t}){let n=oe(e=>e.user?.id??null),r=oe(e=>e.user?.displayName??e.user?.username??`You`),a=L(e=>e?.userId??null),o=L(e=>e?.title??null),s=!!n&&a===n,c=X(e=>e.shareDialogOpen),l=X(e=>e.setShareDialogOpen),[u,d]=(0,$.useState)([]),[f,ee]=(0,$.useState)([]),[m,h]=(0,$.useState)(!1),[g,v]=(0,$.useState)(!1),[y,b]=(0,$.useState)(`view`);(0,$.useEffect)(()=>{l(!1)},[e]);let x=(0,$.useCallback)(async()=>{(await A.listThreadShares(e)).match(e=>d(e),e=>tt.warn(`Failed to list thread shares`,{error:String(e)}))},[e]);(0,$.useEffect)(()=>{c&&(x(),M.listProjectMembers(t).then(e=>{e.match(({members:e})=>{ee(e.map(e=>({userId:e.userId,name:e.user?.name??e.user?.username??e.user?.email??e.userId})).filter(e=>e.userId&&e.userId!==n))},e=>tt.warn(`Failed to load project members`,{error:String(e)}))}))},[c,t,n,x]);let S=async t=>{h(!0),(await A.shareThread(e,t,y)).mapErr(e=>{tt.warn(`Failed to share thread`,{error:String(e)}),G.error(`Could not share thread`,{description:String(e)})}),await x(),h(!1)},C=async t=>{h(!0),await A.unshareThread(e,t),await x(),h(!1)},w=()=>{let n=`${window.location.origin}${U(ve({id:e,projectId:t,isScratch:!1}))}`;navigator.clipboard?.writeText(n),v(!0),setTimeout(()=>v(!1),1500)};if(!s)return null;let te=new Set(u.map(e=>e.sharedWithUserId)),T=f.filter(e=>!te.has(e.userId));return(0,Q.jsxs)(z,{open:c,onOpenChange:l,children:[(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(Ie,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,"data-testid":`header-share-thread`,className:u.length>0?`text-status-info`:`text-muted-foreground`,children:(0,Q.jsx)(i,{className:`icon-base`})})})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:`Share thread`,keys:[`Alt`,`H`]})})]}),(0,Q.jsxs)(Ge,{className:`max-w-md gap-0 overflow-hidden p-0`,"data-testid":`share-thread-dialog`,children:[(0,Q.jsx)(je,{className:`min-w-0 px-6 pt-6 pb-0`,children:(0,Q.jsx)(ue,{className:`min-w-0 leading-snug break-words`,style:{overflowWrap:`anywhere`},children:o?`Share “${o}”`:`Share this thread`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 px-6 pt-4`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground mb-1.5 text-xs font-medium`,children:`Access level`}),(0,Q.jsx)(`div`,{className:`bg-muted/50 inline-flex rounded-md p-0.5`,role:`group`,"data-testid":`share-level-picker`,children:[`view`,`comment`,`steer`].map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>b(e),"aria-pressed":y===e,"data-testid":`share-level-${e}`,className:se(`rounded px-3 py-1 text-xs font-medium transition-colors`,y===e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:nt[e]},e))}),(0,Q.jsx)(`p`,{className:`text-muted-foreground mt-1.5 text-[11px]`,children:rt[y]})]}),(0,Q.jsx)(`div`,{className:`min-w-0 px-6 pt-4`,children:(0,Q.jsxs)(Ne,{className:`rounded-lg border`,shouldFilter:!0,children:[(0,Q.jsx)(Ye,{placeholder:`Add a project member…`,className:`h-10`}),(0,Q.jsxs)(Y,{className:`max-h-44`,children:[(0,Q.jsx)(ce,{className:`text-muted-foreground py-6 text-center text-sm`,children:`No project members to add.`}),(0,Q.jsx)(Re,{children:T.map(e=>(0,Q.jsxs)(We,{value:e.name,disabled:m,onSelect:()=>void S(e.userId),className:`gap-2`,"data-testid":`share-add-${e.userId}`,children:[(0,Q.jsx)(me,{className:`h-7 w-7 shrink-0`,children:(0,Q.jsx)(Te,{name:e.name,className:`text-xs`,children:e.name.charAt(0).toUpperCase()})}),(0,Q.jsx)(`span`,{className:`truncate text-sm`,children:e.name})]},e.userId))})]})]})}),(0,Q.jsxs)(`div`,{className:`min-w-0 px-6 pt-5`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground mb-2 text-xs font-medium`,children:`People with access`}),(0,Q.jsxs)(`div`,{className:`space-y-1`,"data-testid":`share-current-list`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md px-1 py-1.5`,children:[(0,Q.jsx)(me,{className:`h-8 w-8 shrink-0`,children:(0,Q.jsx)(Te,{name:r,className:`text-xs`,children:r.charAt(0).toUpperCase()})}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsxs)(`p`,{className:`truncate text-sm font-medium`,children:[r,` (you)`]})}),(0,Q.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-xs`,children:`Owner`})]}),u.map(e=>(0,Q.jsxs)(`div`,{className:`hover:bg-muted/50 flex items-center gap-3 rounded-md px-1 py-1.5`,"data-testid":`share-row-${e.sharedWithUserId}`,children:[(0,Q.jsx)(me,{className:`h-8 w-8 shrink-0`,children:(0,Q.jsx)(Te,{name:e.user?.name??e.sharedWithUserId,className:`text-xs`,children:(e.user?.name??`?`).charAt(0).toUpperCase()})}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsx)(`p`,{className:`truncate text-sm`,children:e.user?.name??e.sharedWithUserId})}),(0,Q.jsx)(`span`,{className:`text-muted-foreground shrink-0 text-xs`,"data-testid":`share-row-level-${e.sharedWithUserId}`,children:it(e.level??`view`)}),(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground hover:text-status-danger h-7 w-7 shrink-0`,disabled:m,onClick:()=>C(e.sharedWithUserId),"data-testid":`share-revoke-${e.sharedWithUserId}`,"aria-label":`Remove access`,children:(0,Q.jsx)(_,{className:`h-4 w-4`})})]},e.sharedWithUserId))]})]}),(0,Q.jsxs)(Me,{className:`mt-5 items-center justify-between border-t px-6 py-4 sm:justify-between`,children:[(0,Q.jsxs)(I,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:w,"data-testid":`share-copy-link`,children:[g?(0,Q.jsx)(E,{className:`h-4 w-4`}):(0,Q.jsx)(p,{className:`h-4 w-4`}),g?`Copied`:`Copy link`]}),(0,Q.jsx)(be,{asChild:!0,children:(0,Q.jsx)(I,{size:`sm`,"data-testid":`share-done`,children:`Done`})})]})]})]})}function ot({projectId:e,threadId:t,worktreeBranch:i}){let{t:a}=ne(),[o,c]=(0,$.useState)([]),[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(null),{tooltipProps:p,menuProps:ee,contentProps:m}=et(),h=H(e=>e.tabs),_=new Set;for(let e of h)e.commandId&&e.alive&&_.add(e.commandId);let v=(0,$.useCallback)(async()=>{let t=await M.listCommands(e);t.isOk()&&c(t.value)},[e]);(0,$.useEffect)(()=>{l&&v()},[l,v]);let y=async n=>{if(d)return;f(n.id);let r=await M.runCommand(e,n.id,t);if(f(null),r.isErr()){G.error(a(`startup.commandRunError`,`Failed to start command`));return}H.getState().addTab({id:crypto.randomUUID(),label:n.label,cwd:``,alive:!0,commandId:n.id,projectId:e})},b=async t=>{(await M.stopCommand(e,t.id)).isErr()&&G.error(a(`startup.commandStopError`,`Failed to stop command`))},x=o.some(e=>_.has(e.id));return(0,Q.jsxs)(de,{open:l,onOpenChange:e=>{u(e),ee.onOpenChange(e)},children:[(0,Q.jsxs)(N,{...p,children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(Ce,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-startup-commands`,variant:`ghost`,size:`icon-sm`,className:x?`text-status-success`:`text-muted-foreground`,children:(0,Q.jsx)(r,{className:`icon-base`})})})}),(0,Q.jsx)(j,{children:a(`startup.title`,`Startup Commands`)})]}),(0,Q.jsxs)(ze,{align:`end`,className:`w-64 p-2`,...m,children:[t&&(0,Q.jsxs)(`div`,{"data-testid":`startup-worktree-banner`,className:`border-border/60 bg-muted/40 text-muted-foreground mb-2 flex items-center gap-1.5 rounded-md border px-2 py-1.5 text-xs`,children:[(0,Q.jsx)(S,{className:`icon-xs shrink-0`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[a(`startup.inWorktree`,`In worktree`),i?(0,Q.jsxs)(Q.Fragment,{children:[`: `,(0,Q.jsx)(`span`,{className:`text-foreground font-mono`,children:i})]}):null]})]}),o.length===0?(0,Q.jsx)(`p`,{className:`text-muted-foreground py-3 text-center text-xs`,children:a(`startup.noCommands`)}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:o.map(e=>{let t=_.has(e.id),r=d===e.id;return(0,Q.jsxs)(`div`,{className:`hover:bg-accent/50 flex items-center justify-between gap-2 rounded-md px-2 py-1.5 transition-colors`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t&&(0,Q.jsx)(s,{className:`icon-xs text-status-success shrink-0 animate-spin`}),(0,Q.jsx)(`span`,{className:`truncate text-sm`,children:e.label})]}),(0,Q.jsx)(`span`,{className:`text-muted-foreground mt-0.5 block truncate font-mono text-xs`,children:e.command})]}),t?(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,onClick:()=>b(e),className:`text-status-error hover:text-status-error/80 shrink-0`,children:(0,Q.jsx)(n,{className:`icon-xs`})}):(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,onClick:()=>y(e),disabled:!!d,className:`text-status-success hover:text-status-success/80 shrink-0`,children:r?(0,Q.jsx)(s,{className:`icon-xs animate-spin`}):(0,Q.jsx)(g,{className:`icon-xs`})})]},e.id)})})]})]})}function st(e,t){let n=[];for(let r of e){let e=r.role===`user`?`User`:r.role===`assistant`?`Assistant`:`System`;if(r.content?.trim()&&n.push(`## ${e}\n\n${r.content.trim()}\n`),t&&r.toolCalls?.length)for(let e of r.toolCalls){let t=``;try{let n=typeof e.input==`string`?JSON.parse(e.input):e.input;t=JSON.stringify(n,null,2)}catch{t=String(e.input)}n.push(`### Tool: ${e.name}\n\n\`\`\`json\n${t}\n\`\`\`\n`),e.output&&n.push(`**Output:**\n\n\`\`\`\n${e.output}\n\`\`\`\n`)}}return n.join(`
|
|
2
2
|
`)}var ct=(0,$.memo)(function({onOpenInEditor:e,editorLabels:n,hideTimeline:r=!1}={}){let{t:i}=ne(),c=Qe(),l=pe(),d=ke(),p=L(e=>e?.title),ee=L(e=>e?.mode),h=L(e=>e?ie(e):void 0),g=L(e=>e?.pinned),_=L(e=>e?.stage),x=L(e=>Oe(e)),T=L(e=>(e?.messages?.length??0)>0),O=Se(e=>e.pinThread),k=Se(e=>e.updateThreadStage),A=Se(e=>e.deleteScratchThread),re=X(e=>e.timelineVisible),ae=X(e=>e.setTimelineVisible),P=X(e=>e.reviewPaneOpen),oe=X(e=>e.setReviewPaneOpen),se=X(e=>e.rightPaneTab),ce=X(e=>e.setActivityPaneOpen),de=P&&se===`activity`,me=he(e=>e.selectedProjectId),_e=$e(e=>e.open),ve=$e(e=>e.togglePanel),be=!!me&&!x,xe=!!l&&!!_&&_!==`archived`&&!x,[Ce,we]=ye(),[Te,Ee]=ye(),[H,W]=(0,$.useState)(!1),[Ne,q]=(0,$.useState)(!1),Pe=ee===`worktree`&&!!h,Fe=ge(),Ie=Fe===`running`||Fe===`setting_up`,Re=L(e=>fe(e))&&!Ie,[ze,Be]=(0,$.useState)(!1),[Ve,He]=(0,$.useState)(!1),Ue=(0,$.useCallback)(e=>{e?Be(!0):(document.activeElement?.blur(),setTimeout(()=>Be(!1),150))},[]),[We,J]=(0,$.useState)(!1),[Y,Ye]=(0,$.useState)(``),[Z,et]=(0,$.useState)(!1),tt=(0,$.useCallback)(()=>{let e=p;if(!e)return;let t=e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).slice(0,60);t&&Ye(t)},[p]),nt=(0,$.useCallback)(async()=>{if(!l)return;let e=await M.convertToWorktree(l);e.isErr()?G.error(String(e.error)):G.success(i(`toast.convertToWorktreeStarted`))},[l,i]),rt=(0,$.useCallback)(async()=>{let e=Y.trim().replace(/\s+/g,`-`).replace(/[^a-zA-Z0-9\-_/.]/g,``);if(!e||!d)return;et(!0);let t=await M.checkout(d,e,`carry`,!0,l);et(!1),t.isErr()?G.error(String(t.error)):(J(!1),Ye(``))},[Y,d,l]),it=(0,$.useCallback)(async()=>{if(!l)return;let e=Xe(l);if(!e)return;let t=e.title;if(q(!0),Oe(e)){await A(l),q(!1),W(!1),G.success(i(`toast.threadDeleted`,{title:t})),c(U(`/`));return}let n=e.projectId;if(!n){q(!1);return}await Se.getState().deleteThread(l,n),q(!1),W(!1),G.success(i(`toast.threadDeleted`,{title:t})),c(U(`/projects/${n}`))},[c,i,l,A]),at=(0,$.useCallback)(e=>{if(!l)return;let t=Xe(l)?.messages;if(!t?.length)return;let n=st(t,e);e?Ee(n):we(n)},[we,Ee,l]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(R,{onOpenChange:Ue,children:[(0,Q.jsxs)(N,{open:!ze&&Ve,onOpenChange:He,children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(Je,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-more-actions`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground`,children:(0,Q.jsx)(t,{className:`icon-base`})})})}),(0,Q.jsx)(j,{children:i(`thread.moreActions`,`More actions`)})]}),(0,Q.jsxs)(V,{align:`end`,children:[(xe||l&&!x)&&(0,Q.jsxs)(Q.Fragment,{children:[xe&&(0,Q.jsxs)(De,{children:[(0,Q.jsxs)(Le,{"data-testid":`header-menu-stage`,children:[(()=>{let e=qe[_].icon;return(0,Q.jsx)(e,{className:`icon-base mr-2`})})(),i(`kanban.stage`,`Stage`),(0,Q.jsx)(`span`,{className:`text-muted-foreground ml-auto pl-2 text-xs`,children:i(qe[_].labelKey)})]}),(0,Q.jsx)(Ae,{children:(0,Q.jsx)(le,{children:lt.map(e=>{let t=qe[e].icon;return(0,Q.jsxs)(B,{"data-testid":`header-menu-stage-${e}`,onClick:()=>k(l,d,e),className:`cursor-pointer`,children:[(0,Q.jsx)(t,{className:`icon-base mr-2`}),i(qe[e].labelKey),e===_&&(0,Q.jsx)(E,{className:`icon-base ml-auto pl-1`})]},e)})})})]}),l&&!x&&(0,Q.jsxs)(B,{"data-testid":`header-menu-view-board`,onClick:()=>{oe(!1),c(U(`/kanban?project=${d}&highlight=${l}`))},className:`cursor-pointer`,children:[(0,Q.jsx)(C,{className:`icon-base mr-2`}),i(`kanban.viewOnBoard`,`View on Board`)]}),(0,Q.jsx)(K,{})]}),(0,Q.jsxs)(B,{"data-testid":`header-menu-toggle-activity`,onClick:()=>(0,$.startTransition)(()=>{ce(!de)}),className:`cursor-pointer`,children:[(0,Q.jsx)(u,{className:`icon-base mr-2 ${de?`text-primary`:``}`}),i(`activity.title`,`Activity`)]}),l&&!r&&(0,Q.jsxs)(B,{"data-testid":`header-menu-toggle-timeline`,onClick:()=>ae(!re),className:`cursor-pointer`,children:[(0,Q.jsx)(f,{className:`icon-base mr-2 ${re?`text-primary`:``}`}),i(`thread.toggleTimeline`,`Toggle Timeline`)]}),be&&(0,Q.jsxs)(B,{"data-testid":`header-menu-browser-panel`,onClick:()=>ve(),className:`cursor-pointer`,children:[(0,Q.jsx)(a,{className:`icon-base mr-2 ${_e?`text-primary`:``}`}),i(`projectHeader.browserPanel`,`Browser annotator`)]}),(0,Q.jsx)(K,{}),(0,Q.jsxs)(B,{"data-testid":`header-menu-copy-text`,onClick:()=>at(!1),disabled:!T,className:`cursor-pointer`,children:[Ce?(0,Q.jsx)(E,{className:`icon-base mr-2`}):(0,Q.jsx)(o,{className:`icon-base mr-2`}),i(`thread.copyText`,`Copy text only`)]}),(0,Q.jsxs)(B,{"data-testid":`header-menu-copy-all`,onClick:()=>at(!0),disabled:!T,className:`cursor-pointer`,children:[Te?(0,Q.jsx)(E,{className:`icon-base mr-2`}):(0,Q.jsx)(y,{className:`icon-base mr-2`}),i(`thread.copyWithTools`,`Copy with tool calls`)]}),e&&n&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(K,{}),(0,Q.jsxs)(De,{children:[(0,Q.jsxs)(Le,{"data-testid":`header-menu-open-editor`,children:[(0,Q.jsx)(D,{className:`icon-base mr-2`}),i(`thread.openInEditor`,`Open in Editor`)]}),(0,Q.jsx)(Ae,{children:(0,Q.jsx)(le,{children:Object.keys(n).map(t=>(0,Q.jsx)(B,{"data-testid":`header-menu-open-editor-${t}`,onClick:()=>e(t),className:`cursor-pointer`,children:n[t]},t))})})]})]}),l&&Re&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(K,{}),(0,Q.jsxs)(B,{"data-testid":`header-menu-convert-worktree`,onClick:nt,className:`cursor-pointer`,children:[(0,Q.jsx)(te,{className:`icon-base mr-2`}),i(`dialog.convertToWorktreeTitle`)]}),(0,Q.jsxs)(B,{"data-testid":`header-menu-create-branch`,onClick:()=>J(!0),className:`cursor-pointer`,children:[(0,Q.jsx)(S,{className:`icon-base mr-2`}),i(`dialog.createBranchTitle`)]})]}),l&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(K,{}),(0,Q.jsx)(B,{"data-testid":`header-menu-pin`,onClick:()=>{let e=!g;O(l,d,e),G.success(e?i(`toast.threadPinned`,`Thread pinned`):i(`toast.threadUnpinned`,`Thread unpinned`))},className:`cursor-pointer`,children:g?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(w,{className:`icon-base mr-2`}),i(`sidebar.unpin`,`Unpin`)]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(b,{className:`icon-base mr-2`}),i(`sidebar.pin`,`Pin`)]})}),(0,Q.jsx)(K,{}),(0,Q.jsxs)(B,{"data-testid":`header-menu-delete`,onClick:()=>W(!0),className:`text-status-error focus:text-status-error cursor-pointer`,children:[(0,Q.jsx)(m,{className:`icon-base mr-2`}),i(`common.delete`,`Delete`)]})]})]})]}),(0,Q.jsx)(Ke,{open:H,onOpenChange:e=>{e||W(!1)},title:i(`dialog.deleteThread`),description:i(`dialog.deleteThreadDesc`,{title:p&&p.length>80?p.slice(0,80)+`…`:p}),warning:Pe?i(`dialog.worktreeWarning`):void 0,cancelLabel:i(`common.cancel`),confirmLabel:i(`common.delete`),loading:Ne,onCancel:()=>W(!1),onConfirm:it}),(0,Q.jsx)(z,{open:We,onOpenChange:J,children:(0,Q.jsxs)(Ge,{className:`sm:max-w-md`,"data-testid":`create-branch-dialog`,children:[(0,Q.jsx)(je,{children:(0,Q.jsx)(ue,{children:i(`dialog.createBranchTitle`)})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(Ze,{"data-testid":`create-branch-input`,placeholder:i(`dialog.createBranchPlaceholder`),value:Y,onChange:e=>Ye(e.target.value),onKeyDown:e=>{e.key===`Enter`&&Y.trim()&&rt()},autoFocus:!0}),p&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`create-branch-suggest`,variant:`ghost`,size:`icon-sm`,onClick:tt,children:(0,Q.jsx)(v,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:i(`dialog.suggestBranchName`,`Suggest from title`)})]})]}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(I,{variant:`ghost`,onClick:()=>J(!1),"data-testid":`create-branch-cancel`,children:i(`common.cancel`)}),(0,Q.jsx)(I,{onClick:rt,disabled:!Y.trim()||Z,"data-testid":`create-branch-confirm`,children:Z?(0,Q.jsx)(s,{className:`icon-base animate-spin`}):i(`common.create`,`Create`)})]})]})})]})}),lt=[`backlog`,`planning`,`in_progress`,`review`,`done`,`archived`],ut=(0,$.memo)(function({hideFiles:e=!1,hideTests:t=!1,hideStartup:n=!1,hideTerminal:r=!1,hideTimeline:i=!1,trailing:a}={}){let{t:o}=ne(),s=Qe(),c=ae(),u=pe(),f=ke(),p=ge(),m=Ee(),g=L(e=>e?ie(e):void 0),_=oe(e=>e.user?.id??null),v=L(e=>Be(e)&&!(_&&xe(e,_)&&!_e(e,_))),y=L(e=>Oe(e)),b=he(e=>e.selectedProjectId),S=he(e=>e.projects),C=X(e=>e.setReviewPaneOpen),w=X(e=>e.reviewPaneOpen),te=X(e=>e.setTestRunnerOpen),E=X(e=>e.testRunnerOpen),D=X(e=>e.setFilesPaneOpen),O=X(e=>e.setCommentsPaneOpen),k=X(e=>e.rightPaneTab),A=L(e=>we(e)),P=L(e=>e?.commentCount??0),{openPreview:ce,isTauri:le}=Ve(),ue=H(e=>e.togglePanel),de=H(e=>e.panelVisibleByProject),fe=H(e=>e.setPanelVisible),me=H(e=>e.addTab),R=f??b,z=S.find(e=>e.id===R),ve=R?de[R]??!1:!1,B=H(e=>e.tabs),ye=B.filter(e=>e.projectId===R&&e.commandId&&e.alive&&e.port),V=(0,$.useCallback)(e=>{let t=new URLSearchParams(c.search);e?t.set(`panel`,e):t.delete(`panel`),(!e||e!==`review`)&&t.delete(`tab`);let n=t.toString();s(`${c.pathname}${n?`?${n}`:``}`,{replace:!0})},[c.pathname,c.search,s]);return p===`setting_up`?null:(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[!n&&!y&&R&&(0,Q.jsx)(ot,{projectId:R,threadId:u??void 0,worktreeBranch:g}),!y&&ye.length>0&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-preview`,variant:`ghost`,size:`icon-sm`,onClick:()=>{let e=ye[0];ce({commandId:e.commandId,projectId:e.projectId,port:e.port,commandLabel:e.label})},className:`text-status-info hover:text-status-info/80`,children:(0,Q.jsx)(x,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:o(`preview.openPreview`)})]}),!r&&!y&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,onClick:()=>{if(R)if(B.filter(e=>e.projectId===R).length===0&&!ve){let e=m||z?.path||`C:\\`;me({id:crypto.randomUUID(),label:`Terminal 1`,cwd:e,alive:!0,projectId:R,type:le?void 0:`pty`}),fe(R,!0)}else ue(R)},"data-testid":`header-toggle-terminal`,className:ve?`text-foreground`:`text-muted-foreground`,children:(0,Q.jsx)(T,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:o(`terminal.toggle`,`Toggle Terminal`),keys:[`Ctrl`,"`"]})})]}),(v||!u&&b&&!y)&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,onClick:()=>(0,$.startTransition)(()=>{w&&k===`review`?(C(!1),V(null)):(C(!0),V(`review`))}),"data-testid":`header-toggle-review`,className:w&&k===`review`?`text-foreground`:`text-muted-foreground`,children:(0,Q.jsx)(h,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:o(`review.title`),keys:[`Alt`,`G`]})})]}),!t&&!y&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,onClick:()=>(0,$.startTransition)(()=>{let e=!E;te(e),V(e?`tests`:null)}),"data-testid":`header-toggle-tests`,className:E?`text-foreground`:`text-muted-foreground`,children:(0,Q.jsx)(d,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:o(`tests.title`,`Tests`)})]}),!e&&!y&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{variant:`ghost`,size:`icon-sm`,onClick:()=>(0,$.startTransition)(()=>{w&&k===`files`?(D(!1),V(null)):(D(!0),V(`files`))}),"data-testid":`header-toggle-project-files`,disabled:!R,className:w&&k===`files`?`text-foreground`:`text-muted-foreground`,children:(0,Q.jsx)(ee,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:o(`projectFiles.title`,`Project Files`),keys:[`Alt`,`F`]})})]}),u&&A&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsxs)(I,{variant:`ghost`,size:`icon-sm`,onClick:()=>(0,$.startTransition)(()=>{w&&k===`comments`?(O(!1),V(null)):(O(!0),V(`comments`))}),"data-testid":`header-toggle-comments`,className:se(`relative`,w&&k===`comments`?`text-foreground`:P>0?`text-status-info`:`text-muted-foreground`),children:[(0,Q.jsx)(l,{className:`icon-base`}),P>0&&(0,Q.jsx)(`span`,{className:`bg-status-info absolute -top-0.5 -right-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full px-0.5 text-[9px] leading-none font-medium text-white`,"data-testid":`comments-badge`,children:P>99?`99+`:P})]})}),(0,Q.jsx)(j,{children:(0,Q.jsx)(Z,{label:o(`comments.title`,`Comments`),keys:[`Alt`,`M`]})})]}),u&&R&&!y&&(0,Q.jsx)(at,{threadId:u,projectId:R}),u&&(0,Q.jsx)(ct,{onOpenInEditor:y?void 0:async e=>{if(!z)return;let t=m||z.path;(await M.openInEditor(t,e)).isErr()&&G.error(o(`sidebar.openInEditorError`,`Failed to open in editor`))},editorLabels:y?void 0:re,hideTimeline:i}),a]})}),dt=(0,$.memo)(function({hideFiles:e=!1,hideTests:t=!1,hideStartup:n=!1,hideTerminal:r=!1,hideTimeline:i=!1,hideActions:a=!1,leading:o,trailing:s}={}){let{t:l}=ne(),u=Qe(),d=pe(),f=ke(),p=L(e=>e?.title),ee=L(e=>Oe(e)),m=L(e=>e?.parentThreadId),h=L(e=>e?.agentTemplateId),g=q(e=>h?e.templates.find(e=>e.id===h):void 0),_=Se(e=>e.renameThread),[v,y]=(0,$.useState)(!1),[b,x]=(0,$.useState)(``),S=(0,$.useRef)(null),C=(0,$.useCallback)(()=>{d&&(x(p??``),y(!0))},[d,p]),w=(0,$.useCallback)(()=>{if(!d||!f){y(!1);return}let e=b.trim();e&&e!==(p??``).trim()&&(_(d,f,e),G.success(l(`toast.threadRenamed`,{title:e}))),y(!1)},[d,f,p,_,l,b]),te=(0,$.useCallback)(()=>{y(!1)},[]);(0,$.useEffect)(()=>{v&&(S.current?.focus(),S.current?.select())},[v]),(0,$.useEffect)(()=>{y(!1)},[d]);let T=he(e=>e.selectedProjectId),E=X(e=>e.setReviewPaneOpen),D=X(e=>e.kanbanContext),O=W(e=>e.fetchForThread),k=W(e=>e.fetchProjectStatus),A=f??T;(0,$.useEffect)(()=>{d?O(d):T&&k(T)},[d,T,O,k]);let M=(0,$.useCallback)(()=>{if(!D)return;let e=D.projectId||`__all__`,t=D.viewMode===`list`?`/list`:`/kanban`;E(!1);let n=new URLSearchParams;e!==`__all__`&&n.set(`project`,e),D.search&&n.set(`search`,D.search),D.caseSensitive&&n.set(`cs`,`1`),D.threadId&&n.set(`highlight`,D.threadId);let r=n.toString();u(U(r?`${t}?${r}`:t))},[D,u,E]);return!A&&!ee?null:(0,Q.jsx)(`div`,{className:`border-border flex h-12 items-center border-b px-4 py-2`,children:(0,Q.jsxs)(`div`,{className:`flex w-full items-center justify-between`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[o,D&&d&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-back-kanban`,variant:`ghost`,size:`icon-sm`,onClick:M,className:`text-muted-foreground hover:text-foreground shrink-0`,children:(0,Q.jsx)(c,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:D.viewMode===`list`?l(`allThreads.backToList`,`Back to list`):l(`kanban.backToBoard`,`Back to Kanban`)})]}),!D&&m&&(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(I,{"data-testid":`header-back-parent`,variant:`ghost`,size:`icon-sm`,onClick:()=>u(U(`/projects/${f}/threads/${m}`)),className:`text-muted-foreground hover:text-foreground shrink-0`,children:(0,Q.jsx)(c,{className:`icon-base`})})}),(0,Q.jsx)(j,{children:l(`thread.backToParent`,`Back to parent thread`)})]}),(0,Q.jsx)(Pe,{className:`min-w-0`,children:(0,Q.jsxs)(Fe,{children:[d&&(0,Q.jsx)(He,{className:`max-w-[240px] min-w-0 sm:max-w-[360px] md:max-w-[520px]`,children:v?(0,Q.jsxs)(`span`,{className:`inline-grid max-w-full min-w-0 justify-start justify-items-start`,children:[(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`invisible col-start-1 row-start-1 overflow-hidden text-left text-sm font-medium whitespace-pre`,children:b||` `}),(0,Q.jsx)(`input`,{ref:S,"data-testid":`header-thread-title-input`,value:b,onChange:e=>x(e.target.value),onBlur:w,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),w()):e.key===`Escape`&&(e.preventDefault(),te())},className:`text-foreground col-start-1 row-start-1 w-full min-w-0 border-0 bg-transparent p-0 text-left text-sm font-medium ring-0 outline-hidden focus:ring-0 focus:outline-hidden`})]}):(0,Q.jsxs)(N,{children:[(0,Q.jsx)(F,{asChild:!0,children:(0,Q.jsx)(`span`,{role:`button`,tabIndex:0,"data-testid":`header-thread-title`,onClick:C,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),C())},className:`hover:text-accent-foreground block max-w-full min-w-0 cursor-text`,children:(0,Q.jsx)(Ue,{as:`span`,title:p??``,className:`text-sm font-medium`,containerClassName:`max-w-full`})})}),(0,Q.jsx)(j,{children:l(`thread.renameTitle`,`Click to rename`)})]})}),g&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(J,{}),(0,Q.jsx)(He,{className:`shrink-0`,children:(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium`,style:{backgroundColor:g.color?`${g.color}22`:`hsl(var(--muted))`,color:g.color??`hsl(var(--muted-foreground))`},"data-testid":`project-header-template-badge`,children:[g.color&&(0,Q.jsx)(`span`,{className:`inline-block size-2 rounded-full`,style:{backgroundColor:g.color}}),g.name]})})]})]})})]}),a?s?(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:s}):null:(0,Q.jsx)(ut,{hideFiles:e,hideTests:t,hideStartup:n,hideTerminal:r,hideTimeline:i,trailing:s})]})})});export{ut as n,et as r,dt as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Q as t,b as n,i as r,in as i,ot as a,yr as o,zr as s}from"./icons-sqwAEN28.js";import{o as c}from"./markdown-DBtwZWLP.js";import{t as l}from"./useTranslation-DAPPK3Hy.js";import{G as u,P as d,W as f,f as p,lt as m,o as h,q as g,yt as _}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Q as t,b as n,i as r,in as i,ot as a,yr as o,zr as s}from"./icons-sqwAEN28.js";import{o as c}from"./markdown-DBtwZWLP.js";import{t as l}from"./useTranslation-DAPPK3Hy.js";import{G as u,P as d,W as f,f as p,lt as m,o as h,q as g,yt as _}from"./index-DNxUSLe_.js";import{t as v}from"./monaco-dp65NPQw.js";import{t as y}from"./button-B9Ypx1uQ.js";import{Ur as b,ct as x,mt as S,ot as C,pt as w,s as T,st as E,ut as D}from"./items-7qqySF-X.js";import{t as O}from"./input-CJ3TsT2L.js";import{n as k,r as A,t as j}from"./adapter-g71mvnZo.js";import{t as M}from"./app-store-DKW9sVHv.js";import{n as N}from"./SettingsPageContent-CiHRUvG3.js";import"./monaco-setup-pMTTM56o.js";var P=e(s(),1),F=e(c(),1),I=e=>{e.editor.defineTheme(`funny-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#0a0a0a`,"editorGutter.background":`#0a0a0a`,"editorWidget.background":`#1e1e1e`,"editorWidget.border":`#454545`,"editorWidget.foreground":`#cccccc`,"input.background":`#2a2a2a`,"input.foreground":`#cccccc`,"input.border":`#454545`,"inputOption.activeBorder":`#007acc`,"inputOption.activeBackground":`#007acc44`,"inputOption.activeForeground":`#ffffff`,focusBorder:`#007acc`}})};function L({value:e,onChange:t,testId:n}){let{resolvedTheme:r}=_(),i=h[p(e=>e.fontSize)],a=r===`monochrome`?`vs`:`funny-dark`,o=Math.max(e.split(`
|
|
2
2
|
`).length,3);return(0,F.jsx)(`div`,{className:`border-input overflow-hidden rounded-md border`,"data-testid":n,children:(0,F.jsx)(v,{height:Math.min(Math.max(o*22+16,100),400),language:`shell`,theme:a,beforeMount:I,value:e,onChange:e=>t(e??``),options:{minimap:{enabled:!1},fontSize:i,fontFamily:`'JetBrains Mono', ui-monospace, monospace`,lineNumbers:`off`,glyphMargin:!1,folding:!1,lineDecorationsWidth:8,lineNumbersMinChars:0,scrollBeyondLastLine:!1,wordWrap:`on`,automaticLayout:!0,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,scrollbar:{vertical:`auto`,horizontal:`hidden`,verticalScrollbarSize:8},renderLineHighlight:`none`,padding:{top:6,bottom:6}}})})}function R(e){return`${e.hookType}:${e.index}`}function z({hook:e,onEdit:t,onDelete:r,onToggleEnabled:o,t:s}){let c=(0,P.useRef)(null),l=(0,P.useRef)(null),[d,p]=(0,P.useState)(!1),[h,_]=(0,P.useState)(!1),v=R(e);return(0,P.useEffect)(()=>{let t=c.current,n=l.current;if(!t||!n)return;let r=j({element:t,dragHandle:n,getInitialData:()=>({type:`hook-item`,key:v,hookType:e.hookType,index:e.index}),onDragStart:()=>p(!0),onDrop:()=>p(!1)}),i=k({element:t,getData:()=>({type:`hook-item`,key:v,hookType:e.hookType,index:e.index}),canDrop:({source:t})=>t.data.type===`hook-item`&&t.data.key!==v&&t.data.hookType===e.hookType,onDragEnter:()=>_(!0),onDragLeave:()=>_(!1),onDrop:()=>_(!1)});return()=>{r(),i()}},[v,e.hookType,e.index]),(0,F.jsxs)(`div`,{ref:c,"data-testid":`hook-item-${v}`,className:m(`group flex items-center gap-1.5 rounded-md border border-border/50 bg-card px-1.5 py-1.5 transition-all hover:bg-accent/30`,d&&`opacity-40`,h&&`ring-2 ring-ring`),children:[(0,F.jsx)(`div`,{ref:l,className:`text-muted-foreground/40 hover:text-muted-foreground shrink-0 cursor-grab active:cursor-grabbing`,"data-testid":`hook-drag-${v}`,children:(0,F.jsx)(i,{className:`icon-sm`})}),(0,F.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,F.jsx)(`span`,{className:`text-sm font-medium`,children:e.label}),(0,F.jsx)(N,{command:e.command})]}),(0,F.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,F.jsxs)(f,{children:[(0,F.jsx)(g,{asChild:!0,children:(0,F.jsx)(`div`,{children:(0,F.jsx)(C,{checked:e.enabled,onCheckedChange:()=>o(e),"data-testid":`hook-toggle-${v}`})})}),(0,F.jsx)(u,{children:e.enabled?s(`hooks.enabled`):s(`hooks.disabled`)})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100`,children:[(0,F.jsxs)(f,{children:[(0,F.jsx)(g,{asChild:!0,children:(0,F.jsx)(y,{variant:`ghost`,size:`icon-xs`,onClick:()=>t(e),className:`text-muted-foreground`,"data-testid":`hook-edit-${v}`,children:(0,F.jsx)(a,{className:`icon-xs`})})}),(0,F.jsx)(u,{children:s(`hooks.edit`)})]}),(0,F.jsxs)(f,{children:[(0,F.jsx)(g,{asChild:!0,children:(0,F.jsx)(y,{variant:`ghost`,size:`icon-xs`,onClick:()=>r(e),className:`text-muted-foreground hover:text-status-error`,"data-testid":`hook-delete-${v}`,children:(0,F.jsx)(n,{className:`icon-xs`})})}),(0,F.jsx)(u,{children:s(`hooks.delete`)})]})]})]})]})}function B(){let{t:e}=l(),n=M(e=>e.selectedProjectId),[i,a]=(0,P.useState)([]),[s,c]=(0,P.useState)(!1),[u,f]=(0,P.useState)(null),[p,m]=(0,P.useState)(`pre-commit`),[h,g]=(0,P.useState)(``),[_,v]=(0,P.useState)(``),C=(0,P.useCallback)(async()=>{if(!n)return;let e=await d.listHooks(n);e.isOk()&&a(e.value)},[n]);(0,P.useEffect)(()=>{C()},[C]),(0,P.useEffect)(()=>A({onDrop({source:e,location:t}){let r=t.current.dropTargets;if(!r.length||e.data.type!==`hook-item`)return;let i=e.data.hookType,o=e.data.index,s=r[0].data.index;o===s||i!==r[0].data.hookType||a(e=>{let t=e.filter(e=>e.hookType===i),r=e.filter(e=>e.hookType!==i),a=t.findIndex(e=>e.index===o),c=t.findIndex(e=>e.index===s);if(a===-1||c===-1)return e;let l=[...t],[u]=l.splice(a,1);if(l.splice(c,0,u),n){let e=l.map(e=>e.index);d.reorderHooks(n,i,e)}let f=l.map((e,t)=>({...e,index:t}));return[...r,...f]})}}),[n]);let k=async()=>{if(n){if(!h.trim()){b.error(e(`hooks.labelRequired`));return}if(!_.trim()){b.error(e(`hooks.commandRequired`));return}(await d.addHook(n,{hookType:p,label:h.trim(),command:_.trim()})).isOk()?(V(),c(!1),C(),b.success(e(`hooks.hookAdded`))):b.error(e(`hooks.hookAddError`))}},j=async t=>{if(n){if(!h.trim()){b.error(e(`hooks.labelRequired`));return}if(!_.trim()){b.error(e(`hooks.commandRequired`));return}(await d.updateHook(n,t.hookType,t.index,{hookType:p,label:h.trim(),command:_.trim()})).isOk()?(f(null),V(),C(),b.success(e(`hooks.hookUpdated`))):b.error(e(`hooks.hookUpdateError`))}},N=async t=>{n&&((await d.deleteHook(n,t.hookType,t.index)).isOk()?(C(),b.success(e(`hooks.hookDeleted`))):b.error(e(`hooks.hookDeleteError`)))},I=async e=>{n&&(await d.updateHook(n,e.hookType,e.index,{enabled:!e.enabled})).isOk()&&C()},B=e=>{f(R(e)),m(e.hookType),g(e.label),v(e.command),c(!1)},V=()=>{m(`pre-commit`),g(``),v(``)},H=()=>{f(null),c(!1),V()},U=t=>e(`hooks.${t}`),W=(0,P.useMemo)(()=>{let e=new Map;for(let t of T){let n=i.filter(e=>e.hookType===t);n.length>0&&e.set(t,n)}return[...e.entries()]},[i]);return n?(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-end gap-2`,children:(0,F.jsxs)(y,{variant:`outline`,size:`sm`,className:`gap-1.5`,"data-testid":`hooks-add`,onClick:()=>{H(),c(!0)},children:[(0,F.jsx)(t,{className:`icon-sm`}),e(`hooks.addHook`)]})}),i.length===0&&!s&&(0,F.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,F.jsx)(`p`,{className:`text-muted-foreground mb-3 text-sm`,children:e(`hooks.noHooks`)}),(0,F.jsxs)(y,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:()=>c(!0),children:[(0,F.jsx)(t,{className:`icon-sm`}),e(`hooks.addFirst`)]})]}),W.map(([t,n])=>(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h3`,{className:`text-muted-foreground px-1 text-sm font-semibold`,children:U(t)}),n.map(t=>{let n=R(t);return u===n?(0,F.jsxs)(`div`,{"data-testid":`hook-item-${n}`,className:`settings-form-panel`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.hookType`)}),(0,F.jsxs)(E,{value:p,onValueChange:e=>m(e),children:[(0,F.jsx)(w,{className:`text-sm`,"data-testid":`hooks-type-select`,children:(0,F.jsx)(S,{})}),(0,F.jsx)(x,{children:T.map(e=>(0,F.jsx)(D,{value:e,className:`text-sm`,children:U(e)},e))})]})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.label`)}),(0,F.jsx)(O,{className:`settings-form-input`,placeholder:e(`hooks.label`),value:h,onChange:e=>g(e.target.value),"data-testid":`hooks-label-input`,autoFocus:!0})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.command`)}),(0,F.jsx)(L,{value:_,onChange:v,testId:`hooks-command-input`})]}),(0,F.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,F.jsxs)(y,{variant:`ghost`,size:`sm`,onClick:H,children:[(0,F.jsx)(r,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,F.jsxs)(y,{size:`sm`,onClick:()=>j(t),children:[(0,F.jsx)(o,{className:`icon-sm mr-1`}),e(`common.save`)]})]})]},n):(0,F.jsx)(z,{hook:t,onEdit:B,onDelete:N,onToggleEnabled:I,t:e},n)})]},t)),s&&(0,F.jsxs)(`div`,{className:`settings-form-panel`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.hookType`)}),(0,F.jsxs)(E,{value:p,onValueChange:e=>m(e),children:[(0,F.jsx)(w,{className:`text-sm`,"data-testid":`hooks-type-select`,children:(0,F.jsx)(S,{})}),(0,F.jsx)(x,{children:T.map(e=>(0,F.jsx)(D,{value:e,className:`text-sm`,children:U(e)},e))})]})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.label`)}),(0,F.jsx)(O,{className:`settings-form-input`,placeholder:e(`hooks.label`),value:h,onChange:e=>g(e.target.value),"data-testid":`hooks-label-input`,autoFocus:!0})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`settings-label`,children:e(`hooks.command`)}),(0,F.jsx)(L,{value:_,onChange:v,testId:`hooks-command-input`})]}),(0,F.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,F.jsxs)(y,{variant:`ghost`,size:`sm`,onClick:H,children:[(0,F.jsx)(r,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,F.jsxs)(y,{size:`sm`,onClick:k,children:[(0,F.jsx)(o,{className:`icon-sm mr-1`}),e(`hooks.addHook`)]})]})]})]}):(0,F.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`hooks.noHooks`)})}export{B as ProjectHooksSettings};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Mn as t,Y as n,cr as r,jn as i,kn as a,sn as o,ut as s,wn as c,zn as l,zr as u}from"./icons-sqwAEN28.js";import{o as d}from"./markdown-DBtwZWLP.js";import{t as ee}from"./useTranslation-DAPPK3Hy.js";import{G as f,W as p,_t as m,dt as te,gt as h,k as g,lt as _,q as v}from"./index-Bmp1UFM1.js";import{t as y}from"./button-Bi9_EZFh.js";import{Dr as ne,Dt as re,Et as b,Hn as ie,Ot as ae,Pt as oe,Tt as se,Un as x,in as S,yr as C}from"./items-C-m69VjA.js";import{_ as ce,a as le,d as ue,f as de,g as fe,h as pe,l as me,n as he,o as ge,p as _e,r as ve,s as ye,t as be,u as w,x as T}from"./StashTab-CzC8WNxJ.js";import{t as E}from"./loading-state-DGzdeccZ.js";import{i as D,n as O,r as xe,t as Se}from"./tabs-DWlrx7U8.js";import{n as Ce,r as k}from"./pr-detail-store-BJ3P2gik.js";var A=e(u(),1),j=e(d(),1),M=3e4;function N(e){let t=e=>e.status===`completed`?e.conclusion===`failure`||e.conclusion===`timed_out`||e.conclusion===`action_required`?0:e.conclusion===`success`||e.conclusion===`neutral`||e.conclusion===`skipped`?2:1:1;return e.toSorted((e,n)=>t(e)-t(n))}function we({projectId:e,prNumber:t,prUrl:i,visible:a}){let{t:s}=ee(),{detail:c,loadingDetail:u,rateLimited:d}=Ce(e||void 0,t),m=(0,A.useRef)(null);(0,A.useEffect)(()=>{if(!(!a||!e||!t))return k.getState().fetchPRDetail(e,t),m.current=setInterval(()=>{let n=k.getState();n.rateLimited||n.fetchPRDetail(e,t)},M),()=>{m.current&&clearInterval(m.current)}},[a,e,t]);let te=()=>{e&&t&&k.getState().fetchPRDetail(e,t,!0)};if(!e)return(0,j.jsx)(T,{icon:o,title:s(`review.ci.noProject`,`Select a project to view CI status`)});if(!t)return(0,j.jsx)(T,{icon:r,title:s(`review.ci.noPR`,`No pull request for this branch yet`),description:s(`review.ci.noPRHint`,`CI status appears once a pull request is open.`)});if(!c&&u)return(0,j.jsx)(E,{testId:`ci-loading`,label:s(`review.ci.loading`,`Loading CI status…`)});let h=c?N(c.checks):[],g=h.length;return(0,j.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,"data-testid":`ci-tab`,children:[(0,j.jsxs)(`div`,{className:`border-sidebar-border flex items-center gap-3 border-b px-3 py-1.5 text-xs`,children:[c&&g>0&&(0,j.jsxs)(`span`,{className:`font-medium`,"data-testid":`ci-summary-counts`,children:[s(`review.ci.passedCount`,`{{passed}}/{{total}} passed`,{passed:c.checks_passed,total:g}),c.checks_failed>0&&(0,j.jsx)(`span`,{className:`ml-1.5 text-red-400`,children:s(`review.ci.failedCount`,`{{count}} failed`,{count:c.checks_failed})}),c.checks_pending>0&&(0,j.jsx)(`span`,{className:`ml-1.5 text-yellow-400`,children:s(`review.ci.pendingCount`,`{{count}} pending`,{count:c.checks_pending})})]}),c&&(0,j.jsx)(de,{decision:c.review_decision}),c&&(0,j.jsx)(ue,{mergeable:c.mergeable_state,merged:c.merged}),(0,j.jsx)(`div`,{className:`min-w-0 flex-1`}),d&&(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{children:(0,j.jsx)(`span`,{className:`text-[10px] text-yellow-500`,children:s(`review.ci.rateLimited`,`Rate limited`)})}),(0,j.jsx)(f,{children:s(`review.ci.rateLimitedHint`,`GitHub API rate limit reached. Polling paused.`)})]}),(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,onClick:te,disabled:u,className:`text-muted-foreground shrink-0`,"data-testid":`ci-refresh`,children:(0,j.jsx)(n,{className:_(`icon-base`,u&&`animate-spin`)})})}),(0,j.jsx)(f,{side:`bottom`,children:s(`common.refresh`,`Refresh`)})]}),i&&(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,asChild:!0,className:`text-muted-foreground shrink-0`,"data-testid":`ci-open-github`,children:(0,j.jsx)(`a`,{href:i,target:`_blank`,rel:`noopener noreferrer`,children:(0,j.jsx)(l,{className:`icon-base`})})})}),(0,j.jsx)(f,{side:`bottom`,children:s(`review.ci.openOnGithub`,`Open PR on GitHub`)})]})]}),g===0?(0,j.jsx)(T,{icon:r,title:s(`review.ci.noChecks`,`No CI checks reported for this PR`)}):(0,j.jsx)(S,{className:`flex min-h-0 flex-1 flex-col`,children:(0,j.jsx)(`div`,{className:`divide-sidebar-border flex flex-col divide-y`,"data-testid":`ci-checks-list`,children:h.map(e=>(0,j.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs`,"data-testid":`ci-check-${e.id}`,children:[(0,j.jsx)(w,{check:e}),(0,j.jsx)(`span`,{className:`truncate font-medium`,children:e.name}),e.app_name&&(0,j.jsxs)(`span`,{className:`text-muted-foreground shrink-0 text-[10px]`,children:[`(`,e.app_name,`)`]}),e.html_url&&(0,j.jsx)(`a`,{href:e.html_url,target:`_blank`,rel:`noopener noreferrer`,className:`text-muted-foreground hover:text-foreground ml-auto shrink-0`,"data-testid":`ci-check-link-${e.id}`,children:(0,j.jsx)(l,{className:`size-3`})})]},e.id))})})]})}var Te={added:a,modified:t,deleted:c,renamed:t,conflicted:i};function P(){let{t:e}=ee(),n=m(),{pathname:r,search:i}=h(),a=C(e=>e.setReviewPaneOpen),o=C(e=>e.reviewPaneOpen),c=C(e=>e.reviewSubTab),l=C(e=>e.setReviewSubTab),u=fe(),d=ce(),_=d||void 0,S=_?null:u,ue=!!(_||S),de=_||S,w=ae(),T=se(),E=ne(e=>e.projects),k=oe(d??void 0),M=(0,A.useMemo)(()=>ge({worktreePath:w,lightThread:k,threadProjectId:T,selectedProjectId:u,projects:E}),[w,k,T,u,E]),N=g(e=>e.user?.id??null),P=b(e=>e?.userId??null),F=!!N&&!!P&&P!==N,Ee=b(e=>e?.mode===`worktree`),I=b(e=>e?.baseBranch),L=b(e=>{if(e&&e.mode===`worktree`)return te(e)}),De=ne(e=>{let t=S??T;return t?e.branchByProject[t]:void 0}),R=L||De,z=re()===`running`,Oe=ie(_),ke=x(e=>S?e.statusByProject[S]:void 0),B=Oe??ke,{threads:Ae}=Ce((T??u??``)||void 0,B?.prNumber??void 0),je=B?.unpushedCommitCount??0,Me=S??T??null,[Ne,V]=(0,A.useState)(null),{summaries:H,selectedFile:Pe,setSelectedFile:U,expandedFile:W,setExpandedFile:G,fileSearch:K,setFileSearch:q,fileSearchCaseSensitive:Fe,setFileSearchCaseSensitive:Ie,checkedFiles:J,checkedCount:Le,totalCount:Re,toggleFile:Y,toggleAll:ze,canCommit:Be,isOnDifferentBranch:Ve,commitTitle:He,commitBody:Ue,setCommitTitle:We,setCommitBody:Ge,generatingMsg:Ke,handleGenerateCommitMsg:qe,remoteUrl:Je,publishDialogOpen:Ye,setPublishDialogOpen:Xe,handlePublishSuccess:Ze,filteredDiffs:X,collapsedFolders:Qe,toggleFolder:$e,handleCollapseAllFolders:et,handleExpandAllFolders:tt,hasFolders:nt,allFoldersCollapsed:rt,expandedSubmodules:it,toggleSubmodule:at,treeRows:ot,diffCache:st,loadingDiff:ct,loading:lt,loadError:ut,truncatedInfo:dt,refresh:Z,loadDiffForFile:Q,requestFullDiff:ft,stash:pt,selectedAction:mt,setSelectedAction:ht,actionInProgress:gt,setActionInProgress:_t,pushInProgress:vt,mergeInProgress:yt,prInProgress:bt,prDialog:xt,setPrDialog:St,mergeDialog:Ct,setMergeDialog:wt,hasRebaseConflict:Tt,commitInProgress:Et,commitEntry:Dt,commitProgressId:Ot,handleCommitAction:kt,handlePushOnly:At,openMergeDialog:jt,handleMergeWithTarget:Mt,handleCreatePROnly:Nt,pullInProgress:Pt,fetchInProgress:Ft,stashInProgress:It,patchStagingInProgress:Lt,pullStrategyDialog:Rt,setPullStrategyDialog:zt,fileSelectionState:Bt,setFileSelectionState:Vt,selectAllSignal:Ht,setSelectAllSignal:Ut,deselectAllSignal:Wt,setDeselectAllSignal:Gt,handleRevertFile:Kt,executeRevert:qt,handleDiscardAll:Jt,handleDiscardFolder:Yt,executeDiscardAll:Xt,handleIgnoreFiles:Zt,executeIgnoreFiles:Qt,handleIgnore:$t,executeResetSoft:en,handleStageFile:tn,handleUnstageFile:nn,handleStageSelected:rn,handleUnstageAll:an,handleStagePatch:on,handleSelectionStateChange:sn,handleResolveConflict:cn,handleAskAgentResolve:ln,handleOpenInEditorConflict:un,handlePull:dn,handlePullStrategyChosen:fn,handleFetchOrigin:pn,handleStashSelected:mn,handleCopyPath:hn,handleOpenDirectory:gn}=le({effectiveThreadId:_,projectModeId:S,hasGitContext:ue,gitContextKey:de,threadProjectId:T,selectedProjectId:u,baseBranch:I,threadBranch:L,currentBranch:R,basePath:M,isAgentRunning:!!z,gitStatus:B,unpushedCommitCount:je,remoteCheckProjectId:Me,reviewPaneOpen:o,reviewSubTab:c,setReviewPaneOpen:a,setConfirmDialog:V}),_n=(0,A.useCallback)(async()=>{let e=x.getState();_?(e.fetchForThread(_,!0),T&&e.fetchForProject(T,!0)):S&&(e.fetchProjectStatus(S,!0),e.fetchForProject(S,!0)),await Z()},[_,S,T,Z]),vn=(0,A.useCallback)(e=>{l(e);let t=new URLSearchParams(i);e===`changes`?t.delete(`tab`):t.set(`tab`,e);let a=t.toString();n(`${r}${a?`?${a}`:``}`,{replace:!0})},[l,r,i,n]),yn=(0,A.useCallback)(e=>{G(e),U(e),Q(e)},[Q,G,U]),bn=(0,A.useCallback)(()=>G(null),[G]),$=W?H.find(e=>e.path===W):void 0;return(0,j.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,j.jsx)(ve,{expandedFile:W,expandedSummary:$,expandedDiffContent:W?st.get(W):void 0,ExpandedIcon:$&&Te[$.status]||t,onClose:bn,onFileSelect:yn,fileSearch:K,setFileSearch:q,fileSearchCaseSensitive:Fe,setFileSearchCaseSensitive:Ie,filteredDiffs:X,summaries:H,checkedFiles:J,toggleFile:Y,onRevertFile:Kt,onIgnore:$t,basePath:M,loadingDiff:ct,diffCache:st,prThreads:Ae,requestFullDiff:ft,handleResolveConflict:cn,handleStagePatch:on,patchStagingInProgress:Lt,handleSelectionStateChange:sn,selectAllSignal:Ht,deselectAllSignal:Wt}),(0,j.jsxs)(Se,{value:c,onValueChange:e=>vn(e),className:`flex h-full flex-col text-xs`,style:{contain:`strict`},children:[(0,j.jsxs)(`div`,{className:`border-sidebar-border flex h-12 items-center justify-between border-b px-2`,children:[(0,j.jsxs)(xe,{className:`bg-sidebar-accent/50 h-7 p-0.5`,children:[(0,j.jsx)(D,{value:`changes`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-changes`,children:e(`review.changes`,`Changes`)}),(0,j.jsx)(D,{value:`graph`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-graph`,children:e(`review.history`,`History`)}),(0,j.jsx)(D,{value:`stash`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-stash`,children:e(`review.stash`,`Stash`)}),(0,j.jsx)(D,{value:`prs`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-prs`,children:e(`review.prs`,`PRs`)}),(0,j.jsx)(D,{value:`ci`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-ci`,children:e(`review.ci.tab`,`CI`)}),(0,j.jsx)(D,{value:`issues`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-issues`,children:e(`review.issues.tab`,`Issues`)})]}),(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,onClick:()=>a(!1),className:`text-muted-foreground`,"data-testid":`review-close`,children:(0,j.jsx)(s,{className:`icon-base`})})}),(0,j.jsx)(f,{side:`top`,children:e(`review.close`,`Close`)})]})]}),(0,j.jsx)(ye,{truncatedInfo:dt,summaries:H,prSummary:B?.prNumber?{projectId:T??u??``,prNumber:B.prNumber,prUrl:B.prUrl??``,prState:B.prState??`OPEN`,visible:c===`changes`&&o}:null,search:{query:K,onQueryChange:q,placeholder:e(`review.searchFiles`,`Filter files…`),totalMatches:X.length,resultLabel:K?`${X.length}/${H.length}`:``,caseSensitive:Fe,onCaseSensitiveChange:Ie,onClose:K?()=>q(``):void 0,autoFocus:!1,testIdPrefix:`review-file-filter`},toolbar:{refresh:_n,loading:lt,handlePull:dn,handleFetchOrigin:pn,pullInProgress:Pt,fetchInProgress:Ft,handlePushOnly:At,pushInProgress:vt,remoteUrl:Je,setPublishDialogOpen:Xe,unpushedCommitCount:je,threadBranch:L,baseBranch:I,isOnDifferentBranch:Ve,openMergeDialog:jt,mergeInProgress:yt,setPrDialog:St,summaries:H,checkedFiles:J,handleStageSelected:rn,handleUnstageAll:an,handleStashSelected:mn,handleDiscardAll:Jt,handleIgnoreFiles:Zt,actionInProgress:gt,stashInProgress:It,gitStatus:B,isAgentRunning:z,readOnly:F},filesPanel:{summaries:H,filteredDiffs:X,checkedCount:Le,totalCount:Re,toggleAll:ze,hasFolders:nt,allFoldersCollapsed:rt,collapsedFolders:Qe,handleCollapseAllFolders:et,handleExpandAllFolders:tt,loading:lt,loadError:ut,refresh:Z,fileSearch:K,treeRows:ot,selectedFile:Pe,setSelectedFile:U,expandedFile:W,setExpandedFile:G,loadDiffForFile:Q,checkedFiles:J,toggleFile:Y,toggleFolder:$e,toggleSubmodule:at,expandedSubmodules:it,fileSelectionState:Bt,setFileSelectionState:Vt,setSelectAllSignal:Ut,setDeselectAllSignal:Gt,handleStageFile:tn,handleUnstageFile:nn,handleRevertFile:Kt,handleDiscardFolder:Yt,handleIgnore:$t,handleCopyPath:hn,handleOpenDirectory:gn,basePath:M,readOnly:F},commitDraft:{commitEntry:Dt,commitProgressId:Ot,setActionInProgress:_t,summaries:H,commitInProgress:Et,commitTitle:He,commitBody:Ue,setCommitTitle:We,setCommitBody:Ge,generatingMsg:Ke,handleGenerateCommitMsg:qe,selectedAction:mt,setSelectedAction:ht,actionInProgress:gt,isOnDifferentBranch:Ve,gitStatus:B,canCommit:Be,handleCommitAction:kt,isAgentRunning:z,effectiveThreadId:_,hasRebaseConflict:Tt,baseBranch:I,isWorktree:Ee,handleOpenInEditorConflict:un,handleAskAgentResolve:ln,readOnly:F}}),(0,j.jsx)(O,{value:`graph`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(pe,{visible:c===`graph`})}),(0,j.jsx)(O,{value:`stash`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(be,{stash:pt,currentBranch:R,isAgentRunning:!!z,onRequestDrop:e=>V({type:`drop-stash`,stashIndex:e})})}),(0,j.jsx)(O,{value:`prs`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(me,{visible:c===`prs`})}),(0,j.jsx)(O,{value:`ci`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(we,{projectId:T??u??``,prNumber:B?.prNumber??void 0,prUrl:B?.prUrl??void 0,visible:c===`ci`&&o})}),(0,j.jsx)(O,{value:`issues`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(_e,{visible:c===`issues`})})]}),(0,j.jsx)(he,{confirmDialog:Ne,setConfirmDialog:V,executeRevert:qt,executeDiscardAll:Xt,executeIgnoreFiles:Qt,executeResetSoft:en,executeStashDrop:pt.executeStashDrop,pullStrategyDialog:Rt,setPullStrategyDialog:zt,handlePullStrategyChosen:fn,prDialog:xt,setPrDialog:St,threadBranch:L,baseBranch:I,prInProgress:bt,handleCreatePROnly:Nt,mergeDialog:Ct,setMergeDialog:wt,currentBranch:R,mergeInProgress:yt,handleMergeWithTarget:Mt,publishProjectId:Me??``,publishProjectPath:M,publishDialogOpen:Ye,setPublishDialogOpen:Xe,handlePublishSuccess:Ze})]})}export{P as ReviewPane};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Mn as t,Y as n,cr as r,jn as i,kn as a,sn as o,ut as s,wn as c,zn as l,zr as u}from"./icons-sqwAEN28.js";import{o as d}from"./markdown-DBtwZWLP.js";import{t as ee}from"./useTranslation-DAPPK3Hy.js";import{G as f,W as p,_t as m,dt as te,gt as h,k as g,lt as _,q as v}from"./index-DNxUSLe_.js";import{t as y}from"./button-B9Ypx1uQ.js";import{Dr as ne,Dt as re,Et as b,Hn as ie,Ot as ae,Pt as oe,Tt as se,Un as x,in as S,yr as C}from"./items-7qqySF-X.js";import{_ as ce,a as le,d as ue,f as de,g as fe,h as pe,l as me,n as he,o as ge,p as _e,r as ve,s as ye,t as be,u as w,x as T}from"./StashTab-BswTfOlb.js";import{t as E}from"./loading-state-yLj5fYb6.js";import{i as D,n as O,r as xe,t as Se}from"./tabs-Cu3cWMHb.js";import{n as Ce,r as k}from"./pr-detail-store-DHF0exs_.js";var A=e(u(),1),j=e(d(),1),M=3e4;function N(e){let t=e=>e.status===`completed`?e.conclusion===`failure`||e.conclusion===`timed_out`||e.conclusion===`action_required`?0:e.conclusion===`success`||e.conclusion===`neutral`||e.conclusion===`skipped`?2:1:1;return e.toSorted((e,n)=>t(e)-t(n))}function we({projectId:e,prNumber:t,prUrl:i,visible:a}){let{t:s}=ee(),{detail:c,loadingDetail:u,rateLimited:d}=Ce(e||void 0,t),m=(0,A.useRef)(null);(0,A.useEffect)(()=>{if(!(!a||!e||!t))return k.getState().fetchPRDetail(e,t),m.current=setInterval(()=>{let n=k.getState();n.rateLimited||n.fetchPRDetail(e,t)},M),()=>{m.current&&clearInterval(m.current)}},[a,e,t]);let te=()=>{e&&t&&k.getState().fetchPRDetail(e,t,!0)};if(!e)return(0,j.jsx)(T,{icon:o,title:s(`review.ci.noProject`,`Select a project to view CI status`)});if(!t)return(0,j.jsx)(T,{icon:r,title:s(`review.ci.noPR`,`No pull request for this branch yet`),description:s(`review.ci.noPRHint`,`CI status appears once a pull request is open.`)});if(!c&&u)return(0,j.jsx)(E,{testId:`ci-loading`,label:s(`review.ci.loading`,`Loading CI status…`)});let h=c?N(c.checks):[],g=h.length;return(0,j.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,"data-testid":`ci-tab`,children:[(0,j.jsxs)(`div`,{className:`border-sidebar-border flex items-center gap-3 border-b px-3 py-1.5 text-xs`,children:[c&&g>0&&(0,j.jsxs)(`span`,{className:`font-medium`,"data-testid":`ci-summary-counts`,children:[s(`review.ci.passedCount`,`{{passed}}/{{total}} passed`,{passed:c.checks_passed,total:g}),c.checks_failed>0&&(0,j.jsx)(`span`,{className:`ml-1.5 text-red-400`,children:s(`review.ci.failedCount`,`{{count}} failed`,{count:c.checks_failed})}),c.checks_pending>0&&(0,j.jsx)(`span`,{className:`ml-1.5 text-yellow-400`,children:s(`review.ci.pendingCount`,`{{count}} pending`,{count:c.checks_pending})})]}),c&&(0,j.jsx)(de,{decision:c.review_decision}),c&&(0,j.jsx)(ue,{mergeable:c.mergeable_state,merged:c.merged}),(0,j.jsx)(`div`,{className:`min-w-0 flex-1`}),d&&(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{children:(0,j.jsx)(`span`,{className:`text-[10px] text-yellow-500`,children:s(`review.ci.rateLimited`,`Rate limited`)})}),(0,j.jsx)(f,{children:s(`review.ci.rateLimitedHint`,`GitHub API rate limit reached. Polling paused.`)})]}),(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,onClick:te,disabled:u,className:`text-muted-foreground shrink-0`,"data-testid":`ci-refresh`,children:(0,j.jsx)(n,{className:_(`icon-base`,u&&`animate-spin`)})})}),(0,j.jsx)(f,{side:`bottom`,children:s(`common.refresh`,`Refresh`)})]}),i&&(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,asChild:!0,className:`text-muted-foreground shrink-0`,"data-testid":`ci-open-github`,children:(0,j.jsx)(`a`,{href:i,target:`_blank`,rel:`noopener noreferrer`,children:(0,j.jsx)(l,{className:`icon-base`})})})}),(0,j.jsx)(f,{side:`bottom`,children:s(`review.ci.openOnGithub`,`Open PR on GitHub`)})]})]}),g===0?(0,j.jsx)(T,{icon:r,title:s(`review.ci.noChecks`,`No CI checks reported for this PR`)}):(0,j.jsx)(S,{className:`flex min-h-0 flex-1 flex-col`,children:(0,j.jsx)(`div`,{className:`divide-sidebar-border flex flex-col divide-y`,"data-testid":`ci-checks-list`,children:h.map(e=>(0,j.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs`,"data-testid":`ci-check-${e.id}`,children:[(0,j.jsx)(w,{check:e}),(0,j.jsx)(`span`,{className:`truncate font-medium`,children:e.name}),e.app_name&&(0,j.jsxs)(`span`,{className:`text-muted-foreground shrink-0 text-[10px]`,children:[`(`,e.app_name,`)`]}),e.html_url&&(0,j.jsx)(`a`,{href:e.html_url,target:`_blank`,rel:`noopener noreferrer`,className:`text-muted-foreground hover:text-foreground ml-auto shrink-0`,"data-testid":`ci-check-link-${e.id}`,children:(0,j.jsx)(l,{className:`size-3`})})]},e.id))})})]})}var Te={added:a,modified:t,deleted:c,renamed:t,conflicted:i};function P(){let{t:e}=ee(),n=m(),{pathname:r,search:i}=h(),a=C(e=>e.setReviewPaneOpen),o=C(e=>e.reviewPaneOpen),c=C(e=>e.reviewSubTab),l=C(e=>e.setReviewSubTab),u=fe(),d=ce(),_=d||void 0,S=_?null:u,ue=!!(_||S),de=_||S,w=ae(),T=se(),E=ne(e=>e.projects),k=oe(d??void 0),M=(0,A.useMemo)(()=>ge({worktreePath:w,lightThread:k,threadProjectId:T,selectedProjectId:u,projects:E}),[w,k,T,u,E]),N=g(e=>e.user?.id??null),P=b(e=>e?.userId??null),F=!!N&&!!P&&P!==N,Ee=b(e=>e?.mode===`worktree`),I=b(e=>e?.baseBranch),L=b(e=>{if(e&&e.mode===`worktree`)return te(e)}),De=ne(e=>{let t=S??T;return t?e.branchByProject[t]:void 0}),R=L||De,z=re()===`running`,Oe=ie(_),ke=x(e=>S?e.statusByProject[S]:void 0),B=Oe??ke,{threads:Ae}=Ce((T??u??``)||void 0,B?.prNumber??void 0),je=B?.unpushedCommitCount??0,Me=S??T??null,[Ne,V]=(0,A.useState)(null),{summaries:H,selectedFile:Pe,setSelectedFile:U,expandedFile:W,setExpandedFile:G,fileSearch:K,setFileSearch:q,fileSearchCaseSensitive:Fe,setFileSearchCaseSensitive:Ie,checkedFiles:J,checkedCount:Le,totalCount:Re,toggleFile:Y,toggleAll:ze,canCommit:Be,isOnDifferentBranch:Ve,commitTitle:He,commitBody:Ue,setCommitTitle:We,setCommitBody:Ge,generatingMsg:Ke,handleGenerateCommitMsg:qe,remoteUrl:Je,publishDialogOpen:Ye,setPublishDialogOpen:Xe,handlePublishSuccess:Ze,filteredDiffs:X,collapsedFolders:Qe,toggleFolder:$e,handleCollapseAllFolders:et,handleExpandAllFolders:tt,hasFolders:nt,allFoldersCollapsed:rt,expandedSubmodules:it,toggleSubmodule:at,treeRows:ot,diffCache:st,loadingDiff:ct,loading:lt,loadError:ut,truncatedInfo:dt,refresh:Z,loadDiffForFile:Q,requestFullDiff:ft,stash:pt,selectedAction:mt,setSelectedAction:ht,actionInProgress:gt,setActionInProgress:_t,pushInProgress:vt,mergeInProgress:yt,prInProgress:bt,prDialog:xt,setPrDialog:St,mergeDialog:Ct,setMergeDialog:wt,hasRebaseConflict:Tt,commitInProgress:Et,commitEntry:Dt,commitProgressId:Ot,handleCommitAction:kt,handlePushOnly:At,openMergeDialog:jt,handleMergeWithTarget:Mt,handleCreatePROnly:Nt,pullInProgress:Pt,fetchInProgress:Ft,stashInProgress:It,patchStagingInProgress:Lt,pullStrategyDialog:Rt,setPullStrategyDialog:zt,fileSelectionState:Bt,setFileSelectionState:Vt,selectAllSignal:Ht,setSelectAllSignal:Ut,deselectAllSignal:Wt,setDeselectAllSignal:Gt,handleRevertFile:Kt,executeRevert:qt,handleDiscardAll:Jt,handleDiscardFolder:Yt,executeDiscardAll:Xt,handleIgnoreFiles:Zt,executeIgnoreFiles:Qt,handleIgnore:$t,executeResetSoft:en,handleStageFile:tn,handleUnstageFile:nn,handleStageSelected:rn,handleUnstageAll:an,handleStagePatch:on,handleSelectionStateChange:sn,handleResolveConflict:cn,handleAskAgentResolve:ln,handleOpenInEditorConflict:un,handlePull:dn,handlePullStrategyChosen:fn,handleFetchOrigin:pn,handleStashSelected:mn,handleCopyPath:hn,handleOpenDirectory:gn}=le({effectiveThreadId:_,projectModeId:S,hasGitContext:ue,gitContextKey:de,threadProjectId:T,selectedProjectId:u,baseBranch:I,threadBranch:L,currentBranch:R,basePath:M,isAgentRunning:!!z,gitStatus:B,unpushedCommitCount:je,remoteCheckProjectId:Me,reviewPaneOpen:o,reviewSubTab:c,setReviewPaneOpen:a,setConfirmDialog:V}),_n=(0,A.useCallback)(async()=>{let e=x.getState();_?(e.fetchForThread(_,!0),T&&e.fetchForProject(T,!0)):S&&(e.fetchProjectStatus(S,!0),e.fetchForProject(S,!0)),await Z()},[_,S,T,Z]),vn=(0,A.useCallback)(e=>{l(e);let t=new URLSearchParams(i);e===`changes`?t.delete(`tab`):t.set(`tab`,e);let a=t.toString();n(`${r}${a?`?${a}`:``}`,{replace:!0})},[l,r,i,n]),yn=(0,A.useCallback)(e=>{G(e),U(e),Q(e)},[Q,G,U]),bn=(0,A.useCallback)(()=>G(null),[G]),$=W?H.find(e=>e.path===W):void 0;return(0,j.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,j.jsx)(ve,{expandedFile:W,expandedSummary:$,expandedDiffContent:W?st.get(W):void 0,ExpandedIcon:$&&Te[$.status]||t,onClose:bn,onFileSelect:yn,fileSearch:K,setFileSearch:q,fileSearchCaseSensitive:Fe,setFileSearchCaseSensitive:Ie,filteredDiffs:X,summaries:H,checkedFiles:J,toggleFile:Y,onRevertFile:Kt,onIgnore:$t,basePath:M,loadingDiff:ct,diffCache:st,prThreads:Ae,requestFullDiff:ft,handleResolveConflict:cn,handleStagePatch:on,patchStagingInProgress:Lt,handleSelectionStateChange:sn,selectAllSignal:Ht,deselectAllSignal:Wt}),(0,j.jsxs)(Se,{value:c,onValueChange:e=>vn(e),className:`flex h-full flex-col text-xs`,style:{contain:`strict`},children:[(0,j.jsxs)(`div`,{className:`border-sidebar-border flex h-12 items-center justify-between border-b px-2`,children:[(0,j.jsxs)(xe,{className:`bg-sidebar-accent/50 h-7 p-0.5`,children:[(0,j.jsx)(D,{value:`changes`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-changes`,children:e(`review.changes`,`Changes`)}),(0,j.jsx)(D,{value:`graph`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-graph`,children:e(`review.history`,`History`)}),(0,j.jsx)(D,{value:`stash`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-stash`,children:e(`review.stash`,`Stash`)}),(0,j.jsx)(D,{value:`prs`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-prs`,children:e(`review.prs`,`PRs`)}),(0,j.jsx)(D,{value:`ci`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-ci`,children:e(`review.ci.tab`,`CI`)}),(0,j.jsx)(D,{value:`issues`,className:`data-[state=active]:bg-background h-6 px-2.5 focus-visible:ring-0 data-[state=active]:shadow-xs`,"data-testid":`review-tab-issues`,children:e(`review.issues.tab`,`Issues`)})]}),(0,j.jsxs)(p,{children:[(0,j.jsx)(v,{asChild:!0,children:(0,j.jsx)(y,{variant:`ghost`,size:`icon-sm`,onClick:()=>a(!1),className:`text-muted-foreground`,"data-testid":`review-close`,children:(0,j.jsx)(s,{className:`icon-base`})})}),(0,j.jsx)(f,{side:`top`,children:e(`review.close`,`Close`)})]})]}),(0,j.jsx)(ye,{truncatedInfo:dt,summaries:H,prSummary:B?.prNumber?{projectId:T??u??``,prNumber:B.prNumber,prUrl:B.prUrl??``,prState:B.prState??`OPEN`,visible:c===`changes`&&o}:null,search:{query:K,onQueryChange:q,placeholder:e(`review.searchFiles`,`Filter files…`),totalMatches:X.length,resultLabel:K?`${X.length}/${H.length}`:``,caseSensitive:Fe,onCaseSensitiveChange:Ie,onClose:K?()=>q(``):void 0,autoFocus:!1,testIdPrefix:`review-file-filter`},toolbar:{refresh:_n,loading:lt,handlePull:dn,handleFetchOrigin:pn,pullInProgress:Pt,fetchInProgress:Ft,handlePushOnly:At,pushInProgress:vt,remoteUrl:Je,setPublishDialogOpen:Xe,unpushedCommitCount:je,threadBranch:L,baseBranch:I,isOnDifferentBranch:Ve,openMergeDialog:jt,mergeInProgress:yt,setPrDialog:St,summaries:H,checkedFiles:J,handleStageSelected:rn,handleUnstageAll:an,handleStashSelected:mn,handleDiscardAll:Jt,handleIgnoreFiles:Zt,actionInProgress:gt,stashInProgress:It,gitStatus:B,isAgentRunning:z,readOnly:F},filesPanel:{summaries:H,filteredDiffs:X,checkedCount:Le,totalCount:Re,toggleAll:ze,hasFolders:nt,allFoldersCollapsed:rt,collapsedFolders:Qe,handleCollapseAllFolders:et,handleExpandAllFolders:tt,loading:lt,loadError:ut,refresh:Z,fileSearch:K,treeRows:ot,selectedFile:Pe,setSelectedFile:U,expandedFile:W,setExpandedFile:G,loadDiffForFile:Q,checkedFiles:J,toggleFile:Y,toggleFolder:$e,toggleSubmodule:at,expandedSubmodules:it,fileSelectionState:Bt,setFileSelectionState:Vt,setSelectAllSignal:Ut,setDeselectAllSignal:Gt,handleStageFile:tn,handleUnstageFile:nn,handleRevertFile:Kt,handleDiscardFolder:Yt,handleIgnore:$t,handleCopyPath:hn,handleOpenDirectory:gn,basePath:M,readOnly:F},commitDraft:{commitEntry:Dt,commitProgressId:Ot,setActionInProgress:_t,summaries:H,commitInProgress:Et,commitTitle:He,commitBody:Ue,setCommitTitle:We,setCommitBody:Ge,generatingMsg:Ke,handleGenerateCommitMsg:qe,selectedAction:mt,setSelectedAction:ht,actionInProgress:gt,isOnDifferentBranch:Ve,gitStatus:B,canCommit:Be,handleCommitAction:kt,isAgentRunning:z,effectiveThreadId:_,hasRebaseConflict:Tt,baseBranch:I,isWorktree:Ee,handleOpenInEditorConflict:un,handleAskAgentResolve:ln,readOnly:F}}),(0,j.jsx)(O,{value:`graph`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(pe,{visible:c===`graph`})}),(0,j.jsx)(O,{value:`stash`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(be,{stash:pt,currentBranch:R,isAgentRunning:!!z,onRequestDrop:e=>V({type:`drop-stash`,stashIndex:e})})}),(0,j.jsx)(O,{value:`prs`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(me,{visible:c===`prs`})}),(0,j.jsx)(O,{value:`ci`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(we,{projectId:T??u??``,prNumber:B?.prNumber??void 0,prUrl:B?.prUrl??void 0,visible:c===`ci`&&o})}),(0,j.jsx)(O,{value:`issues`,className:`flex min-h-0 flex-1 data-[state=inactive]:hidden`,forceMount:!0,children:(0,j.jsx)(_e,{visible:c===`issues`})})]}),(0,j.jsx)(he,{confirmDialog:Ne,setConfirmDialog:V,executeRevert:qt,executeDiscardAll:Xt,executeIgnoreFiles:Qt,executeResetSoft:en,executeStashDrop:pt.executeStashDrop,pullStrategyDialog:Rt,setPullStrategyDialog:zt,handlePullStrategyChosen:fn,prDialog:xt,setPrDialog:St,threadBranch:L,baseBranch:I,prInProgress:bt,handleCreatePROnly:Nt,mergeDialog:Ct,setMergeDialog:wt,currentBranch:R,mergeInProgress:yt,handleMergeWithTarget:Mt,publishProjectId:Me??``,publishProjectPath:M,publishDialogOpen:Ye,setPublishDialogOpen:Xe,handlePublishSuccess:Ze})]})}export{P as ReviewPane};
|
package/packages/client/dist/assets/{SearchablePicker-Cz6G4abl.js → SearchablePicker-BJnuJVEi.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Kn as t,Q as n,_r as r,pn as i,yr as a,zr as o}from"./icons-sqwAEN28.js";import{o as s}from"./markdown-DBtwZWLP.js";import{t as c}from"./useTranslation-DAPPK3Hy.js";import{lt as l}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{Kn as t,Q as n,_r as r,pn as i,yr as a,zr as o}from"./icons-sqwAEN28.js";import{o as s}from"./markdown-DBtwZWLP.js";import{t as c}from"./useTranslation-DAPPK3Hy.js";import{lt as l}from"./index-DNxUSLe_.js";import{An as u,Mn as d,Nn as f,Ur as p,jn as m,vr as h}from"./items-7qqySF-X.js";import{t as g}from"./input-CJ3TsT2L.js";var _=e(o(),1),v=e(s(),1),y=32;function b({items:e,label:n,displayValue:o,searchPlaceholder:s,noMatchText:c,emptyText:p,loadingText:b,loading:x,onSelect:S,onCopy:C,triggerClassName:w,triggerTitle:T,width:E=`w-md`,side:D=`top`,align:O=`start`,icon:k,testId:A}){let[j,M]=(0,_.useState)(!1),[N,P]=(0,_.useState)(``),[F,I]=(0,_.useState)(-1),L=(0,_.useRef)(null),R=(0,_.useRef)(null),z=(0,_.useMemo)(()=>{if(!N)return e;let t=N.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(t)).sort((e,n)=>{let r=e.label.toLowerCase(),i=n.label.toLowerCase(),a=+!r.startsWith(t),o=+!i.startsWith(t);return a===o?r.length-i.length||r.localeCompare(i):a-o})},[e,N]),B=h({count:z.length,getScrollElement:()=>R.current,estimateSize:()=>y,overscan:10});(0,_.useEffect)(()=>{I(-1)},[N]),(0,_.useEffect)(()=>{j&&requestAnimationFrame(()=>{if(B.measure(),!N){let e=z.findIndex(e=>e.isSelected);e>=0&&B.scrollToIndex(e,{align:`center`})}})},[j]);let V=(0,_.useCallback)(e=>{requestAnimationFrame(()=>{B.scrollToIndex(e,{align:`auto`})})},[B]),H=e=>{if(e.key===`ArrowDown`){if(e.preventDefault(),z.length>0){let e=F<z.length-1?F+1:0;I(e),V(e)}}else if(e.key===`ArrowUp`){if(e.preventDefault(),z.length>0){let e=F>0?F-1:z.length-1;I(e),V(e)}}else e.key===`Enter`?(e.preventDefault(),F>=0&&F<z.length&&(S(z[F].key),M(!1),P(``))):e.key===`Escape`&&(M(!1),P(``))},U=(e,t)=>{if(e.key===`ArrowDown`){e.preventDefault();let n=t<z.length-1?t+1:0;I(n),V(n),L.current?.focus()}else if(e.key===`ArrowUp`){e.preventDefault();let n=t>0?t-1:z.length-1;I(n),V(n),L.current?.focus()}else e.key===`Enter`&&(e.preventDefault(),S(z[t].key),M(!1),P(``))};return(0,v.jsxs)(u,{open:j,onOpenChange:e=>{M(e),e||(P(``),I(-1))},children:[(0,v.jsx)(d,{asChild:!0,children:(0,v.jsxs)(`button`,{"data-testid":A,className:w??`text-muted-foreground hover:bg-muted hover:text-foreground flex max-w-[300px] items-center gap-1 truncate rounded px-2 py-1 text-xs transition-colors focus-visible:outline-hidden`,title:T,tabIndex:-1,children:[k??(0,v.jsx)(i,{className:`icon-xs shrink-0`}),(0,v.jsx)(`span`,{className:`truncate font-mono`,children:o}),(0,v.jsx)(r,{className:`icon-xs shrink-0 opacity-60`})]})}),(0,v.jsxs)(m,{side:D,align:O,className:l(E,`p-0 flex flex-col overflow-hidden`),style:{maxHeight:`min(70vh, 520px)`},onOpenAutoFocus:e=>{e.preventDefault(),L.current?.focus()},children:[(0,v.jsx)(`div`,{className:`border-border border-b px-2 py-1.5`,children:(0,v.jsx)(g,{ref:L,type:`text`,value:N,onChange:e=>P(e.target.value),onKeyDown:H,placeholder:s,"aria-label":n,autoComplete:`off`,className:`h-auto w-full rounded-none border-0 bg-transparent p-0 text-sm shadow-none focus-visible:ring-0`})}),(0,v.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto overscroll-contain p-1`,ref:R,style:{maxHeight:`min(60vh, 440px)`},children:[x&&e.length===0&&b&&(0,v.jsx)(`p`,{className:`text-muted-foreground py-3 text-center text-sm`,children:b}),!x&&e.length===0&&p&&(0,v.jsx)(`p`,{className:`text-muted-foreground py-3 text-center text-sm`,children:p}),!x&&e.length>0&&z.length===0&&(0,v.jsx)(`p`,{className:`text-muted-foreground py-3 text-center text-sm`,children:c}),z.length>0&&(0,v.jsx)(`div`,{style:{height:`${B.getTotalSize()}px`,width:`100%`,position:`relative`},children:B.getVirtualItems().map(e=>{let n=z[e.index],r=e.index;return(0,v.jsxs)(`div`,{className:`group/item absolute top-0 left-0 w-full`,style:{height:`${e.size}px`,transform:`translateY(${e.start}px)`},children:[(0,v.jsxs)(`button`,{onClick:()=>{S(n.key),M(!1),P(``)},onKeyDown:e=>U(e,r),onFocus:()=>I(r),onMouseEnter:()=>{I(r)},className:l(`w-full h-full flex items-center gap-2 rounded py-1.5 pl-2 text-left text-xs transition-colors outline-hidden`,C?`pr-7`:`pr-2`,r===F?`bg-accent text-foreground`:n.isSelected?`bg-accent/50 text-foreground`:`text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n.icon&&(0,v.jsx)(`span`,{className:`shrink-0`,children:n.icon}),(0,v.jsx)(f,{text:n.label,query:N,className:`truncate font-mono font-medium`}),n.badge&&(0,v.jsx)(`span`,{className:`bg-muted text-muted-foreground rounded px-1 py-0.5 text-[9px] leading-none`,children:n.badge})]}),n.detail&&(0,v.jsx)(`span`,{className:`text-muted-foreground/70 block truncate font-mono text-xs`,children:n.detail})]}),n.isSelected&&(0,v.jsx)(a,{className:`icon-xs text-status-info shrink-0`})]}),C&&(0,v.jsx)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground absolute top-1/2 right-2 -translate-y-1/2 rounded p-1 opacity-0 transition-opacity group-hover/item:opacity-100`,onClick:e=>{e.stopPropagation(),C(n.label)},tabIndex:-1,children:(0,v.jsx)(t,{className:`icon-xs`})})]},n.key)})})]})]})]})}var x=`__create_new_branch__`,S=[];function C({branches:e,remoteBranches:t=S,defaultBranch:r,selected:i,onChange:o,triggerClassName:s,width:l=`w-120`,side:u=`top`,align:d=`start`,extraItems:f,showCopy:m=!0,placeholder:h,showCreateNew:y=!1,testId:C}){let{t:w}=c(),[T,E]=(0,_.useState)(!1),[D,O]=(0,_.useState)(``),k=(0,_.useRef)(null),A=(0,_.useMemo)(()=>new Set(t),[t]),j=(0,_.useMemo)(()=>new Set(e),[e]),M=(0,_.useMemo)(()=>{let n=[...e];for(let e of t)j.has(e)||n.push(e);let a=n.map(e=>{let t=[];return e===r&&t.push(`default`),A.has(e)&&t.push(`origin`),{key:e,label:e,isSelected:e===i,badge:t.length>0?t.join(` · `):void 0}}).sort((e,t)=>e.key===r?-1:+(t.key===r));return f?[...f,...a]:a},[e,t,i,f,r,A,j]),N=(0,_.useCallback)(e=>{if(e===x){E(!0),O(``);return}E(!1),o(e)},[o]),P=(0,_.useCallback)(()=>{let e=D.trim();if(!e)return;let t=e.replace(/\s+/g,`-`).replace(/[^a-zA-Z0-9/_.-]/g,``).replace(/\.{2,}/g,`.`).replace(/^[.-]|[.-]$/g,``);t&&(E(!1),O(``),o(t))},[D,o]);(0,_.useEffect)(()=>{T&&requestAnimationFrame(()=>k.current?.focus())},[T]);let F=y?{key:x,label:w(`newThread.createNewBranch`,`Create new branch`),isSelected:!1,icon:(0,v.jsx)(n,{className:`icon-xs text-muted-foreground`})}:void 0,I=(0,_.useMemo)(()=>F?[F,...M]:M,[F,M]);return T?(0,v.jsxs)(`div`,{className:`flex items-center gap-1`,"data-testid":C?`${C}-new`:void 0,children:[(0,v.jsx)(n,{className:`icon-xs text-muted-foreground shrink-0`}),(0,v.jsx)(g,{ref:k,type:`text`,value:D,onChange:e=>O(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),P()):e.key===`Escape`&&(e.preventDefault(),E(!1),O(``))},onBlur:()=>{D.trim()||(E(!1),O(``))},placeholder:w(`newThread.newBranchPlaceholder`,`new-branch-name`),"data-testid":C?`${C}-new-input`:void 0,className:`text-foreground h-auto w-40 rounded-none border-0 bg-transparent p-0 font-mono text-xs shadow-none focus-visible:ring-0`}),(0,v.jsx)(`button`,{type:`button`,onClick:P,disabled:!D.trim(),"data-testid":C?`${C}-new-confirm`:void 0,className:`text-muted-foreground hover:bg-muted hover:text-foreground rounded px-1.5 py-0.5 text-xs transition-colors disabled:opacity-40`,children:(0,v.jsx)(a,{className:`icon-xs`})})]}):(0,v.jsx)(b,{items:I,label:w(`newThread.baseBranch`,`Base branch`),displayValue:i||h||w(`newThread.selectBranch`),searchPlaceholder:w(`newThread.searchBranches`,`Search branches…`),noMatchText:w(`newThread.noBranchesMatch`,`No branches match`),onSelect:N,onCopy:m?e=>{e!==w(`newThread.createNewBranch`,`Create new branch`)&&(navigator.clipboard.writeText(e),p.success(`Branch copied`))}:void 0,triggerClassName:s,width:l,side:u,align:d,testId:C})}export{C as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{o as t}from"./markdown-DBtwZWLP.js";import{t as n}from"./useTranslation-DAPPK3Hy.js";import{Dr as r,c as i,d as a,f as o,in as s,l as c,p as l,r as u,u as d,yr as f}from"./items-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{o as t}from"./markdown-DBtwZWLP.js";import{t as n}from"./useTranslation-DAPPK3Hy.js";import{Dr as r,c as i,d as a,f as o,in as s,l as c,p as l,r as u,u as d,yr as f}from"./items-7qqySF-X.js";import{t as p}from"./SettingsPageContent-CiHRUvG3.js";var m=e(t(),1);function h(){let{t:e}=n(),t=f(e=>e.activeSettingsPage),h=r(e=>e.selectedProjectId),g=r(e=>e.projects),_=t,v=_?e(u[_]??_):null,y=g.find(e=>e.id===h);return _?(0,m.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,m.jsx)(`div`,{className:`border-border border-b px-4 py-2`,children:(0,m.jsx)(`div`,{className:`flex min-h-8 items-center`,children:(0,m.jsx)(i,{children:(0,m.jsxs)(a,{children:[y&&(0,m.jsx)(c,{children:(0,m.jsx)(d,{className:`cursor-default truncate text-sm`,children:y.name})}),y&&(0,m.jsx)(l,{}),(0,m.jsx)(c,{children:(0,m.jsx)(o,{className:`truncate text-sm`,children:v})})]})})})}),_===`archived-threads`?(0,m.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,m.jsx)(p,{page:_,label:v??``})}):(0,m.jsx)(s,{className:`min-h-0 flex-1`,children:(0,m.jsx)(`div`,{className:`max-w-4xl px-8 py-8`,children:(0,m.jsx)(p,{page:_,label:v??``})})})]}):(0,m.jsx)(`div`,{className:`text-muted-foreground flex flex-1 items-center justify-center text-sm`,children:e(`settings.selectSetting`)})}export{h as SettingsDetailView};
|