@vantran-se/openchamber-web 2.0.3 → 2.0.5
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/README.md +20 -28
- package/bin/cli.js +3 -1
- package/bin/cli.test.js +13 -4
- package/bin/lib/DOCUMENTATION.md +4 -1
- package/bin/lib/commands-serve.js +9 -0
- package/dist/assets/{CodeMirrorCommentWidgets-CWhdh0wf.js → CodeMirrorCommentWidgets-DCAQTLMM.js} +1 -1
- package/dist/assets/DiffView-uzNpHBlV.js +4 -0
- package/dist/assets/FilesView-Bkq0sjNx.js +17 -0
- package/dist/assets/{GitView-DKIjpnu4.js → GitView-BmibZC7n.js} +4 -4
- package/dist/assets/{GuestAttachDialog-BIa9jCfL.js → GuestAttachDialog-D7TJG1rt.js} +1 -1
- package/dist/assets/GuestSurfacePane-PAcYaFzP.js +1 -0
- package/dist/assets/{JsonTreeView-CtI1Mqwo.js → JsonTreeView-BNT2yUVu.js} +1 -1
- package/dist/assets/{LinearIssuesView-BD2zLu-r.js → LinearIssuesView-D3Azksju.js} +1 -1
- package/dist/assets/MarkdownImageGallery-BGY6tuiK.js +1 -0
- package/dist/assets/MarkdownRendererImpl-DJmhQ37f.js +12 -0
- package/dist/assets/{OnboardingScreen-B8TxloXZ.js → OnboardingScreen-D_41H2qC.js} +1 -1
- package/dist/assets/{PatchDiff--Civs1xY.js → PatchDiff-C0RSqa9W.js} +1 -1
- package/dist/assets/{PierreDiffViewer-BlDmw3-A.js → PierreDiffViewer-BBE7tTY2.js} +3 -3
- package/dist/assets/{PlanView-DyH2SyCP.js → PlanView-Bqc-xuDe.js} +4 -4
- package/dist/assets/PluginPane-DQ0k41Q-.js +3 -0
- package/dist/assets/SettingsView-BAiJU5hJ.js +30 -0
- package/dist/assets/{SettingsWindow-y9WpZqK6.js → SettingsWindow-DuC4ecLw.js} +1 -1
- package/dist/assets/{SubmoduleDiffSummary-DeFmhPFZ.js → SubmoduleDiffSummary-0HgmcMXz.js} +1 -1
- package/dist/assets/{ToolOutputDialog-8DmF7_PZ.js → ToolOutputDialog-DdHkQJEE.js} +6 -6
- package/dist/assets/{ToolPartDiffPreview-Ca15DKE1.js → ToolPartDiffPreview-DWdN0r5K.js} +2 -2
- package/dist/assets/{VirtualizedFileDiff-BfEBad09.js → VirtualizedFileDiff-ClDezf2d.js} +1 -1
- package/dist/assets/{WalkthroughView-Cj3K8Xz6.js → WalkthroughView-BJicp0RC.js} +2 -2
- package/dist/assets/{appThemeRegistry-DAdawJZn.js → appThemeRegistry-CiuyzfSW.js} +1 -1
- package/dist/assets/changesTree-CePHbFcj.js +1 -0
- package/dist/assets/commitAndPush-DTKb6IwT.js +1 -0
- package/dist/assets/{computeVirtualFileMetrics-RF-KjfUH.js → computeVirtualFileMetrics-kM_zJNMt.js} +2 -2
- package/dist/assets/de-BMnfXm-G.js +10 -0
- package/dist/assets/es-DKEvCCL6.js +16 -0
- package/dist/assets/fr-D9fgE2xE.js +14 -0
- package/dist/assets/index-DUke1nme.css +1 -0
- package/dist/assets/{index-CL7ZQ94-.js → index-DWB8bR_g.js} +1 -1
- package/dist/assets/index-Di6zUe5h.js +41 -0
- package/dist/assets/{isDiffPlainText-D2yJ9fO6.js → isDiffPlainText-DOoIsGqs.js} +1 -1
- package/dist/assets/{isFilePlainText-BwMEq1Ey.js → isFilePlainText-bt5VHvcd.js} +1 -1
- package/dist/assets/ja-BEXad-KW.js +16 -0
- package/dist/assets/ko-DGrQ0lEe.js +16 -0
- package/dist/assets/{main-quLSA7jc.js → main-BpLQbZC2.js} +2 -2
- package/dist/assets/main-CI9DtHJv.js +896 -0
- package/dist/assets/{markdown-shiki.worker-CahLvHIq.js → markdown-shiki.worker-Bg8SoAJJ.js} +8 -5
- package/dist/assets/markdownCore-DK2KK5RW.js +7 -0
- package/dist/assets/{miniChat-D-lJJibr.js → miniChat-CIWaR8wG.js} +2 -2
- package/dist/assets/{mobile-VTtphbW6.js → mobile-CnWKEYIP.js} +2 -2
- package/dist/assets/patchFileDiff-Cqn0C0az.js +13 -0
- package/dist/assets/pl-BlhkmR5b.js +16 -0
- package/dist/assets/pt-BR-Bs96Ew9I.js +16 -0
- package/dist/assets/{renderElectronMiniChatApp-DF7ch5eM.js → renderElectronMiniChatApp-D9t0-9nV.js} +2 -2
- package/dist/assets/renderMobileApp-CW7fVs_s.js +25 -0
- package/dist/assets/runtimeEndpointReset-D0PcCb3K.js +27 -0
- package/dist/assets/scheduledTasksApi-Dahv3ws0.js +1 -0
- package/dist/assets/{shikiHighlight-_HeCCHx1.js → shikiHighlight-l-MbaNS4.js} +1 -1
- package/dist/assets/{textMateThemeFromAppTheme-C95XdFGj.js → textMateThemeFromAppTheme-C-kGcOpD.js} +1 -1
- package/dist/assets/tr-CehUK1M9.js +7 -0
- package/dist/assets/uk-Bno5WGNz.js +16 -0
- package/dist/assets/{useAppFontEffects-ZM9ij19-.js → useAppFontEffects-DDjuwVqi.js} +160 -156
- package/dist/assets/{useInlineCommentController-CkfxMJPy.js → useInlineCommentController-Clg8EO3A.js} +2 -2
- package/dist/assets/{useRootScrollLock-BtiAC1fj.js → useRootScrollLock-nDcRrgJ1.js} +2 -2
- package/dist/assets/{vendor-codemirror-language-data-U-lXzXNK.js → vendor-codemirror-language-data-oKF0MAwd.js} +2 -2
- package/dist/assets/vendor-opencode-client-DSZl7jSi.js +12 -0
- package/dist/assets/vendor-zod-BSoePkpP.js +39 -0
- package/dist/assets/{web-components-C583Pmfm.js → web-components-Bc1WPd4i.js} +1 -1
- package/dist/assets/zh-CN-DnAweIWo.js +16 -0
- package/dist/assets/zh-TW-BbBBK25p.js +16 -0
- package/dist/index.html +5 -5
- package/dist/mini-chat.html +5 -5
- package/dist/mobile.html +5 -5
- package/package.json +3 -3
- package/server/index.d.ts +2 -0
- package/server/index.js +196 -52
- package/server/lib/agent-tool/DOCUMENTATION.md +5 -0
- package/server/lib/agent-tool/runtime.js +89 -51
- package/server/lib/agent-tool/runtime.test.js +17 -0
- package/server/lib/browser-control/DOCUMENTATION.md +14 -2
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/global-hub.js +45 -7
- package/server/lib/event-stream/global-hub.test.js +128 -2
- package/server/lib/event-stream/global-ws-bridge.js +3 -1
- package/server/lib/event-stream/rebind.test.js +1 -0
- package/server/lib/event-stream/runtime.js +1 -2
- package/server/lib/event-stream/upstream-reader.js +3 -2
- package/server/lib/git/DOCUMENTATION.md +1 -1
- package/server/lib/git/service.js +22 -0
- package/server/lib/git/service.test.js +8 -0
- package/server/lib/guests/DOCUMENTATION.md +4 -3
- package/server/lib/guests/catalog.js +19 -1
- package/server/lib/guests/catalog.test.js +22 -0
- package/server/lib/guests/html-styles.js +5 -3
- package/server/lib/guests/html-styles.test.js +3 -1
- package/server/lib/guests/routes.js +11 -3
- package/server/lib/guests/service.js +5 -0
- package/server/lib/guests/surface.js +55 -9
- package/server/lib/guests/surface.test.js +56 -6
- package/server/lib/notifications/DOCUMENTATION.md +10 -0
- package/server/lib/notifications/emit-route.js +118 -0
- package/server/lib/notifications/emit-route.test.js +112 -0
- package/server/lib/openchamber-control/actions.js +16 -2
- package/server/lib/openchamber-control/service.js +23 -0
- package/server/lib/openchamber-control/service.test.js +31 -0
- package/server/lib/openchamber-sessions/fork-inheritance.js +103 -0
- package/server/lib/openchamber-sessions/fork-inheritance.test.js +69 -0
- package/server/lib/openchamber-sessions/routes.js +11 -0
- package/server/lib/openchamber-sessions/routes.test.js +18 -0
- package/server/lib/opencode/DOCUMENTATION.md +23 -23
- package/server/lib/opencode/bootstrap-runtime.js +14 -1
- package/server/lib/opencode/compatibility.js +6 -3
- package/server/lib/opencode/compatibility.test.js +8 -0
- package/server/lib/opencode/config-entity-v2.test.js +27 -0
- package/server/lib/opencode/config-paths.test.js +12 -0
- package/server/lib/opencode/config-v2.d.ts +2 -0
- package/server/lib/opencode/config-v2.js +42 -0
- package/server/lib/opencode/config-v2.test.js +17 -0
- package/server/lib/opencode/core-routes.js +20 -4
- package/server/lib/opencode/core-routes.test.js +41 -0
- package/server/lib/opencode/env-runtime.js +1 -8
- package/server/lib/opencode/feature-routes-runtime.js +2 -1
- package/server/lib/opencode/lifecycle.js +156 -2
- package/server/lib/opencode/lifecycle.test.js +255 -1
- package/server/lib/opencode/managed-config-file.js +18 -6
- package/server/lib/opencode/managed-config-file.test.js +23 -7
- package/server/lib/opencode/mcp.js +7 -2
- package/server/lib/opencode/network-runtime.js +16 -7
- package/server/lib/opencode/network-runtime.test.js +29 -1
- package/server/lib/opencode/npm-registry-config.d.ts +1 -0
- package/server/lib/opencode/npm-registry-config.js +123 -0
- package/server/lib/opencode/npm-registry-config.test.js +167 -0
- package/server/lib/opencode/npm-registry.js +5 -6
- package/server/lib/opencode/npm-registry.test.js +30 -0
- package/server/lib/opencode/openchamber-routes.js +29 -11
- package/server/lib/opencode/openchamber-routes.test.js +18 -0
- package/server/lib/opencode/project-directory-runtime.js +8 -0
- package/server/lib/opencode/project-directory-runtime.test.js +13 -0
- package/server/lib/opencode/provider-source-route.test.js +59 -0
- package/server/lib/opencode/providers.js +3 -0
- package/server/lib/opencode/providers.test.js +62 -0
- package/server/lib/opencode/proxy.js +53 -16
- package/server/lib/opencode/routes-upgrade.test.js +1 -1
- package/server/lib/opencode/routes.js +36 -1
- package/server/lib/opencode/server-startup-runtime.js +25 -0
- package/server/lib/opencode/server-startup-runtime.test.js +67 -1
- package/server/lib/opencode/server-utils-runtime.js +5 -0
- package/server/lib/opencode/settings-helpers.js +10 -0
- package/server/lib/opencode/settings-helpers.test.js +2 -2
- package/server/lib/opencode/settings-registry.json +17 -0
- package/server/lib/opencode/settings-runtime.js +1 -0
- package/server/lib/opencode/shared-service-runtime.js +155 -0
- package/server/lib/opencode/shared-service-runtime.test.js +180 -0
- package/server/lib/opencode/shared.js +49 -4
- package/server/lib/opencode/shared.test.js +78 -1
- package/server/lib/opencode/shutdown-runtime.js +14 -5
- package/server/lib/opencode/shutdown-runtime.test.js +77 -2
- package/server/lib/opencode/skill-routes.js +28 -12
- package/server/lib/opencode/skill-routes.test.js +121 -1
- package/server/lib/opencode/startup-pipeline-runtime.js +5 -4
- package/server/lib/opencode/startup-pipeline-runtime.test.js +18 -7
- package/server/lib/opencode/upgrade-capability.js +0 -14
- package/server/lib/opencode/v1-migration-topup.js +21 -15
- package/server/lib/opencode/v1-migration-topup.test.js +14 -6
- package/server/lib/opencode/v2-install.d.ts +1 -0
- package/server/lib/opencode/v2-install.js +8 -7
- package/server/lib/opencode/v2-install.test.js +13 -4
- package/server/lib/opencode/watcher.js +3 -1
- package/server/lib/opencode/watcher.test.js +54 -0
- package/server/lib/opencode/websearch-config.js +13 -1
- package/server/lib/quota/providers/kimi.js +1 -1
- package/server/lib/realtime-proxy.js +5 -1
- package/server/lib/realtime-proxy.test.js +29 -0
- package/server/lib/relay/tunnel-host.js +4 -1
- package/server/lib/relay/tunnel-host.test.js +11 -0
- package/server/lib/session-assist/DOCUMENTATION.md +17 -5
- package/server/lib/session-assist/runtime.js +19 -2
- package/server/lib/session-assist/runtime.test.js +8 -0
- package/server/lib/session-goal/DOCUMENTATION.md +11 -0
- package/server/lib/small-model/DOCUMENTATION.md +11 -10
- package/server/lib/small-model/index.js +27 -32
- package/server/lib/small-model/index.test.js +28 -16
- package/server/lib/spaces/DOCUMENTATION.md +404 -32
- package/server/lib/spaces/code-in-bait.js +145 -6
- package/server/lib/spaces/code-in.js +10 -150
- package/server/lib/spaces/code-in.test.js +7 -83
- package/server/lib/spaces/code-out.js +1819 -0
- package/server/lib/spaces/code-out.test.js +3945 -0
- package/server/lib/spaces/code-transfer.js +173 -0
- package/server/lib/spaces/command-stream.test.js +181 -0
- package/server/lib/spaces/dispatcher.js +670 -0
- package/server/lib/spaces/dispatcher.test.js +582 -0
- package/server/lib/spaces/gatekeeper-channel.js +61 -7
- package/server/lib/spaces/gatekeeper-channel.test.js +43 -7
- package/server/lib/spaces/gatekeeper-program.cjs +68 -14
- package/server/lib/spaces/gatekeeper-program.test.js +118 -3
- package/server/lib/spaces/hardening.js +20 -4
- package/server/lib/spaces/hardening.test.js +18 -3
- package/server/lib/spaces/host-git.js +7 -4
- package/server/lib/spaces/host-git.test.js +6 -2
- package/server/lib/spaces/host.js +310 -0
- package/server/lib/spaces/host.test.js +273 -0
- package/server/lib/spaces/journey.js +552 -0
- package/server/lib/spaces/journey.test.js +589 -0
- package/server/lib/spaces/layout.js +42 -8
- package/server/lib/spaces/manager.js +4 -3
- package/server/lib/spaces/manager.test.js +6 -0
- package/server/lib/spaces/places/code-out.docker.live.test.js +412 -0
- package/server/lib/spaces/places/contract-suite.js +36 -0
- package/server/lib/spaces/places/dispatcher.docker.live.test.js +296 -0
- package/server/lib/spaces/places/docker-live-support.js +27 -4
- package/server/lib/spaces/places/docker.js +33 -5
- package/server/lib/spaces/places/docker.test.js +42 -3
- package/server/lib/spaces/places/escape-suite.js +118 -14
- package/server/lib/spaces/places/fake-docker.js +3 -1
- package/server/lib/spaces/places/grants.docker.live.test.js +197 -0
- package/server/lib/spaces/places/memory-place.js +24 -1
- package/server/lib/spaces/places/registry.js +1 -1
- package/server/lib/spaces/places/server.docker.live.test.js +69 -33
- package/server/lib/spaces/places/sessions.docker.live.test.js +222 -0
- package/server/lib/spaces/routes.js +216 -0
- package/server/lib/spaces/routes.test.js +213 -0
- package/server/lib/spaces/run-command.js +261 -8
- package/server/lib/spaces/run-command.test.js +193 -3
- package/server/lib/spaces/space-events.js +153 -0
- package/server/lib/spaces/space-events.test.js +160 -0
- package/server/lib/spaces/space-opencode.js +52 -0
- package/server/lib/spaces/space-opencode.test.js +41 -0
- package/server/lib/spaces/space-records.js +150 -0
- package/server/lib/spaces/space-records.test.js +113 -0
- package/server/lib/spaces/space-sessions.js +210 -0
- package/server/lib/spaces/space-sessions.test.js +161 -0
- package/server/lib/spaces/websocket.js +329 -0
- package/server/lib/spaces/websocket.test.js +345 -0
- package/server/lib/ui-auth/ui-auth.js +8 -2
- package/server/lib/ui-auth/ui-auth.test.js +29 -0
- package/server/opencode-proxy.test.js +271 -0
- package/server/proxy-headers.js +8 -2
- package/server/proxy-headers.test.js +20 -0
- package/dist/assets/DiffView-CX3wAX2S.js +0 -4
- package/dist/assets/FilesView-OL3CON3r.js +0 -17
- package/dist/assets/GuestSurfacePane-B_cqX5I5.js +0 -1
- package/dist/assets/MarkdownImageGallery-DFiTFZgj.js +0 -1
- package/dist/assets/MarkdownRendererImpl-DZm5sf1W.js +0 -12
- package/dist/assets/PluginPane-BibJit86.js +0 -3
- package/dist/assets/SettingsView-h-VpVO47.js +0 -29
- package/dist/assets/commitAndPush-BIPfOMXY.js +0 -1
- package/dist/assets/de-BqCNGROu.js +0 -10
- package/dist/assets/es-BTPpTRgN.js +0 -16
- package/dist/assets/fr-hxbzMdAg.js +0 -14
- package/dist/assets/index-CLcM8HKx.css +0 -1
- package/dist/assets/index-CvLgnuNI.js +0 -41
- package/dist/assets/ja-_zLwwYiy.js +0 -16
- package/dist/assets/ko-CFn3Dzhc.js +0 -16
- package/dist/assets/main-BLJaug9I.js +0 -896
- package/dist/assets/markdownCore-DS9FdwrI.js +0 -5
- package/dist/assets/patchFileDiff-D9iBcTEi.js +0 -13
- package/dist/assets/pl-DFHE7xac.js +0 -16
- package/dist/assets/pt-BR-CUjZF179.js +0 -16
- package/dist/assets/renderMobileApp-CNQhdXsi.js +0 -25
- package/dist/assets/runtimeEndpointReset-DeaERc0M.js +0 -27
- package/dist/assets/scheduledTasksApi-BD6Vx9pu.js +0 -1
- package/dist/assets/tr-BB6sA_zH.js +0 -7
- package/dist/assets/uk-CB4o8g-o.js +0 -16
- package/dist/assets/vendor-opencode-client-_BAHQo4R.js +0 -12
- package/dist/assets/vendor-zod-Gea9uBlY.js +0 -39
- package/dist/assets/zh-CN-BRyDuWhc.js +0 -16
- package/dist/assets/zh-TW-BDGbWA1Q.js +0 -16
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as N,f as oe,j as s}from"./vendor-react-BUCujlKS.js";import{u as ze}from"./vendor-tanstack-react-virtual-ClYN8CzB.js";import{f as Q,aA as Ee,ae as be,af as ye,I as E,ag as we,h as J,B as q,a9 as Te,j$ as Ie,c2 as fe,c3 as ue,c4 as pe,c5 as ge,c6 as xe,c7 as ve,bj as Me,cq as Pe,t as ae}from"./useAppFontEffects-ZM9ij19-.js";import{u as ke}from"./index-CvLgnuNI.js";const Se={"?":{code:"?",color:"var(--status-info)",description:"Untracked file"},A:{code:"A",color:"var(--status-success)",description:"New file"},D:{code:"D",color:"var(--status-error)",description:"Deleted file"},R:{code:"R",color:"var(--status-info)",description:"Renamed file"},C:{code:"C",color:"var(--status-info)",description:"Copied file"},M:{code:"M",color:"var(--status-warning)",description:"Modified file"}},Fe=Se.M;function Re(f){const e=f.index?.trim(),t=f.working_dir?.trim();return e&&e!=="?"?e.charAt(0):t?t.charAt(0):e?.charAt(0)||t?.charAt(0)||"M"}function $e(f){const e=Re(f);return Se[e]??Fe}const He=N.memo(function(e){const t=oe.c(58),{file:l,actionLabel:b,actionSymbol:x,onAction:u,onViewDiff:c,onRevert:a,isReverting:h,stats:C,rowPaddingClassName:p,indentPx:y,actionAtStart:V,showRevert:S}=e,v=y===void 0?0:y,o=V===void 0?!1:V,j=S===void 0?!0:S;let d;t[0]!==l?(d=$e(l),t[0]=l,t[1]=d):d=t[1];const g=d,{t:I}=Q(),$=g.description,F=C?.insertions??0,A=C?.deletions??0;let z;t[2]!==u||t[3]!==c?(z=U=>{U.key===" "?(U.preventDefault(),u()):U.key==="Enter"&&(U.preventDefault(),c())},t[2]=u,t[3]=c,t[4]=z):z=t[4];const T=z;let M;t[5]!==u?(M=U=>{U.preventDefault(),U.stopPropagation(),u()},t[5]=u,t[6]=M):M=t[6];const w=M;let H;t[7]!==a?(H=U=>{U.preventDefault(),U.stopPropagation(),a()},t[7]=a,t[8]=H):H=t[8];const W=H;let L;t[9]!==b||t[10]!==x||t[11]!==w?(L=s.jsx("button",{type:"button",onClick:w,className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":b,title:b,children:x}),t[9]=b,t[10]=x,t[11]=w,t[12]=L):L=t[12];const R=L,X=`group flex items-center gap-2 py-1.5 cursor-pointer ${p??"px-3"}`;let P;t[13]!==v?(P=v>0?{paddingLeft:`${v}px`}:void 0,t[13]=v,t[14]=P):P=t[14];const Y=o?R:null;let K;t[15]!==g.color?(K={color:g.color},t[15]=g.color,t[16]=K):K=t[16];let G;t[17]!==g.code||t[18]!==$||t[19]!==K?(G=s.jsx("span",{className:"typography-micro font-semibold w-4 text-center uppercase",style:K,title:$,"aria-label":$,children:g.code}),t[17]=g.code,t[18]=$,t[19]=K,t[20]=G):G=t[20];let O;t[21]!==l.path?(O=s.jsx(Ee,{filePath:l.path,className:"h-3.5 w-3.5 shrink-0"}),t[21]=l.path,t[22]=O):O=t[22];let B;if(t[23]!==l.path){e:{const U=l.path.lastIndexOf("/");if(U===-1){let ne;t[25]===Symbol.for("react.memo_cache_sentinel")?(ne={direction:"rtl",textAlign:"left",unicodeBidi:"plaintext"},t[25]=ne):ne=t[25],B=s.jsx("span",{className:"flex-1 min-w-0 truncate typography-ui-label text-foreground",style:ne,title:l.path,children:l.path});break e}const Ae=l.path.slice(0,U),De=l.path.slice(U);let te;t[26]===Symbol.for("react.memo_cache_sentinel")?(te={direction:"rtl",textAlign:"left",unicodeBidi:"plaintext"},t[26]=te):te=t[26];let se;t[27]===Symbol.for("react.memo_cache_sentinel")?(se=s.jsx("span",{className:"text-muted-foreground",children:"/"}),t[27]=se):se=t[27];const ce=s.jsx("span",{className:"text-foreground",children:De.slice(1)});let ie;t[28]!==ce?(ie=s.jsxs("span",{className:"flex-shrink-0 typography-ui-label",children:[se,ce]}),t[28]=ce,t[29]=ie):ie=t[29],B=s.jsxs("span",{className:"flex-1 min-w-0 flex items-baseline overflow-hidden",title:l.path,children:[s.jsx("span",{className:"min-w-0 truncate typography-ui-label text-muted-foreground",style:te,children:Ae}),ie]})}t[23]=l.path,t[24]=B}else B=t[24];let Z;t[30]===Symbol.for("react.memo_cache_sentinel")?(Z={color:"var(--status-success)"},t[30]=Z):Z=t[30];let i;t[31]!==F?(i=s.jsxs("span",{style:Z,children:["+",F]}),t[31]=F,t[32]=i):i=t[32];let n,r;t[33]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx("span",{className:"text-muted-foreground mx-0.5",children:"/"}),r={color:"var(--status-error)"},t[33]=n,t[34]=r):(n=t[33],r=t[34]);let m;t[35]!==A?(m=s.jsxs("span",{style:r,children:["-",A]}),t[35]=A,t[36]=m):m=t[36];let D;t[37]!==i||t[38]!==m?(D=s.jsxs("span",{className:"shrink-0 typography-micro",children:[i,n,m]}),t[37]=i,t[38]=m,t[39]=D):D=t[39];let k;t[40]!==l.path||t[41]!==W||t[42]!==h||t[43]!==j||t[44]!==I?(k=j?s.jsxs(be,{children:[s.jsx(ye,{asChild:!0,children:s.jsx("button",{type:"button",onClick:W,disabled:h,className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50","aria-label":I("gitView.changes.revertFileAria",{path:l.path}),children:h?s.jsx(E,{name:"loader-4",className:"size-3.5 animate-spin"}):s.jsx(E,{name:"arrow-go-back",className:"size-3.5"})})}),s.jsx(we,{sideOffset:8,children:I("gitView.changes.revertFileTooltip")})]}):null,t[40]=l.path,t[41]=W,t[42]=h,t[43]=j,t[44]=I,t[45]=k):k=t[45];const _=o?null:R;let ee;return t[46]!==T||t[47]!==c||t[48]!==P||t[49]!==Y||t[50]!==G||t[51]!==O||t[52]!==B||t[53]!==D||t[54]!==k||t[55]!==_||t[56]!==X?(ee=s.jsxs("div",{className:X,role:"button",tabIndex:0,onClick:c,onKeyDown:T,style:P,children:[Y,G,O,B,D,k,_]}),t[46]=T,t[47]=c,t[48]=P,t[49]=Y,t[50]=G,t[51]=O,t[52]=B,t[53]=D,t[54]=k,t[55]=_,t[56]=X,t[57]=ee):ee=t[57],ee}),je=14,Ve=f=>f.replace(/\\/g,"/").replace(/^\/+/,"").trim(),Ne=(f,e)=>({id:`dir:${f}`,path:f,name:e,children:new Map,directFiles:[],files:[]}),Le=f=>{const e=Ne("","");for(const t of f){const l=Ve(t.path);if(!l)continue;const x=l.split("/").filter(Boolean).slice(0,-1);let u=e;if(u.files.push(t),x.length>0){let c="";for(const a of x){c=c?`${c}/${a}`:a;const h=u.children.get(a);if(h){h.files.push(t),u=h;continue}const C=Ne(c,a);C.files.push(t),u.children.set(a,C),u=C}}u.directFiles.push(t)}return e},Ge=(f,e)=>{const t=[],l=(b,x)=>{const u=Array.from(b.children.values()).sort((a,h)=>a.path.localeCompare(h.path));for(const a of u)t.push({key:a.id,kind:"directory",depth:x,directory:a}),e.has(a.path)&&l(a,x+1);const c=[...b.directFiles].sort((a,h)=>a.path.localeCompare(h.path));for(const a of c)t.push({key:`file:${Ve(a.path)}`,kind:"file",depth:x,file:a})};return l(f,0),t},Oe=1e3,Ce=34,de=30,le="pl-0 pr-2",he=(f,e)=>`${f} ${e}`,Ze=({groups:f,diffStats:e,revertingPaths:t,isRevertingAll:l=!1,headerBackgroundClassName:b="bg-sidebar",onVisiblePathsChange:x,onRevertAll:u,onRevertDirectory:c})=>{const{t:a}=Q(),h=N.useRef(null),p=ke(i=>i.gitChangesViewMode)==="tree",y=N.useMemo(()=>f.filter(i=>i.entries.length>0),[f]),[V,S]=N.useState(new Set),[v,o]=N.useState(new Set),[j,d]=N.useState(!1),[g,I]=N.useState(null),$=N.useMemo(()=>y.map(i=>Le(i.entries)),[y]),F=N.useMemo(()=>{const i=[];return y.forEach((n,r)=>{Array.from($[r]?.children.values()??[]).forEach(m=>{i.push(he(n.id,m.path))})}),i},[$,y]);N.useEffect(()=>{p&&o(i=>{const n=new Set,r=new Set(F);return i.forEach(m=>{(m.slice(m.indexOf(" ")+1).includes("/")||r.has(m))&&n.add(m)}),F.forEach(m=>n.add(m)),n})},[p,F]);const A=N.useMemo(()=>{const i=[];return y.forEach((n,r)=>{if(i.push({type:"header",key:`header:${n.id}`,groupIndex:r}),!V.has(n.id)){if(p){const m=new Set;v.forEach(k=>{k.startsWith(`${n.id} `)&&m.add(k.slice(n.id.length+1))}),Ge($[r],m).forEach(k=>{k.kind==="file"?i.push({type:"file",key:`${n.id}:${k.key}`,groupIndex:r,file:k.file,depth:k.depth}):i.push({type:"directory",key:`${n.id}:${k.key}`,groupIndex:r,directory:k.directory,depth:k.depth})});return}n.entries.forEach(m=>{i.push({type:"file",key:`${n.id}:file:${m.path}`,groupIndex:r,file:m,depth:0})})}}),u&&y.length>0&&i.push({type:"revert-all",key:"revert-all"}),i},[V,v,p,u,$,y]),z=A.length,T=z>=Oe,M=ze({count:z,enabled:T,getScrollElement:()=>h.current,estimateSize:()=>Ce,overscan:12,getItemKey:i=>A[i]?.key??i}),w=M.getVirtualItems(),H=N.useMemo(()=>{if(!T)return 0;const i=h.current?.scrollTop??0;return w.find(r=>r.end>i)?.index??0},[T,w,h]);N.useEffect(()=>{if(!x)return;const i=n=>n&&n.type==="file"?n.file.path:null;if(z===0){x([]);return}if(!T){const n=[];for(const r of A)if(r.type==="file"&&(n.push(r.file.path),n.length>=de))break;x(n);return}x(A.slice(H,H+Math.ceil((h.current?.clientHeight??0)/Ce)+de).map(n=>i(n)).filter(n=>!!n).slice(0,de))},[x,z,A,T,H]);const W=N.useCallback(i=>{S(n=>{const r=new Set(n);return r.has(i)?r.delete(i):r.add(i),r})},[]),L=N.useCallback((i,n)=>{o(r=>{const m=new Set(r),D=he(i,n);return m.has(D)?m.delete(D):m.add(D),m})},[]),R=N.useMemo(()=>{const i=new Set;return y.forEach(n=>n.entries.forEach(r=>i.add(r.path))),Array.from(i)},[y]),X=R.length,P=g?l||g.paths.some(i=>t.has(i)):!1,Y=N.useCallback(async()=>{!u||l||R.length===0||(await u(R),d(!1))},[R,l,u]),K=N.useCallback(async()=>{!c||!g||P||(await c(g.paths),I(null))},[P,c,g]),G=N.useCallback((i,n)=>{const r=V.has(i.id),m=i.entries.length;return s.jsxs("div",{className:J("sticky top-0 z-10 flex items-center gap-2 py-2",b,le,!n&&"mt-1 border-t border-border/40"),children:[s.jsx("button",{type:"button",onClick:()=>i.onActionAll(i.entries.map(D=>D.path)),className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":i.actionAllLabel,title:i.actionAllLabel,children:i.actionSymbol}),s.jsxs("button",{type:"button",onClick:()=>W(i.id),className:"flex min-w-0 flex-1 items-center gap-2 rounded text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-expanded":!r,children:[s.jsx("h3",{className:"truncate typography-ui-header font-semibold text-foreground",children:i.title}),s.jsx("span",{className:"typography-meta text-muted-foreground",children:m}),s.jsx(E,{name:"arrow-down-s",className:J("size-3.5 shrink-0 text-muted-foreground transition-transform",r&&"-rotate-90")})]})]})},[V,b,W]),O=N.useCallback((i,n,r)=>{const m=v.has(he(i.id,n.path)),D=n.files.map(_=>_.path),k=l||D.some(_=>t.has(_));return s.jsxs("div",{className:J("group flex items-center gap-2 py-1.5",le),style:{paddingLeft:`${r*je}px`},children:[s.jsxs("button",{type:"button",onClick:()=>L(i.id,n.path),className:"flex min-w-0 flex-1 items-center gap-2 rounded text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":m?a("gitView.changes.collapseDirectoryAria",{path:n.path}):a("gitView.changes.expandDirectoryAria",{path:n.path}),children:[m?s.jsx(E,{name:"folder-open-fill",className:"h-4 w-4 flex-shrink-0 text-primary/60"}):s.jsx(E,{name:"folder-3-fill",className:"h-4 w-4 flex-shrink-0 text-primary/60"}),s.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label text-foreground",title:n.path,children:n.name}),s.jsx("span",{className:"ml-auto shrink-0 typography-micro text-muted-foreground",children:n.files.length})]}),i.showRevertActions!==!1&&c?s.jsx("button",{type:"button",onClick:()=>I({path:n.path,paths:D,count:D.length}),disabled:k,className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50","aria-label":a("gitView.changes.revertDirectoryAria",{path:n.path}),title:a("gitView.changes.revertDirectoryTooltip"),children:k?s.jsx(E,{name:"loader-4",className:"size-3.5 animate-spin"}):s.jsx(E,{name:"arrow-go-back",className:"size-3.5"})}):null,s.jsx("button",{type:"button",onClick:()=>i.onActionAll(n.files.map(_=>_.path)),className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":a(i.actionSymbol==="+"?"gitView.changes.stageDirectoryAria":"gitView.changes.unstageDirectoryAria",{path:n.path}),title:a(i.actionSymbol==="+"?"gitView.changes.stageDirectoryAria":"gitView.changes.unstageDirectoryAria",{path:n.path}),children:i.actionSymbol})]})},[v,l,c,t,a,L]),B=N.useCallback((i,n)=>{if(i.type==="revert-all")return s.jsx("div",{className:J("flex justify-end py-2",le),children:s.jsxs(q,{variant:"ghost",size:"sm",onClick:()=>d(!0),disabled:l,className:"gap-1.5 text-[var(--status-error)] hover:bg-[var(--status-error)]/10 hover:text-[var(--status-error)]",children:[s.jsx(E,{name:"arrow-go-back",className:"size-3.5"}),a("gitView.changes.revertAll")]})});const r=y[i.groupIndex];if(!r)return null;if(i.type==="header")return G(r,n);if(i.type==="directory")return O(r,i.directory,i.depth);const m=i.file;return s.jsx(He,{file:m,actionLabel:r.getActionLabel(m.path),actionSymbol:r.actionSymbol,onAction:()=>r.onActionFile(m.path),stats:e?.[r.statsScope]?.[m.path],onViewDiff:()=>r.onViewDiff(m.path),onRevert:()=>r.onRevertFile(m.path),isReverting:t.has(m.path)||l,rowPaddingClassName:le,indentPx:i.depth*je,actionAtStart:!p,showRevert:r.showRevertActions!==!1})},[e,l,p,O,G,t,a,y]),Z=N.useCallback(i=>{const n=A[i],r=A[i-1];return!n||!r||n.type!=="file"&&n.type!=="directory"||r.type!=="file"&&r.type!=="directory"?!1:r.groupIndex===n.groupIndex},[A]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"relative flex h-full min-h-0 w-full flex-col overflow-hidden",children:[s.jsx(Te,{ref:h,className:"overlay-scrollbar-target overlay-scrollbar-container min-h-0 w-full flex-1 overflow-x-hidden overflow-y-auto",children:T?s.jsx("div",{style:{height:M.getTotalSize(),position:"relative"},children:w.map(i=>{const n=A[i.index];return n?s.jsx("div",{"data-index":i.index,ref:M.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${i.start}px)`},className:J(Z(i.index)&&"before:pointer-events-none before:absolute before:left-0 before:right-2 before:top-0 before:border-t before:border-border/60"),children:B(n,i.index===0)},n.key):null})}):s.jsx("div",{role:"list","aria-label":a("gitView.changes.changedFilesAria"),children:A.map((i,n)=>s.jsx("div",{className:J("relative",Z(n)&&"before:pointer-events-none before:absolute before:left-0 before:right-2 before:top-0 before:border-t before:border-border/60"),children:B(i,n===0)},i.key))})}),s.jsx(Ie,{containerRef:h,disableHorizontal:!0})]}),s.jsx(fe,{open:j,onOpenChange:i=>{!l&&!i&&d(!1)},children:s.jsxs(ue,{className:"max-w-md",children:[s.jsxs(pe,{children:[s.jsx(ge,{children:a("gitView.changes.revertAllDialogTitle")}),s.jsx(xe,{children:X===1?a("gitView.changes.revertAllDescriptionSingle",{count:X}):a("gitView.changes.revertAllDescriptionPlural",{count:X})})]}),s.jsxs(ve,{children:[s.jsx(q,{variant:"outline",size:"sm",onClick:()=>d(!1),disabled:l,children:a("gitView.common.cancel")}),s.jsx(q,{variant:"destructive",size:"sm",onClick:()=>{Y()},disabled:l,children:a(l?"gitView.changes.reverting":"gitView.changes.revertAll")})]})]})}),s.jsx(fe,{open:!!g,onOpenChange:i=>{!P&&!i&&I(null)},children:s.jsxs(ue,{className:"max-w-md",children:[s.jsxs(pe,{children:[s.jsx(ge,{children:a("gitView.changes.revertDirectoryDialogTitle")}),s.jsx(xe,{children:g?g.count===1?a("gitView.changes.revertDirectoryDescriptionSingle",{count:g.count,path:g.path}):a("gitView.changes.revertDirectoryDescriptionPlural",{count:g.count,path:g.path}):null})]}),s.jsxs(ve,{children:[s.jsx(q,{variant:"outline",size:"sm",onClick:()=>I(null),disabled:P,children:a("gitView.common.cancel")}),s.jsx(q,{variant:"destructive",size:"sm",onClick:()=>{K()},disabled:P||!g,children:a(P?"gitView.changes.reverting":"gitView.changes.revertDirectory")})]})]})})]})},me=38,re=200,Ke=f=>{const e=oe.c(23),{value:t,onChange:l,onSubmit:b,placeholder:x,disabled:u,hasTouchInput:c,isMobile:a}=f,h=u===void 0?!1:u,C=c===void 0?!1:c,p=a===void 0?!1:a,{t:y}=Q(),V=N.useRef(null),S=ke(Be);let v;e[0]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{const w=V.current;if(!w)return;const H=document.activeElement===w,W=()=>{w.style.height=`${me}px`;const R=w.scrollHeight,X=Math.min(Math.max(R,me),re);w.style.height=`${X}px`,w.style.overflowY=R>re?"auto":"hidden",R>re&&!H&&(w.scrollTop=w.scrollHeight)};W();const L=window.requestAnimationFrame(W);return()=>{window.cancelAnimationFrame(L)}},e[0]=v):v=e[0];let o;e[1]!==t?(o=[t],e[1]=t,e[2]=o):o=e[2],N.useLayoutEffect(v,o);let j;e[3]!==l?(j=w=>l(w.target.value),e[3]=l,e[4]=j):j=e[4];let d;e[5]!==b?(d=w=>{w.key==="Enter"&&(w.metaKey||w.ctrlKey)&&!w.shiftKey&&!w.altKey&&(w.preventDefault(),b?.())},e[5]=b,e[6]=d):d=e[6];let g;e[7]!==x||e[8]!==y?(g=x??y("gitView.commit.messagePlaceholder"),e[7]=x,e[8]=y,e[9]=g):g=e[9];const I=C?"on":"off",$=C?"sentences":"off",F=p||S,A=h&&"opacity-50";let z;e[10]!==A?(z=J("w-full rounded-lg border border-border/60 bg-surface-elevated px-3 py-2 typography-ui-label text-foreground placeholder:text-muted-foreground","resize-none outline-none transition-[border-color,box-shadow] duration-150","focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]",A),e[10]=A,e[11]=z):z=e[11];let T;e[12]===Symbol.for("react.memo_cache_sentinel")?(T={minHeight:me,maxHeight:re},e[12]=T):T=e[12];let M;return e[13]!==h||e[14]!==$||e[15]!==F||e[16]!==z||e[17]!==j||e[18]!==d||e[19]!==g||e[20]!==I||e[21]!==t?(M=s.jsx("textarea",{ref:V,value:t,onChange:j,onKeyDown:d,placeholder:g,rows:1,disabled:h,autoCorrect:I,autoCapitalize:$,spellCheck:F,className:z,style:T}),e[13]=h,e[14]=$,e[15]=F,e[16]=z,e[17]=j,e[18]=d,e[19]=g,e[20]=I,e[21]=t,e[22]=M):M=e[22],M};function Be(f){return f.inputSpellcheckEnabled}const _e=f=>{const e=oe.c(30),{highlights:t,onInsert:l}=f,{t:b}=Q();if(t.length===0)return null;let x;e[0]!==t||e[1]!==l?(x=()=>{l(t)},e[0]=t,e[1]=l,e[2]=x):x=e[2];const u=x;let c;e[3]!==b?(c=b("gitView.commit.aiHighlights.title"),e[3]=b,e[4]=c):c=e[4];let a;e[5]!==c?(a=s.jsx("p",{className:"typography-micro text-muted-foreground",children:c}),e[5]=c,e[6]=a):a=e[6];let h;e[7]!==b?(h=b("gitView.commit.aiHighlights.insertAria"),e[7]=b,e[8]=h):h=e[8];let C;e[9]===Symbol.for("react.memo_cache_sentinel")?(C=s.jsx(E,{name:"arrow-down",className:"size-4"}),e[9]=C):C=e[9];let p;e[10]!==u||e[11]!==h?(p=s.jsx(ye,{asChild:!0,children:s.jsx(q,{variant:"ghost",size:"icon",className:"size-6",onClick:u,"aria-label":h,children:C})}),e[10]=u,e[11]=h,e[12]=p):p=e[12];let y;e[13]!==b?(y=b("gitView.commit.aiHighlights.insertTooltip"),e[13]=b,e[14]=y):y=e[14];let V;e[15]!==y?(V=s.jsx(we,{sideOffset:8,children:y}),e[15]=y,e[16]=V):V=e[16];let S;e[17]!==p||e[18]!==V?(S=s.jsxs(be,{children:[p,V]}),e[17]=p,e[18]=V,e[19]=S):S=e[19];let v;e[20]!==a||e[21]!==S?(v=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[a,S]}),e[20]=a,e[21]=S,e[22]=v):v=e[22];let o;e[23]!==t?(o=t.map(Ue),e[23]=t,e[24]=o):o=e[24];let j;e[25]!==o?(j=s.jsx("ul",{className:"space-y-1",children:o}),e[25]=o,e[26]=j):j=e[26];let d;return e[27]!==v||e[28]!==j?(d=s.jsxs("div",{className:"space-y-2 rounded-xl border border-border/60 bg-transparent px-3 py-2",children:[v,j]}),e[27]=v,e[28]=j,e[29]=d):d=e[29],d};function Ue(f,e){return s.jsx("li",{className:"typography-meta text-foreground",children:f},`${f}-${e}`)}const Je=f=>{const e=oe.c(80),{stagedCount:t,commitMessage:l,onCommitMessageChange:b,generatedHighlights:x,onInsertHighlights:u,onGenerateMessage:c,isGeneratingMessage:a,onCommit:h,onCommitAndPush:C,commitAction:p,hasPendingIndexMutation:y,gitmojiEnabled:V,onOpenGitmojiPicker:S}=f,v=y===void 0?!1:y,{t:o}=Q(),j=t>0;let d;e[0]!==p||e[1]!==l||e[2]!==v||e[3]!==j?(d=l.trim()&&j&&p===null&&!v,e[0]=p,e[1]=l,e[2]=v,e[3]=j,e[4]=d):d=e[4];const g=d,{isMobile:I,hasTouchInput:$}=Me();let F;e[5]!==o?(F=o("gitView.commit.title"),e[5]=o,e[6]=F):F=e[6];let A;e[7]!==F?(A=s.jsx("h3",{className:"typography-ui-header font-semibold text-foreground",children:F}),e[7]=F,e[8]=A):A=e[8];let z;e[9]!==j||e[10]!==o?(z=j?null:s.jsx("span",{className:"min-w-0 truncate typography-meta text-muted-foreground",children:o("gitView.commit.stageFilesHint")}),e[9]=j,e[10]=o,e[11]=z):z=e[11];let T;e[12]!==A||e[13]!==z?(T=s.jsxs("div",{className:"flex w-full items-baseline gap-2 px-0 pt-2 pb-1",children:[A,z]}),e[12]=A,e[13]=z,e[14]=T):T=e[14];let M;e[15]!==x||e[16]!==u?(M=s.jsx(_e,{highlights:x,onInsert:u}),e[15]=x,e[16]=u,e[17]=M):M=e[17];let w;e[18]!==g||e[19]!==a||e[20]!==h?(w=()=>{g&&!a&&h()},e[18]=g,e[19]=a,e[20]=h,e[21]=w):w=e[21];let H;e[22]!==o?(H=o("gitView.commit.messagePlaceholder"),e[22]=o,e[23]=H):H=e[23];const W=p!==null;let L;e[24]!==l||e[25]!==$||e[26]!==I||e[27]!==b||e[28]!==W||e[29]!==w||e[30]!==H?(L=s.jsx(Ke,{value:l,onChange:b,onSubmit:w,placeholder:H,disabled:W,hasTouchInput:$,isMobile:I}),e[24]=l,e[25]=$,e[26]=I,e[27]=b,e[28]=W,e[29]=w,e[30]=H,e[31]=L):L=e[31];let R;e[32]!==V||e[33]!==S||e[34]!==o?(R=V&&s.jsxs(q,{variant:"outline",size:"sm",onClick:S,className:"w-fit",type:"button",children:[s.jsx(E,{name:"emotion-happy",className:"size-4"}),o("gitView.commit.addGitmoji")]}),e[32]=V,e[33]=S,e[34]=o,e[35]=R):R=e[35];const X=a||p!==null||v||t===0;let P;e[36]!==o?(P=o("gitView.commit.generateAria"),e[36]=o,e[37]=P):P=e[37];let Y;e[38]!==a?(Y=a?s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):s.jsx(E,{name:"ai-generate-2",className:"size-4 text-primary"}),e[38]=a,e[39]=Y):Y=e[39];let K;e[40]!==o?(K=o("gitView.commit.generate"),e[40]=o,e[41]=K):K=e[41];let G;e[42]!==K?(G=s.jsx("span",{className:"commit-actions__label",children:K}),e[42]=K,e[43]=G):G=e[43];let O;e[44]!==c||e[45]!==X||e[46]!==P||e[47]!==Y||e[48]!==G?(O=s.jsxs(q,{variant:"outline",size:"sm",onClick:c,disabled:X,type:"button","aria-label":P,className:"commit-actions__btn",children:[Y,G]}),e[44]=c,e[45]=X,e[46]=P,e[47]=Y,e[48]=G,e[49]=O):O=e[49];let B;e[50]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx("div",{className:"flex-1"}),e[50]=B):B=e[50];const Z=!g||a;let i;e[51]!==o?(i=o("gitView.commit.commitAria"),e[51]=o,e[52]=i):i=e[52];let n;e[53]!==p||e[54]!==o?(n=p==="commit"?s.jsxs(s.Fragment,{children:[s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),s.jsx("span",{className:"commit-actions__label",children:o("gitView.commit.committing")})]}):s.jsxs(s.Fragment,{children:[s.jsx(E,{name:"git-commit",className:"size-4"}),s.jsx("span",{className:"commit-actions__label",children:o("gitView.commit.commit")})]}),e[53]=p,e[54]=o,e[55]=n):n=e[55];let r;e[56]!==h||e[57]!==Z||e[58]!==i||e[59]!==n?(r=s.jsx(q,{size:"sm",variant:"outline",onClick:h,disabled:Z,className:"commit-actions__btn whitespace-nowrap","aria-label":i,children:n}),e[56]=h,e[57]=Z,e[58]=i,e[59]=n,e[60]=r):r=e[60];let m;e[61]!==g||e[62]!==p||e[63]!==a||e[64]!==I||e[65]!==C||e[66]!==o?(m=I?s.jsxs(be,{children:[s.jsx(ye,{asChild:!0,children:s.jsx(q,{variant:"default",size:"sm",onClick:()=>C(),disabled:!g||a,className:"h-7 w-7 p-0","aria-label":o("gitView.commit.pushAria"),children:p==="commitAndPush"?s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):s.jsx(E,{name:"arrow-up",className:"size-3.5"})})}),s.jsx(we,{side:"top",children:s.jsx("p",{children:o("gitView.commit.push")})})]}):s.jsx(q,{size:"sm",variant:"default",onClick:()=>C(),disabled:!g||a,className:"commit-actions__btn","aria-label":o("gitView.commit.pushAria"),children:p==="commitAndPush"?s.jsxs(s.Fragment,{children:[s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),s.jsx("span",{className:"commit-actions__label commit-actions__label--push",children:o("gitView.commit.pushing")})]}):s.jsxs(s.Fragment,{children:[s.jsx(E,{name:"arrow-up",className:"size-3.5"}),s.jsx("span",{className:"commit-actions__label commit-actions__label--push",children:o("gitView.commit.push")})]})}),e[61]=g,e[62]=p,e[63]=a,e[64]=I,e[65]=C,e[66]=o,e[67]=m):m=e[67];let D;e[68]!==O||e[69]!==r||e[70]!==m?(D=s.jsxs("div",{className:"@container/commit-actions flex items-center gap-2 min-w-0",children:[O,B,r,m]}),e[68]=O,e[69]=r,e[70]=m,e[71]=D):D=e[71];let k;e[72]!==L||e[73]!==R||e[74]!==D||e[75]!==M?(k=s.jsxs("div",{className:"flex flex-col gap-3 px-0 pt-1 pb-3",children:[M,L,R,D]}),e[72]=L,e[73]=R,e[74]=D,e[75]=M,e[76]=k):k=e[76];let _;return e[77]!==k||e[78]!==T?(_=s.jsxs("section",{className:"border-0 bg-transparent rounded-none",children:[T,k]}),e[77]=k,e[78]=T,e[79]=_):_=e[79],_},Qe=({open:f,onOpenChange:e,targetBranch:t,changedFileCount:l,onCommitAndSwitch:b,onGenerateMessage:x,onRevertAndSwitch:u})=>{const{t:c}=Q(),[a,h]=N.useState(""),[C,p]=N.useState(null),[y,V]=N.useState(!1),S=C!==null;N.useEffect(()=>{f||(h(""),V(!1))},[f]);const v=async()=>{p("generate");try{const d=await x();d&&h(d)}catch(d){ae.error(d instanceof Error?d.message:c("gitView.dirtySwitch.actionFailed"))}finally{p(null)}},o=async()=>{p("commit");try{let d=a.trim();if(!d){if(d=(await x()).trim(),!d){ae.error(c("gitView.toast.enterCommitMessage"));return}h(d)}await b(d,y)}catch(d){ae.error(d instanceof Error?d.message:c("gitView.dirtySwitch.actionFailed"))}finally{p(null)}},j=async()=>{p("revert");try{await u()}catch(d){ae.error(d instanceof Error?d.message:c("gitView.dirtySwitch.actionFailed"))}finally{p(null)}};return s.jsx(fe,{open:f,onOpenChange:d=>{S||e(d)},children:s.jsx(ue,{className:"max-w-md w-[calc(100vw-2rem)]",children:s.jsxs("div",{className:"flex flex-col gap-4",children:[s.jsxs(pe,{children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(E,{name:"alert",className:"size-5 shrink-0 text-[var(--status-warning)]"}),s.jsx(ge,{children:c("gitView.dirtySwitch.title")})]}),s.jsx(xe,{children:l===1?c("gitView.dirtySwitch.descriptionSingle",{branch:t}):c("gitView.dirtySwitch.descriptionPlural",{branch:t,count:l})})]}),s.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border/60 px-3 py-2 focus-within:border-border",children:[s.jsx("input",{value:a,onChange:d=>h(d.target.value),placeholder:c("gitView.commit.messagePlaceholder"),disabled:S,onKeyDown:d=>{d.key==="Enter"&&!S&&(d.preventDefault(),o())},className:"min-w-0 flex-1 bg-transparent typography-meta text-foreground outline-none placeholder:text-muted-foreground"}),s.jsx("button",{type:"button",onClick:()=>{v()},disabled:S,"aria-label":c("gitView.commit.generate"),title:c("gitView.commit.generate"),className:"shrink-0 text-muted-foreground hover:text-foreground disabled:opacity-50",children:C==="generate"?s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):s.jsx(E,{name:"ai-generate-2",className:"size-4 text-primary"})})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Pe,{checked:y,onChange:V,disabled:S,ariaLabel:c("gitView.dirtySwitch.pushAfterCommit")}),s.jsx("span",{className:"typography-ui-label text-foreground cursor-pointer select-none",onClick:()=>!S&&V(!y),children:c("gitView.dirtySwitch.pushAfterCommit")})]}),s.jsxs("div",{className:"flex items-center justify-between gap-2 pt-1",children:[s.jsxs(q,{variant:"destructive",size:"sm",onClick:()=>{j()},disabled:S,className:"gap-2",children:[C==="revert"?s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):null,c("gitView.dirtySwitch.revertAndSwitch")]}),s.jsxs(q,{variant:"default",size:"sm",onClick:()=>{o()},disabled:S,className:"gap-2",children:[C==="commit"?s.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):null,c("gitView.dirtySwitch.commitAndSwitch")]})]})]})})})},et=async({git:f,directory:e,remote:t,dirtyWorktreeError:l,onPulled:b,onPushed:x})=>{await f.gitFetch(e,{remote:t.name});const u=await f.getGitStatus(e),c=`${t.name}/`,a=u.tracking?.startsWith(c)?u.tracking.slice(c.length):void 0;if((u.behind??0)>0){if((u.files?.length??0)>0)throw new Error(l);const C=await f.gitPull(e,{remote:t.name,branch:a,rebase:!0});b?.(C)}const h=await f.gitPush(e);return h.pushed.length>0&&x?.(h),h};export{Ze as C,Qe as D,Je as a,et as p};
|