@xbzbing/dsh-git-panel 1.2.0 → 1.3.0

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/lib/client.js CHANGED
@@ -1,6 +1,6 @@
1
1
  window.__ModuleLoader__.load({ id: "@xbzbing/dsh-git-panel", factory: (require) => {
2
2
  var module = { exports: {} }; var exports = module.exports;
3
- "use strict";var Ze=require("react");var Tn=`
3
+ "use strict";var ct=require("react");var Qn=`
4
4
  .gp-panel{display:flex;flex-direction:column;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-size:13px;position:relative;
5
5
  /* One selection language across the three list panes (Overview commits,
6
6
  * Changes rows, Files tree): primary-tinted fill + a 3px inset left bar. */
@@ -34,11 +34,15 @@ var module = { exports: {} }; var exports = module.exports;
34
34
  .gp-tab--active{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 12%,transparent);color:var(--dsw-alias-state-business-primary);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dsw-alias-state-business-primary) 32%,transparent)}
35
35
  .gp-tab__icon{display:inline-flex;width:15px;height:15px;flex:none}
36
36
  .gp-tab__label{white-space:nowrap}
37
- /* Responsive tab bar (the bar is an inline-size container): as the panel
38
- * narrows \u2014 e.g. when the right sidebar opens \u2014 shed the trailing controls
39
- * first, then drop the tab labels to icon-only. Two stages, so labels never
40
- * wrap or overflow into the garbled multi-line state. */
41
- @container (max-width:460px){.gp-tabbar .gp-font,.gp-tabbar .gp-verbar{display:none}}
37
+ /* Trailing cluster (font stepper + version bar). display:contents makes it
38
+ * transparent to the tab-bar flex in the wide layout \u2014 font sits after the
39
+ * tabs, version bar floats right via its own margin-left:auto \u2014 identical to a
40
+ * flat layout. The compact layout re-materializes it as a wrapped second row. */
41
+ .gp-tabbar__trailing{display:contents}
42
+ /* Responsive tab bar (the bar is an inline-size container): a very narrow panel
43
+ * drops the tab labels to icon-only so they never wrap into a garbled multi-line
44
+ * state. Hiding the trailing controls is handled by the compact layout (which
45
+ * moves them to a second row) rather than removing them. */
42
46
  @container (max-width:300px){.gp-tab__label{display:none}.gp-tab{gap:0;padding:0 10px}}
43
47
  .gp-font{margin-left:4px;display:inline-flex;align-items:center;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;overflow:hidden}
44
48
  .gp-font button{border:0;border-left:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font:inherit;font-size:11px;line-height:22px;width:24px;height:24px;padding:0;cursor:pointer}
@@ -273,6 +277,7 @@ var module = { exports: {} }; var exports = module.exports;
273
277
  .gp-svgdiff__bar{flex:none;display:flex;justify-content:flex-end;padding:6px 10px;border-bottom:1px solid var(--dsw-alias-border-l2)}
274
278
  .gp-svgdiff__body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto;overscroll-behavior:contain}
275
279
  .gp-feedback{padding:6px 10px;font-size:12px;color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb,var(--dsw-alias-state-error-primary) 10%,transparent);display:flex;align-items:center;gap:8px}
280
+ .gp-notice{padding:6px 10px;font-size:12px;color:var(--dsw-alias-label-secondary);background:color-mix(in srgb,var(--dsw-alias-label-secondary) 10%,transparent);display:flex;align-items:center;gap:8px}
276
281
 
277
282
  /* commit file-diff modal (overview \u2192 click a file): a centered dialog over a
278
283
  * dimmed backdrop, closed by Esc / backdrop click / the close button. */
@@ -348,10 +353,94 @@ var module = { exports: {} }; var exports = module.exports;
348
353
  .gp-tip{position:fixed;z-index:60;max-width:520px;padding:8px 12px;border:1px solid var(--dsw-alias-border-l1,var(--dsw-alias-border-l2));border-radius:12px;background:var(--dsw-alias-bg-layer-3,var(--dsw-alias-bg-layer-2));box-shadow:0 6px 24px rgba(0,0,0,.18),0 1px 3px rgba(0,0,0,.12);font-size:12px;line-height:1.5;pointer-events:none}
349
354
  .gp-tip__path{color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-mono,ui-monospace,monospace);word-break:break-all}
350
355
  .gp-tip__note{margin-top:4px;color:var(--dsw-alias-label-tertiary)}
351
- `,et=!1;function wt(){if(et||typeof document>"u")return;let e="dsh-git-panel/client.css";if(document.querySelector(`style[data-plugin-css="${e}"]`)!==null){et=!0;return}let t=document.createElement("style");t.dataset.plugin="@xbzbing/dsh-git-panel",t.dataset.pluginCss=e,t.textContent=Tn,document.head.appendChild(t),et=!0}var kt={"panel.tab":"Git","panel.fontDecrease":"\u7F29\u5C0F\u5B57\u4F53","panel.fontReset":"\u91CD\u7F6E\u5B57\u4F53\u5927\u5C0F","panel.fontIncrease":"\u653E\u5927\u5B57\u4F53","tab.overview":"Git \u603B\u89C8","tab.changes":"\u53D8\u66F4\u8BB0\u5F55","tab.files":"\u6587\u4EF6\u6D4F\u89C8","pill.unavailable":"Git \u4E0D\u53EF\u7528","pill.detached":"\u6E38\u79BB HEAD","pill.synced":"\u672C\u5730\u5DF2\u540C\u6B65","pill.dirty":"\u6709\u5F85\u63D0\u4EA4\u7684\u53D8\u66F4","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.retry":"\u91CD\u8BD5","common.close":"\u5173\u95ED","version.check":"\u68C0\u67E5\u65B0\u7248\u672C","version.checking":"\u68C0\u67E5\u4E2D\u2026","version.upToDate":"\u5DF2\u662F\u6700\u65B0\uFF08{current}\uFF09","version.updateAvailable":"\u6709\u65B0\u7248\u672C {latest}\uFF08\u5F53\u524D {current}\uFF09","version.viewRelease":"\u67E5\u770B\u53D1\u5E03","version.error":"\u68C0\u67E5\u5931\u8D25","version.noRepo":"\u672A\u914D\u7F6E\u4ED3\u5E93\u5730\u5740","version.openRepo":"\u5728 GitHub \u4E0A\u6253\u5F00\u4ED3\u5E93","overview.head":"HEAD\uFF08\u5F53\u524D\u5206\u652F\uFF09","overview.local":"\u672C\u5730","overview.remote":"\u8FDC\u7A0B","overview.tags":"\u6807\u7B7E","overview.search":"\u641C\u7D22\u63D0\u4EA4\uFF08\u6D88\u606F / \u54C8\u5E0C\uFF09","overview.searchShort":"\u641C\u7D22\u63D0\u4EA4","overview.allUsers":"\u5168\u90E8\u4F5C\u8005","overview.allTime":"\u5168\u90E8\u65F6\u95F4","overview.today":"\u4ECA\u5929","overview.last7d":"\u8FD1 7 \u5929","overview.last30d":"\u8FD1 30 \u5929","overview.selectCommit":"\u9009\u62E9\u4E00\u4E2A\u63D0\u4EA4\u67E5\u770B\u8BE6\u60C5","overview.noMessage":"\uFF08\u65E0\u63D0\u4EA4\u6B63\u6587\uFF09","overview.noResults":"\u6CA1\u6709\u5339\u914D\u7684\u63D0\u4EA4","overview.loadFailed":"\u52A0\u8F7D\u5931\u8D25","overview.detailFailed":"\u8BE6\u60C5\u52A0\u8F7D\u5931\u8D25","overview.diffFailed":"\u5DEE\u5F02\u52A0\u8F7D\u5931\u8D25","overview.openFileDiff":"\u67E5\u770B\u8BE5\u6587\u4EF6\u5728\u6B64\u63D0\u4EA4\u4E2D\u7684\u53D8\u66F4","overview.fetch":"\u62C9\u53D6\u8FDC\u7A0B","overview.branchesError":"\u5206\u652F\u52A0\u8F7D\u5931\u8D25","changes.groupStaged":"\u5DF2\u6682\u5B58\u7684\u66F4\u6539","changes.groupUnstaged":"\u66F4\u6539","changes.groupUntracked":"\u672A\u7248\u672C\u63A7\u5236\u7684\u6587\u4EF6","changes.selectFile":"\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u67E5\u770B\u53D8\u66F4","changes.noChanges":"\u6CA1\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4","changes.stageAll":"\u5168\u90E8\u6682\u5B58","changes.unstageAll":"\u5168\u90E8\u53D6\u6D88\u6682\u5B58","changes.stage":"\u6682\u5B58","changes.unstage":"\u53D6\u6D88\u6682\u5B58","changes.discard":"\u653E\u5F03\u66F4\u6539","changes.discardConfirm":"\u518D\u6B21\u70B9\u51FB\u4EE5\u786E\u8BA4\u653E\u5F03","files.selectFile":"\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.loadFailed":"\u52A0\u8F7D\u5931\u8D25","files.truncated":"\u6761\u76EE\u8FC7\u591A\uFF0C\u5DF2\u622A\u65AD","files.tooLarge":"\u6587\u4EF6\u8FC7\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8","files.binary":"\u4E8C\u8FDB\u5236\u6587\u4EF6\uFF0C\u65E0\u6CD5\u9884\u89C8","files.highlightOff":"\u6587\u4EF6\u8F83\u5927\uFF0C\u5DF2\u5173\u95ED\u8BED\u6CD5\u9AD8\u4EAE\u4EE5\u4FDD\u6301\u6D41\u7545","files.lineTruncated":" \u2026\uFF08\u6B64\u884C\u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD\uFF09","files.findPlaceholder":"\u5728\u6B64\u6587\u4EF6\u4E2D\u67E5\u627E","files.findNoMatch":"\u65E0\u5339\u914D","files.findPrev":"\u4E0A\u4E00\u4E2A","files.findNext":"\u4E0B\u4E00\u4E2A","files.findClose":"\u5173\u95ED\u67E5\u627E","files.findCase":"\u533A\u5206\u5927\u5C0F\u5199","files.previewMode":"\u9884\u89C8\u65B9\u5F0F","files.source":"\u6E90\u7801","files.render":"\u6E32\u67D3","files.copyPath":"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84","files.pathCopied":"\u8DEF\u5F84\u5DF2\u590D\u5236","files.pathCopyFailed":"\u590D\u5236\u5931\u8D25","files.copyContent":"\u590D\u5236\u6587\u4EF6\u5185\u5BB9","files.contentCopied":"\u5185\u5BB9\u5DF2\u590D\u5236","files.contentCopyFailed":"\u590D\u5236\u5931\u8D25","files.ignored":"\u5DF2\u88AB Git \u5FFD\u7565","files.copy":"\u590D\u5236\u4EE3\u7801","files.copied":"\u5DF2\u590D\u5236","files.footnotes":"\u6CE8\u91CA","files.gitNotInstalled":"\u7CFB\u7EDF\u672A\u5B89\u88C5 Git\uFF0CGit \u9762\u677F\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5B89\u88C5 Git \u5DE5\u5177\u540E\u91CD\u8BD5\u3002","stats.files":"{n} \u4E2A\u6587\u4EF6","stats.lastChange":"\u6700\u8FD1\u53D8\u66F4 {time}","stats.lastCommit":"\u4E0A\u6B21\u63D0\u4EA4 {time}","stats.staged":"\u5DF2\u6682\u5B58 {n}","stats.modified":"\u5DF2\u4FEE\u6539 {n}","stats.untracked":"\u672A\u8DDF\u8E2A {n}","commit.placeholder":"\u63D0\u4EA4\u4FE1\u606F","commit.commit":"\u63D0\u4EA4","commit.amend":"\u4FEE\u6B63\u4E0A\u6B21\u63D0\u4EA4\uFF08amend\uFF09","diff.unified":"\u7EDF\u4E00","diff.split":"\u5BF9\u7167","diff.before":"\u53D8\u66F4\u524D","diff.after":"\u53D8\u66F4\u540E","diff.binary":"\u4E8C\u8FDB\u5236\u6587\u4EF6\uFF0C\u65E0\u6CD5\u663E\u793A\u5BF9\u7167","diff.tooLarge":"\u56FE\u7247\u8FC7\u5927\uFF0C\u65E0\u6CD5\u663E\u793A\u5BF9\u7167","diff.imageMissing":"\u4E0D\u5B58\u5728","diff.svgRender":"\u6E32\u67D3","diff.svgSource":"\u6E90\u7801","diff.empty":"\u65E0\u5DEE\u5F02","diff.expandAll":"\u5C55\u5F00\u5168\u90E8","diff.collapse":"\u6298\u53E0\u672A\u53D8\u66F4","diff.expandGap":"\u5C55\u5F00\u5168\u90E8 {n} \u884C","diff.expandUp":"\u5411\u4E0A\u5C55\u5F00 {n} \u884C","diff.expandDown":"\u5411\u4E0B\u5C55\u5F00 {n} \u884C","time.justNow":"\u521A\u521A","time.minutesAgo":"{n} \u5206\u949F\u524D","time.hoursAgo":"{n} \u5C0F\u65F6\u524D","time.daysAgo":"{n} \u5929\u524D","error.generic":"\u64CD\u4F5C\u5931\u8D25","error.notARepo":"\u5F53\u524D\u76EE\u5F55\u4E0D\u662F Git \u4ED3\u5E93","error.noCwd":"\u5F53\u524D\u4F1A\u8BDD\u65E0\u5DE5\u4F5C\u76EE\u5F55","error.localChangesBlock":"\u672C\u5730\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u65E0\u6CD5\u5207\u6362","error.emptyMessage":"\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A","cfg.title":"\u8F93\u5165\u6846\u5206\u652F\u6807\u8BB0","cfg.toggle":"\u663E\u793A\u8F93\u5165\u6846\u6807\u8BB0","cfg.hint":"\u5F00\u542F\u65F6\u5728\u8F93\u5165\u6846\u663E\u793A zsh \u98CE\u683C\u7684 <\u4ED3\u5E93\u540D> (\u5206\u652F) \u6807\u8BB0\uFF1B\u5173\u95ED\u540E\u6539\u4E3A\u5728 Git \u6807\u7B7E\u65C1\u663E\u793A\u72B6\u6001\u5706\u70B9\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.diffTitle":"\u5DEE\u5F02\u5BF9\u6BD4\u9ED8\u8BA4\u89C6\u56FE","cfg.diffHint":"\u9009\u62E9\u53D8\u66F4\u5BF9\u6BD4\u9ED8\u8BA4\u6253\u5F00\u7684\u5E03\u5C40\uFF1A\u7EDF\u4E00\u89C6\u56FE\u4E3A\u5355\u680F\u884C\u5185\u5BF9\u6BD4\uFF0C\u5E76\u6392\u89C6\u56FE\u4E3A\u5DE6\u53F3\u5206\u680F\u5BF9\u6BD4\u3002\u4ECD\u53EF\u5728\u6BCF\u4E2A\u5DEE\u5F02\u89C6\u56FE\u4E2D\u4E34\u65F6\u5207\u6362\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.diffUnified":"\u7EDF\u4E00\u89C6\u56FE\uFF08\u5355\u680F\u884C\u5185\uFF09","cfg.diffSplit":"\u5E76\u6392\u89C6\u56FE\uFF08\u5DE6\u53F3\u5206\u680F\uFF09","cfg.notLoaded":"\u914D\u7F6E\u672A\u52A0\u8F7D\uFF1A\u8BE5\u914D\u7F6E\u7531\u8FD0\u884C\u4E2D\u7684\u5BBF\u4E3B\u63D0\u4F9B\uFF0C\u82E5\u957F\u65F6\u95F4\u7A7A\u767D\u8BF7\u91CD\u542F DSH \u540E\u91CD\u8BD5\u3002","cfg.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"},_t={"panel.tab":"Git","panel.fontDecrease":"Decrease font size","panel.fontReset":"Reset font size","panel.fontIncrease":"Increase font size","tab.overview":"Overview","tab.changes":"Changes","tab.files":"Files","pill.unavailable":"Git unavailable","pill.detached":"detached HEAD","pill.synced":"Everything committed","pill.dirty":"Uncommitted changes","common.loading":"Loading\u2026","common.retry":"Retry","common.close":"Close","version.check":"Check for updates","version.checking":"Checking\u2026","version.upToDate":"Up to date ({current})","version.updateAvailable":"New version {latest} available (current {current})","version.viewRelease":"View release","version.error":"Check failed","version.noRepo":"Repository not configured","version.openRepo":"Open repository on GitHub","overview.head":"HEAD (Current Branch)","overview.local":"Local","overview.remote":"Remote","overview.tags":"Tags","overview.search":"Search commits (message / hash)","overview.searchShort":"Search","overview.allUsers":"All authors","overview.allTime":"All time","overview.today":"Today","overview.last7d":"Last 7 days","overview.last30d":"Last 30 days","overview.selectCommit":"Select a commit to see details","overview.noMessage":"(no commit body)","overview.noResults":"No matching commits","overview.loadFailed":"Load failed","overview.detailFailed":"Failed to load details","overview.diffFailed":"Failed to load diff","overview.openFileDiff":"View this file\u2019s changes in this commit","overview.fetch":"Fetch","overview.branchesError":"Failed to load branches","changes.groupStaged":"Staged changes","changes.groupUnstaged":"Changes","changes.groupUntracked":"Unversioned files","changes.selectFile":"Select a file to see its diff","changes.noChanges":"No uncommitted changes","changes.stageAll":"Stage all","changes.unstageAll":"Unstage all","changes.stage":"Stage","changes.unstage":"Unstage","changes.discard":"Discard changes","changes.discardConfirm":"Click again to confirm discard","files.selectFile":"Select a file to preview","files.loadFailed":"Load failed","files.truncated":"Too many entries \u2014 truncated","files.tooLarge":"File too large to preview","files.binary":"Binary file \u2014 no preview","files.highlightOff":"Large file \u2014 syntax highlighting disabled for performance","files.lineTruncated":" \u2026 (line too long, truncated)","files.findPlaceholder":"Find in file","files.findNoMatch":"No results","files.findPrev":"Previous match","files.findNext":"Next match","files.findClose":"Close find","files.findCase":"Match case","files.previewMode":"Preview mode","files.source":"Source","files.render":"Rendered","files.copyPath":"Copy relative path","files.pathCopied":"Path copied","files.pathCopyFailed":"Copy failed","files.copyContent":"Copy file content","files.contentCopied":"Content copied","files.contentCopyFailed":"Copy failed","files.ignored":"Ignored by Git","files.copy":"Copy code","files.copied":"Copied","files.footnotes":"Footnotes","files.gitNotInstalled":"Git is not installed; the Git panel is unavailable. Please install Git and try again.","stats.files":"{n} files","stats.lastChange":"changed {time}","stats.lastCommit":"last commit {time}","stats.staged":"{n} staged","stats.modified":"{n} modified","stats.untracked":"{n} untracked","commit.placeholder":"Commit message","commit.commit":"Commit","commit.amend":"Amend previous commit","diff.unified":"Unified","diff.split":"Split","diff.before":"Before","diff.after":"After","diff.binary":"Binary file \u2014 no diff to show","diff.tooLarge":"Image too large to compare","diff.imageMissing":"Does not exist","diff.svgRender":"Rendered","diff.svgSource":"Source","diff.empty":"No differences","diff.expandAll":"Expand all","diff.collapse":"Collapse unchanged","diff.expandGap":"Expand all {n} lines","diff.expandUp":"Expand up {n} lines","diff.expandDown":"Expand down {n} lines","time.justNow":"just now","time.minutesAgo":"{n}m ago","time.hoursAgo":"{n}h ago","time.daysAgo":"{n}d ago","error.generic":"Operation failed","error.notARepo":"Not a Git repository","error.noCwd":"This session has no working directory","error.localChangesBlock":"Local changes block the checkout","error.emptyMessage":"Commit message cannot be empty","cfg.title":"Input-bar branch marker","cfg.toggle":"Show input-bar marker","cfg.hint":"When on, the input bar shows the zsh-style <repo> (branch) marker; when off, a status dot appears beside the Git tab instead. Saved changes apply immediately.","cfg.diffTitle":"Default diff view","cfg.diffHint":"Choose the layout diffs open with: unified is a single inline column, split is side-by-side. You can still switch per diff. Saved changes apply immediately.","cfg.diffUnified":"Unified (single inline column)","cfg.diffSplit":"Split (side-by-side)","cfg.notLoaded":"Config not loaded: it is served by the running host. Restart DSH if this stays blank.","cfg.saveFailed":"Save failed, please retry"};var Ee=require("react");var Rn=new Set(["cwd-unavailable"]),tt=3e4,En=6e4,Te=class{constructor(t,n){this.remote=t;this.sessionId=n}view={state:"cold"};listeners=new Set;timer;inflight;pendingRefresh=!1;disposed=!1;pollMs=tt;subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}getSnapshot(){return this.view}ensure(){this.view.state!=="cold"&&this.view.state!=="no-cwd"||this.refresh()}refresh(){return this.inflight!==void 0?(this.pendingRefresh=!0,this.inflight):this.disposed?Promise.resolve():(this.view.state==="cold"&&this.setView({state:"loading"}),this.inflight=this.remote.snapshot({sessionId:this.sessionId}).then(t=>{if(!this.disposed){if(t.ok)this.pollMs=t.value.refreshIntervalMs||tt,this.setView({state:"ready",snapshot:t.value});else if(t.error.code!=="cancelled")if(Rn.has(t.error.code))this.pollMs=En,this.setView({state:"no-cwd"});else if(t.error.code==="not-a-git-repo"){let n=t.error;this.setView({state:"error",error:{code:"not-a-git-repo",...n.cwd?{cwd:n.cwd}:{},...n.showInputPill!==void 0?{showInputPill:n.showInputPill}:{}}})}else if(t.error.code==="git-unavailable"){let n=t.error;this.setView({state:"error",error:{code:"git-unavailable",...n.detail?{detail:n.detail}:{},...n.cwd?{cwd:n.cwd}:{},...n.isGitRepo!==void 0?{isGitRepo:n.isGitRepo}:{}}})}else this.setView({state:"error",error:{code:t.error.code,..."detail"in t.error?{detail:t.error.detail}:{}}})}}).catch(t=>{this.disposed||this.setView({state:"error",error:{code:"git-unavailable",detail:t instanceof Error?t.message:String(t)}})}).finally(()=>{this.inflight=void 0,this.pendingRefresh&&!this.disposed?(this.pendingRefresh=!1,this.refresh()):this.schedulePoll()}),this.inflight)}resync(){this.disposed||this.refresh()}accept(t){this.disposed||(this.pollMs=t.refreshIntervalMs||tt,this.setView({state:"ready",snapshot:t}),this.schedulePoll())}schedulePoll(){this.disposed||(this.timer!==void 0&&clearTimeout(this.timer),!(this.pollMs<=0)&&(this.timer=setTimeout(()=>{this.refresh()},this.pollMs)))}setView(t){this.view=t;for(let n of this.listeners)n()}dispose(){this.disposed=!0,this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.listeners.clear()}};var Mn="/api",Dn="gitPanel";function Fn(e){try{let t=e.get("connection")?.rpc,n=t?.call;if(t!==void 0&&typeof n=="function")return(r,i,a)=>n.call(t,Mn,r,i,a)}catch{}}function An(e){let t=e;if(t===null||typeof t!="object")return{ok:!1,error:{code:"git-unavailable",message:"malformed rpc result"}};if(t.ok!==!0){let n=t.error;return{ok:!1,error:{code:typeof n?.code=="string"?n.code:"git-unavailable",message:typeof n?.message=="string"?n.message:void 0}}}return t.value===void 0?{ok:!1,error:{code:"git-unavailable",message:"missing value"}}:t.value}function Z(e,t){return!e.ok||e.value.kind!==t?null:e.value}function pe(e){return e!==void 0&&e!==""}var St=new WeakMap;function xe(e){let t=St.get(e);if(t!==void 0)return t;let n=async(i,a,s)=>{let o=Fn(e);if(o===void 0)return{ok:!1,error:{code:"git-unavailable",message:"no connection"}};try{let l=await o(`${Dn}/${i}`,{args:{request:a}},s);return An(l)}catch(l){return{ok:!1,error:{code:"git-unavailable",message:l instanceof Error?l.message:String(l)}}}},r={snapshot:(i,a)=>n("snapshot",i,a),run:(i,a)=>n("run",i,a),query:(i,a)=>n("query",i,a),version:(i,a)=>n("version",i,a)};return St.set(e,r),r}var fe=new Map,Ct,nt;function Nt(e){nt=e,Ct=xe(e)}function rt(e){let t=fe.get(e);if(t===void 0){let n=Ct??(nt?xe(nt):void 0);t=new Te(n??Hn(),e),fe.set(e,t)}return t}var Pn=6e4,Re=new Map;function Ln(e){let t=Re.get(e);t!==void 0&&(clearTimeout(t),Re.delete(e)),me.set(e,(me.get(e)??0)+1)}function $n(e){let t=(me.get(e)??1)-1;if(t>0){me.set(e,t);return}me.delete(e);let n=setTimeout(()=>{Re.delete(e),!((me.get(e)??0)>0)&&(fe.get(e)?.dispose(),fe.delete(e))},Pn);Re.set(e,n)}var me=new Map;function we(){for(let e of fe.values())e.resync()}function Gt(){for(let e of fe.values())e.dispose();fe.clear()}function Hn(){let e=async()=>({ok:!1,error:{code:"git-unavailable"}});return{snapshot:e,run:e,query:e,version:e}}function Me(e){let[,t]=(0,Ee.useState)(0),n=e?rt(e):void 0;return(0,Ee.useEffect)(()=>{if(n===void 0||e===void 0)return;Ln(e);let r=n.subscribe(()=>t(i=>i+1));return n.ensure(),()=>{r(),$n(e)}},[n,e]),n?n.getSnapshot():{state:"cold"}}var S=require("react");var Tt="[data-conversation-tabs]",_e='[data-conversation-tabs] button[role="tab"]',it=new Map,ke=new Map;function Rt(e,t){let n=ke.get(e);if(n!==void 0&&n.size>0){for(let r of n)r(t);return}it.set(e,t)}function Et(e){let t=it.get(e);return t===void 0?null:(it.delete(e),t)}function Mt(e,t){let n=ke.get(e);return n===void 0&&(n=new Set,ke.set(e,n)),n.add(t),()=>{let r=ke.get(e);r!==void 0&&(r.delete(t),r.size===0&&ke.delete(e))}}var zn=6e4,at=new Map;function Dt(e,t){at.set(e,{tab:t,leftAt:Date.now()})}function Ft(e){let t=at.get(e);return t===void 0?null:Date.now()-t.leftAt>zn?(at.delete(e),null):t.tab}function At(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(_e);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}function Pt(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(_e);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")==="true";return!1}function Lt(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(_e);for(let n of t)if((n.textContent??"").trim()!==e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}var p=require("react"),ft=require("react-dom");var V=require("react");function le(e,t=15){return(0,V.createElement)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"},e)}function De({size:e}){return le([(0,V.createElement)("circle",{key:"c",cx:8,cy:8,r:2.4}),(0,V.createElement)("line",{key:"l1",x1:8,y1:1.5,x2:8,y2:5.6}),(0,V.createElement)("line",{key:"l2",x1:8,y1:10.4,x2:8,y2:14.5})],e)}function $t({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M4 2v8"}),(0,V.createElement)("path",{key:"b",d:"M2 4h4"}),(0,V.createElement)("circle",{key:"c",cx:4,cy:12,r:1.6}),(0,V.createElement)("circle",{key:"d",cx:12,cy:4,r:1.6}),(0,V.createElement)("path",{key:"e",d:"M12 6v4"}),(0,V.createElement)("path",{key:"f",d:"M10 12h4"})],e)}function ot({size:e}){return le([(0,V.createElement)("circle",{key:"a",cx:4,cy:3,r:1.6}),(0,V.createElement)("circle",{key:"b",cx:4,cy:13,r:1.6}),(0,V.createElement)("circle",{key:"c",cx:12,cy:5,r:1.6}),(0,V.createElement)("path",{key:"d",d:"M4 4.6v6.8"}),(0,V.createElement)("path",{key:"e",d:"M12 6.6c0 3-4 2.4-8 4"})],e)}function Ht({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M2 7V3h4l8 8-4 4z"}),(0,V.createElement)("circle",{key:"b",cx:4.5,cy:5.5,r:.8,fill:"currentColor"})],e)}function ge({size:e,open:t}){return le([(0,V.createElement)("path",{key:"a",d:t?"M3 6l5 5 5-5":"M6 3l5 5-5 5"})],e)}function zt({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M4 4l8 8M12 4l-8 8"})],e)}function Fe({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M13 8a5 5 0 1 1-1.5-3.5"}),(0,V.createElement)("path",{key:"b",d:"M13 2v3h-3"})],e)}function It({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M4 2h5l3 3v9H4z"}),(0,V.createElement)("path",{key:"b",d:"M9 2v3h3"})],e)}function Xt({size:e}){return le([(0,V.createElement)("path",{key:"a",d:"M5 2.5h4l2.5 2.5v7.5h-6.5z"}),(0,V.createElement)("path",{key:"b",d:"M9 2.5V5h2.5"}),(0,V.createElement)("path",{key:"c",d:"M11 12.5v1.5h-6.5V6"})],e)}function Vt({size:e=15}){return(0,V.createElement)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor"},(0,V.createElement)("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"}))}function Kt(e){let t=0;for(let n of e){t=Math.max(t,n.lane+1);for(let r of n.edges)t=Math.max(t,r.fromLane+1,r.toLane+1)}return t}function qt(e){let t=[],n=[],r=new Map,i=0,a=s=>{let o=r.get(s);return o===void 0&&(o=i++,r.set(s,o)),o};for(let s of e){let o=x=>{let _=n.findIndex(F=>F===x);return _===-1&&(_=n.findIndex(F=>F===null),_===-1&&(_=n.length,n.push(null)),n[_]=x),_},l=o(s.hash),d=a(s.hash),g=[...n],c=s.parents,u=c.length>=2;for(let x=0;x<n.length;x++)x!==l&&n[x]===s.hash&&(n[x]=null);if(c.length===0)n[l]=null;else{n[l]=c[0],a(c[0]);for(let x=1;x<c.length;x++){let _=c[x];o(_),a(_)}}let m=[],k=n;for(let x=0;x<g.length;x++){let _=g[x];if(_!==null)if(_===s.hash)m.push({fromLane:x,toLane:l,color:d});else{let F=k.findIndex(v=>v===_);F!==-1&&m.push({fromLane:x,toLane:F,color:a(_)})}}for(let x of c){let _=k.findIndex(F=>F===x);_!==-1&&m.push({fromLane:l,toLane:_,color:a(x)})}for(t.push({commit:s,lane:l,color:d,edges:m,merge:u});n.length>0&&n[n.length-1]===null;)n=n.slice(0,-1)}return t}function Jt(e){let t={name:"",path:"",dir:!0,children:[]};for(let n of e){let r=n.path.split("/").filter(s=>s!==""),i=t,a="";for(let s=0;s<r.length;s++){let o=r[s];a=a===""?o:`${a}/${o}`;let l=s===r.length-1,d=i.children.find(g=>g.name===o&&g.dir===!l);d===void 0&&(d={name:o,path:a,dir:!l,children:[],...l?{meta:n.meta}:{}},i.children.push(d)),i=d}}return Bt(t),Ot(t.children)}function Bt(e){e.children.sort((t,n)=>t.dir!==n.dir?t.dir?-1:1:t.name.localeCompare(n.name));for(let t of e.children)Bt(t)}function Ot(e){return e.map(t=>{if(!t.dir)return t;let n=t;for(;n.children.length===1&&n.children[0].dir;){let r=n.children[0];n={name:`${n.name}/${r.name}`,path:r.path,dir:!0,children:r.children}}return{...n,children:Ot(n.children)}})}function Se(e,t,n){if(e===null)return"";let r=typeof e=="number"?e:Date.parse(e);if(!Number.isFinite(r))return"";let i=Math.max(0,t-r),a=Math.floor(i/6e4);if(a<1)return n("time.justNow");if(a<60)return n("time.minutesAgo",{n:a});let s=Math.floor(a/60);if(s<24)return n("time.hoursAgo",{n:s});let o=Math.floor(s/24);return n("time.daysAgo",{n:o})}function Ce(e){if(e===null)return"";let t=new Date(typeof e=="number"?e:Date.parse(e));if(Number.isNaN(t.getTime()))return"";let n=r=>String(r).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Wt(e){if(e===null)return"";let t=new Date(typeof e=="number"?e:Date.parse(e));if(Number.isNaN(t.getTime()))return"";let n=r=>String(r).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}var Ae={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"!",typechange:"T"};function Pe(e){return e==="added"||e==="untracked"?"gp-status--added":e==="deleted"?"gp-status--deleted":e==="renamed"?"gp-status--renamed":"gp-status--modified"}var h=require("react");var In={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",ico:"image/x-icon",tif:"image/tiff",tiff:"image/tiff"};function st(e){let t=e.lastIndexOf(".");return t<0?null:In[e.slice(t+1).toLowerCase()]??null}function Ut(e){return/^Binary files .* differ$/m.test(e)||/^GIT binary patch$/m.test(e)}function jt(e){return st(e)!==null}function Qt(e){return/\.svg$/i.test(e)}function Xn(e){let t=lt(e);return t.length===0?!1:t.every(n=>n.startsWith("+")||n.startsWith(" "))&&t.some(n=>n.startsWith("+"))&&/^\+\+\+ /m.test(e)&&/--- \/dev\/null/m.test(e)}function Vn(e){let t=lt(e);return t.length===0?!1:t.every(n=>n.startsWith("-")||n.startsWith(" "))&&t.some(n=>n.startsWith("-"))&&/^\+\+\+ \/dev\/null/m.test(e)}function lt(e){let t=e.split(`
352
- `),n=[],r=!1;for(let i of t){if(i.startsWith("@@")){r=!0;continue}if(r){if(i.startsWith("diff ")||i.startsWith("index ")){r=!1;continue}i!==""&&n.push(i)}}return n}function Yt(e){let t=0,n=0;for(let r of lt(e))r.startsWith("+")?t++:r.startsWith("-")&&n++;return{add:t,del:n}}var Kn=/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;function Zt(e){let t=[],n=e.split(`
353
- `),r=0,i=0,a=!0,s=!1,o=0;for(;o<n.length&&!n[o].startsWith("@@");o++);for(;o<n.length;o++){let l=n[o];if(l.startsWith("@@")){let c=Kn.exec(l);if(c){let u=Number(c[1]),m=Number(c[3]),k=u-m;if(a)m>1&&t.push(he({rightStart:1,count:m-1,delta:k,atStart:!0,atEnd:!1}));else{let x=m-i;x>0&&t.push(he({rightStart:i,count:x,delta:k,atStart:!1,atEnd:!1}))}r=u,i=m,a=!1}t.push({kind:"hunk",leftNo:null,rightNo:null,leftText:null,rightText:null,text:l});continue}if(l.startsWith("\\"))continue;let d=l[0],g=l.slice(1);d==="+"?(t.push({kind:"add",leftNo:null,rightNo:i,leftText:null,rightText:g}),i++,s=!0):d==="-"?(t.push({kind:"del",leftNo:r,rightNo:null,leftText:g,rightText:null}),r++,s=!0):d===" "&&(t.push({kind:"context",leftNo:r,rightNo:i,leftText:g,rightText:g}),r++,i++,s=!0)}return s&&!a&&!Xn(e)&&!Vn(e)&&t.push(he({rightStart:i,count:null,delta:r-i,atStart:!1,atEnd:!0})),qn(t)}function he(e){return{kind:"gap",leftNo:null,rightNo:null,leftText:null,rightText:null,gap:e}}function qn(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.kind==="del"){let i=[],a=n;for(;a<e.length&&e[a].kind==="del";)i.push(e[a]),a++;let s=[];for(;a<e.length&&e[a].kind==="add";)s.push(e[a]),a++;let o=Math.max(i.length,s.length);for(let l=0;l<o;l++){let d=i[l],g=s[l];if(d&&g){let c=Jn(d.leftText??"",g.rightText??"");t.push({kind:"mod",leftNo:d.leftNo,rightNo:g.rightNo,leftText:d.leftText,rightText:g.rightText,...c!==null?{leftWord:c.left,rightWord:c.right}:{}})}else d?t.push({kind:"del",leftNo:d.leftNo,rightNo:null,leftText:d.leftText,rightText:null}):g&&t.push({kind:"add",leftNo:null,rightNo:g.rightNo,leftText:null,rightText:g.rightText})}n=a}else t.push(r),n++}return t}function Jn(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;let i=0;for(;i<n-r&&e[e.length-1-i]===t[t.length-1-i];)i++;return r===0&&i===0?null:{left:[r,e.length-i],right:[r,t.length-i]}}function Bn(e,t,n){return n.map((r,i)=>{let a=t+i;return{kind:"context",leftNo:a+e,rightNo:a,leftText:r,rightText:r}})}var oe=20;function dt(e){let t=[];for(let n of e)n.kind==="mod"?(t.push({kind:"del",leftNo:n.leftNo,rightNo:null,leftText:n.leftText,rightText:null,...n.leftWord!==void 0?{leftWord:n.leftWord}:{}}),t.push({kind:"add",leftNo:null,rightNo:n.rightNo,leftText:null,rightText:n.rightText,...n.rightWord!==void 0?{rightWord:n.rightWord}:{}})):t.push(n);return t}function en(e,t,n,r,i,a){let s=e.findIndex(c=>c.kind==="gap"&&c.gap?.rightStart===t);if(s<0)return e.slice();let o=e[s].gap,l=Bn(o.delta,r,i),d=[];if(o.atEnd)return d.push(...l),!a&&i.length>0&&d.push(he({rightStart:r+i.length,count:null,delta:o.delta,atStart:!1,atEnd:!0})),[...e.slice(0,s),...d,...e.slice(s+1)];let g=o.count??i.length;if(n==="all"||i.length>=g)d.push(...l);else if(n==="down"){d.push(...l);let c=g-i.length;d.push(he({rightStart:o.rightStart+i.length,count:c,delta:o.delta,atStart:!1,atEnd:!1}))}else{let c=g-i.length;d.push(he({rightStart:o.rightStart,count:c,delta:o.delta,atStart:o.atStart,atEnd:!1})),d.push(...l)}return[...e.slice(0,s),...d,...e.slice(s+1)]}var Je=require("@deepseek-ai/dsh-client-ui-primitives");function tn(e,t){let n=[[],[],[]],r=0;for(let i of e){let a=r+i.text.length,s=[r,Math.max(r,Math.min(a,t[0])),Math.max(r,Math.min(a,t[1])),a];for(let o=0;o<3;o++){let l=i.text.slice(s[o]-r,s[o+1]-r);l!==""&&n[o].push({text:l,style:i.style})}r=a}return n}var te=require("react"),Le=5e3,$e=120;function He(e,t){let[n,r]=(0,te.useState)(e);return(0,te.useEffect)(()=>{let i=setTimeout(()=>r(e),t);return()=>clearTimeout(i)},[e,t]),n}function ze(e,t){if(t==="")return[];let n=[],r=0;for(;;){let i=e.indexOf(t,r);if(i<0)break;n.push([i,i+t.length]),r=i+t.length}return n}function ct(e,t,n,r,i){if(n>=r)return[];if(e===void 0)return[t.slice(n,r)];let a=[],s=0,o=0;for(let l of e){let d=s+l.text.length,g=Math.max(n,s),c=Math.min(r,d);if(c>g&&a.push((0,te.createElement)("span",{key:`${i}-${o++}`,style:l.style},l.text.slice(g-s,c-s))),s=d,s>=r)break}return a}function Ie(e,t,n,r,i,a){let s=[],o=0,l=[...t].sort((d,g)=>d[0]-g[0]);for(let[d,g]of l){if(d<o)continue;d>o&&s.push(...ct(n,e,o,d,`${r}b${o}`));let c=i!==null&&i[0]===d&&i[1]===g;s.push((0,te.createElement)("mark",{key:`mk${r}-${d}`,className:`gp-find-hit${c?" gp-find-hit--active":""}`,...c?{ref:a}:{}},ct(n,e,d,g,`mk${r}-${d}`))),o=g}return o<e.length&&s.push(...ct(n,e,o,e.length,`${r}e`)),s}function Xe(e){return(0,te.createElement)("div",{key:"find",className:"gp-find"},[(0,te.createElement)("input",{key:"in",ref:e.inputRef,className:"gp-find__input",type:"text",placeholder:e.t("files.findPlaceholder"),value:e.query,spellCheck:!1,"aria-label":e.t("files.findPlaceholder"),onChange:t=>e.onChange(t.target.value),onKeyDown:t=>{t.key==="Escape"?(t.preventDefault(),t.stopPropagation(),e.onClose()):t.key==="Enter"&&(t.preventDefault(),e.onStep(t.shiftKey?-1:1))}}),(0,te.createElement)("button",{key:"case",type:"button",className:`gp-find__btn gp-find__case${e.caseSensitive?" gp-find__case--active":""}`,title:e.t("files.findCase"),"aria-label":e.t("files.findCase"),"aria-pressed":e.caseSensitive,onClick:()=>e.onToggleCase()},"Aa"),(0,te.createElement)("span",{key:"cnt",className:"gp-find__count"},e.query===""?"":e.matches===0?e.t("files.findNoMatch"):`${e.active+1}/${e.matches}`),(0,te.createElement)("button",{key:"prev",type:"button",className:"gp-find__btn",title:e.t("files.findPrev"),"aria-label":e.t("files.findPrev"),disabled:e.matches===0,onClick:()=>e.onStep(-1)},"\u2039"),(0,te.createElement)("button",{key:"next",type:"button",className:"gp-find__btn",title:e.t("files.findNext"),"aria-label":e.t("files.findNext"),disabled:e.matches===0,onClick:()=>e.onStep(1)},"\u203A"),(0,te.createElement)("button",{key:"x",type:"button",className:"gp-find__btn",title:e.t("files.findClose"),"aria-label":e.t("files.findClose"),onClick:()=>e.onClose()},"\u2715")])}var de=require("react");function Ve(e,t,n){let r=n(`diff.${e}`);return(0,de.createElement)("div",{className:`gp-imgcmp__pane gp-imgcmp__pane--${e}`},[(0,de.createElement)("div",{key:"head",className:"gp-imgcmp__head"},r),t===void 0?(0,de.createElement)("div",{key:"missing",className:"gp-imgcmp__missing"},n("diff.imageMissing")):(0,de.createElement)("div",{key:"img",className:"gp-imgcmp__img"},(0,de.createElement)("img",{src:t,alt:r}))])}function nn({oldUrl:e,newUrl:t,mode:n,t:r}){return n==="before"?(0,de.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Ve("before",e,r)):n==="after"?(0,de.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Ve("after",t,r)):(0,de.createElement)("div",{className:"gp-imgcmp"},[Ve("before",e,r),Ve("after",t,r)])}var Be=(0,h.memo)(function({text:t,mode:n,path:r,remote:i,sessionId:a,imageSpec:s,t:o}){let l=(0,h.useMemo)(()=>Zt(t),[t]),d=Ut(t),g=(0,Je.useCodeHighlighter)(r===void 0?void 0:(0,Je.languageForPath)(r)),[c,u]=(0,h.useState)(l);(0,h.useEffect)(()=>{u(l)},[l]);let m=Un(c,u,i,a,r,s),k=r!==void 0&&Qt(r),[x,_]=(0,h.useState)("render");(0,h.useEffect)(()=>{_("render")},[r]);let v=(d||k)&&r!==void 0&&jt(r)&&i!==void 0&&a!==void 0&&s!==void 0&&(!k||x==="render"),M=Qn(v?i:void 0,v?a:void 0,v?r:void 0,v?s:void 0),[z,A]=(0,h.useState)(!1),[C,N]=(0,h.useState)(""),[O,D]=(0,h.useState)(!1),[U,Q]=(0,h.useState)(0),j=(0,h.useRef)(null),ne=(0,h.useRef)(null),T=(0,h.useRef)(null);(0,h.useEffect)(()=>{A(!1),N(""),Q(0)},[t,r]);let I=(0,h.useMemo)(()=>On(n,c),[n,c]),X=(0,h.useMemo)(()=>I.map(J=>({key:J.key,text:J.text.toLowerCase()})),[I]),P=He(C,$e),ee=O?P:P.toLowerCase(),$=O?I:X,w=(0,h.useMemo)(()=>Wn($,ee),[$,ee]);(0,h.useEffect)(()=>{Q(0)},[ee]);let L=w.length===0?0:Math.min(U,w.length-1),q=w.length>0?w[L]:null,re=(0,h.useMemo)(()=>{let J=new Map;for(let H of w){let se=J.get(H.cellKey)??[];se.push([H.start,H.end]),J.set(H.cellKey,se)}return J},[w]);(0,h.useEffect)(()=>{let J=H=>{if(!((H.ctrlKey||H.metaKey)&&(H.key==="f"||H.key==="F")))return;let se=j.current;se===null||se.offsetParent===null||(H.preventDefault(),A(!0),requestAnimationFrame(()=>ne.current?.select()))};return document.addEventListener("keydown",J),()=>document.removeEventListener("keydown",J)},[]),(0,h.useEffect)(()=>{T.current?.scrollIntoView({block:"center",inline:"nearest"})},[L,w]);let Y=(0,h.useCallback)(J=>{Q(H=>w.length===0?0:(H+J+w.length)%w.length)},[w.length]),G=z&&ee!==""?{perCell:re,activeKey:q?.cellKey??null,activeRange:q?[q.start,q.end]:null,activeRef:T}:null;if(v){let J=(()=>{if(M.kind==="idle"||M.kind==="loading")return(0,h.createElement)("div",{className:"gp-empty"},o("common.loading"));if(M.kind==="ready"){let H=M.res;if(H.tooLarge===!0)return(0,h.createElement)("div",{className:"gp-empty"},o("diff.tooLarge"));if(H.mime!==null&&(H.old!==void 0||H.new!==void 0))return(0,h.createElement)(nn,{oldUrl:H.old,newUrl:H.new,mode:n,t:o})}return(0,h.createElement)("div",{className:"gp-empty"},o("diff.binary"))})();return k?rn(x,_,J,o):J}if(d&&!k)return(0,h.createElement)("div",{className:"gp-empty"},o("diff.binary"));let y=(()=>{if(t.trim()==="")return(0,h.createElement)("div",{className:"gp-empty"},o("diff.empty"));if(n==="before")return an(sn(c),g,G);if(n==="after")return an(ln(c),g,G);if(n==="unified"){let J=dt(c);return(0,h.createElement)("div",{className:"gp-diff__unified"},J.flatMap((H,se)=>Zn(H,se,g,m,G,o)))}return(0,h.createElement)("div",{className:"gp-diff__side"},c.flatMap((J,H)=>Yn(J,H,g,m,G,o)))})(),R=z?(0,h.createElement)(Xe,{inputRef:ne,query:C,matches:w.length,active:L,caseSensitive:O,onChange:N,onToggleCase:()=>D(J=>!J),onStep:Y,onClose:()=>A(!1),t:o}):null,K=(0,h.createElement)("div",{className:"gp-diff__wrap",ref:j},[R,y]);return k?rn(x,_,K,o):K});function On(e,t){let n=[];return e==="before"?(sn(t).forEach((r,i)=>n.push({key:`c${i}`,text:r.text})),n):e==="after"?(ln(t).forEach((r,i)=>n.push({key:`c${i}`,text:r.text})),n):e==="unified"?(dt(t).forEach((r,i)=>{if(r.kind==="hunk"||r.kind==="gap")return;let a=r.rightText??r.leftText??"";a!==""&&n.push({key:`c${i}`,text:a})}),n):(t.forEach((r,i)=>{r.kind==="hunk"||r.kind==="gap"||(r.leftText!==null&&r.leftText!==""&&n.push({key:`l${i}`,text:r.leftText}),r.rightText!==null&&r.rightText!==""&&n.push({key:`r${i}`,text:r.rightText}))}),n)}function Wn(e,t){if(t==="")return[];let n=[];for(let r of e)for(let[i,a]of ze(r.text,t))if(n.push({cellKey:r.key,start:i,end:a}),n.length>=Le)return n;return n}function rn(e,t,n,r){let i=(a,s)=>(0,h.createElement)("button",{key:a,type:"button",className:`gp-seg__btn${e===a?" gp-seg__btn--active":""}`,"aria-pressed":e===a,onClick:()=>t(a)},s);return(0,h.createElement)("div",{className:"gp-svgdiff"},[(0,h.createElement)("div",{key:"bar",className:"gp-svgdiff__bar"},(0,h.createElement)("div",{className:"gp-seg"},[i("render",r("diff.svgRender")),i("source",r("diff.svgSource"))])),(0,h.createElement)("div",{key:"body",className:"gp-svgdiff__body"},n)])}function Un(e,t,n,r,i,a){let[s,o]=(0,h.useState)(null),l=(0,h.useRef)(0);(0,h.useEffect)(()=>{l.current+=1,o(null)},[e]);let d=(0,h.useCallback)((g,c)=>{if(n===void 0||r===void 0||i===void 0||a===void 0)return;let u=`${g.rightStart}:${c}`;o(u);let m=++l.current,{start:k,end:x}=jn(g,c),_=a.base==="commit"&&a.commit!==void 0?{kind:"file-lines",path:i,base:"commit",commit:a.commit,start:k,end:x}:a.base==="staged"?{kind:"file-lines",path:i,base:"staged",start:k,end:x}:{kind:"file-lines",path:i,base:"worktree",start:k,end:x};n.query({sessionId:r,query:_}).then(F=>{if(m!==l.current)return;let v=Z(F,"file-lines");o(null),v!==null&&t(M=>en(M,g.rightStart,c,v.start,v.lines,v.eof))}).catch(()=>{m===l.current&&o(null)})},[n,r,i,a,t]);return{busy:s,run:d}}function jn(e,t){if(e.atEnd)return{start:e.rightStart,end:e.rightStart+oe-1};let n=e.count??oe;return t==="all"||n<=oe?{start:e.rightStart,end:e.rightStart+n-1}:t==="down"?{start:e.rightStart,end:e.rightStart+oe-1}:{start:e.rightStart+n-oe,end:e.rightStart+n-1}}function Qn(e,t,n,r){let[i,a]=(0,h.useState)({kind:"idle"}),s=r?.base,o=r?.commit;return(0,h.useEffect)(()=>{if(e===void 0||t===void 0||n===void 0||s===void 0)return;let l=!0;a({kind:"loading"});let d=s==="commit"&&o!==void 0?{kind:"image-diff",path:n,base:"commit",commit:o}:s==="staged"?{kind:"image-diff",path:n,base:"staged"}:{kind:"image-diff",path:n,base:"worktree"};return e.query({sessionId:t,query:d}).then(g=>{if(!l)return;let c=Z(g,"image-diff");a(c!==null?{kind:"ready",res:c}:{kind:"failed"})}).catch(()=>{l&&a({kind:"failed"})}),()=>{l=!1}},[e,t,n,s,o]),i}function Ke(e,t=""){return e.map((n,r)=>(0,h.createElement)("span",{key:`${t}${r}`,style:n.style},n.text))}function on(e,t,n,r){if(n===null)return null;let i=n.perCell.get(t);if(i===void 0||i.length===0)return null;let a=n.activeKey===t?n.activeRange:null;return Ie(e,i,r,t,a,n.activeRef)}function qe(e,t,n,r,i=null){if(n==="")return(0,h.createElement)("div",{key:t,className:e},"\xA0");let a=r(n)?.[0],s=on(n,t,i,a);return s!==null?(0,h.createElement)("div",{key:t,className:e},s):(0,h.createElement)("div",{key:t,className:e},a===void 0?n:Ke(a))}function pt(e,t,n,r,i,a,s=null){let o=a(n)?.[0]??[{text:n,style:{}}],l=on(n,t,s,o);if(l!==null)return(0,h.createElement)("div",{key:t,className:e},l);let[d,g,c]=tn(o,r);return(0,h.createElement)("div",{key:t,className:e},[...Ke(d,"p"),(0,h.createElement)("span",{key:"w",className:i},g.length===0?"\xA0":Ke(g)),...Ke(c,"s")])}function sn(e){return e.filter(t=>t.leftText!==null).map(t=>({no:t.leftNo,text:t.leftText}))}function ln(e){return e.filter(t=>t.rightText!==null).map(t=>({no:t.rightNo,text:t.rightText}))}function an(e,t,n=null){return(0,h.createElement)("div",{className:"gp-diff__single"},e.flatMap((r,i)=>[(0,h.createElement)("div",{key:`n${i}`,className:"gp-diff-no"},r.no??""),qe("gp-diff-cell",`c${i}`,r.text,t,n)]))}function Yn(e,t,n,r,i,a){if(e.kind==="hunk")return[(0,h.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[dn(e.gap,t,r,a)];let s=e.kind==="del"||e.kind==="mod"?"gp-diff-row--del":"",o=e.kind==="add"||e.kind==="mod"?"gp-diff-row--add":"",l=e.leftText===null?(0,h.createElement)("div",{key:`l${t}`,className:`gp-diff-cell ${s}`}):e.kind==="mod"&&e.leftWord!==void 0?pt(`gp-diff-cell ${s}`,`l${t}`,e.leftText,e.leftWord,"gp-diff-word gp-diff-word--del",n,i):qe(`gp-diff-cell ${s}`,`l${t}`,e.leftText,n,i),d=e.rightText===null?(0,h.createElement)("div",{key:`r${t}`,className:`gp-diff-cell ${o}`}):e.kind==="mod"&&e.rightWord!==void 0?pt(`gp-diff-cell ${o}`,`r${t}`,e.rightText,e.rightWord,"gp-diff-word gp-diff-word--add",n,i):qe(`gp-diff-cell ${o}`,`r${t}`,e.rightText,n,i);return[(0,h.createElement)("div",{key:`ln${t}`,className:"gp-diff-no"},e.leftNo??""),l,(0,h.createElement)("div",{key:`rn${t}`,className:"gp-diff-no"},e.rightNo??""),d]}function Zn(e,t,n,r,i,a){if(e.kind==="hunk")return[(0,h.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[dn(e.gap,t,r,a)];let s=e.kind==="del",o=e.kind==="add",l=o?"gp-diff-row--add":s?"gp-diff-row--del":"",d=o?"+":s?"\u2212":"\xA0",g=e.rightText??e.leftText??"",c=o?e.rightWord:s?e.leftWord:void 0,u=o?"gp-diff-word gp-diff-word--add":"gp-diff-word gp-diff-word--del",m=`gp-diff-cell gp-diff-uni__code ${l}`,k=c!==void 0?pt(m,`c${t}`,g,c,u,n,i):qe(m,`c${t}`,g,n,i);return[(0,h.createElement)("div",{key:`ol${t}`,className:"gp-diff-no"},e.leftNo??""),(0,h.createElement)("div",{key:`nl${t}`,className:"gp-diff-no"},e.rightNo??""),(0,h.createElement)("div",{key:`sg${t}`,className:`gp-diff-uni__sign ${l}`},d),k]}function dn(e,t,n,r){let i=n.busy===`${e.rightStart}:all`,a=n.busy===`${e.rightStart}:up`,s=n.busy===`${e.rightStart}:down`,o=(d,g,c)=>(0,h.createElement)("button",{key:d,type:"button",className:"gp-gap__btn",disabled:n.busy!==null,onClick:u=>{u.stopPropagation(),n.run(e,d)}},c?r("common.loading"):g),l=[];if(e.atEnd)l.push(o("down",r("diff.expandDown",{n:oe}),s));else{let d=e.count??0;d>0&&d<=oe?l.push(o("all",r("diff.expandGap",{n:d}),i)):(e.atStart||l.push(o("up",r("diff.expandUp",{n:oe}),a)),l.push(o("all",r("diff.expandGap",{n:d}),i)),l.push(o("down",r("diff.expandDown",{n:oe}),s)))}return(0,h.createElement)("div",{key:`g${t}`,className:"gp-diff-row--gap",style:{gridColumn:"1 / -1"}},l)}function Oe(e){return Yt(e)}var E=require("react");var er=100;function cn(e,t,n){let[r,i]=(0,E.useState)(null),[a,s]=(0,E.useState)(!1),[o,l]=(0,E.useState)([]),d=(0,E.useCallback)(()=>{s(!1),(async()=>{let[g,c]=await Promise.all([e.query({sessionId:t,query:{kind:"branches"}}),e.query({sessionId:t,query:{kind:"tags"}})]),u=Z(g,"branches");if(u===null){s(!0);return}let m=Z(c,"tags");i({current:u.current,defaultBranch:u.defaultBranch,local:u.local,remote:u.remote,tags:m?.tags??[]}),e.query({sessionId:t,query:{kind:"authors"}}).then(k=>{l(Z(k,"authors")?.authors??[])})})()},[e,t]);return(0,E.useEffect)(()=>{d()},[n]),{tree:r,treeError:a,authors:o,reload:d}}function pn(e,t,n,r,i){let[a,s]=(0,E.useState)([]),[o,l]=(0,E.useState)(0),[d,g]=(0,E.useState)(!1),[c,u]=(0,E.useState)(!1),m=(0,E.useRef)(0),k=(0,E.useRef)(!1),x=(0,E.useRef)(null),_=(0,E.useCallback)(async(z,A)=>{if(k.current)return;k.current=!0;let C=m.current;g(!0),u(!1);let N=await e.query({sessionId:t,query:{kind:"history",limit:er,skip:z,...A.ref?{ref:A.ref}:{},...A.search?{search:A.search}:{},...A.author?{author:A.author}:{},...A.since?{since:A.since}:{}}});if(k.current=!1,C!==m.current)return;g(!1);let O=Z(N,"history");if(O===null){u(!0);return}let D=O.commits;s(U=>z===0?D:[...U,...D]),l(O.total)},[e,t]),F=(0,E.useRef)(n);(0,E.useEffect)(()=>{m.current+=1,k.current=!1,F.current!==n&&(F.current=n,i(),x.current&&(x.current.scrollTop=0)),_(0,n)},[n,r]);let v=o<0?!0:a.length<o,M=(0,E.useCallback)(()=>{k.current||!v||_(a.length,n)},[_,a.length,n,v]);return{commits:a,total:o,loading:d,listError:c,hasMore:v,listRef:x,loadMore:M}}function fn(e,t,n){let[r,i]=(0,E.useState)(null),[a,s]=(0,E.useState)(null),[o,l]=(0,E.useState)(!1),[d,g]=(0,E.useState)(null),[c,u]=(0,E.useState)(null),[m,k]=(0,E.useState)(!1),[x,_]=(0,E.useState)(n),[F,v]=(0,E.useState)(!1),M=(0,E.useRef)(0),z=(0,E.useRef)(null),A=(0,E.useRef)(new Map),C=(0,E.useCallback)(($,w)=>{let L=A.current;for(L.set($,w);L.size>50;){let q=L.keys().next().value;if(q===void 0)break;L.delete(q)}},[]),N=(0,E.useCallback)(()=>{i(null),s(null),z.current=null},[]),O=(0,E.useCallback)(async $=>{z.current=$.hash,i($),l(!1),M.current+=1,g(null),u(null),k(!1);let w=A.current.get($.hash);if(w!==void 0){s(w);return}s(null);let L=await e.query({sessionId:t,query:{kind:"show",ref:$.hash}});if(z.current!==$.hash)return;let q=Z(L,"show");if(q!==null){let re={commit:q.commit,body:q.body,stats:q.stats};C($.hash,re),s(re)}else l(!0)},[e,t,C]),D=(0,E.useCallback)(async($,w,L,q=!1)=>{let re=++M.current;g({path:$,hash:w,shortHash:L}),u(null),k(!1),v(q);let Y=await e.query({sessionId:t,query:{kind:"diff",path:$,base:"commit",commit:w,...q?{context:1e5}:{}}});if(re!==M.current)return;let G=Z(Y,"diff");G!==null?u(G.text):k(!0)},[e,t]),U=(0,E.useCallback)(()=>{M.current+=1,g(null),u(null),k(!1),v(!1)},[]);(0,E.useEffect)(()=>{if(d===null)return;let $=w=>{w.key==="Escape"&&U()};return document.addEventListener("keydown",$),()=>document.removeEventListener("keydown",$)},[d,U]);let[Q,j]=(0,E.useState)(null),[ne,T]=(0,E.useState)(null),I=(0,E.useRef)(void 0),X=(0,E.useRef)(null),P=(0,E.useCallback)(($,w,L)=>{I.current!==void 0&&clearTimeout(I.current),I.current=setTimeout(()=>{X.current=$.hash,j({commit:$,x:w,y:L});let q=A.current.get($.hash);if(q!==void 0){T(q.body);return}T(null),e.query({sessionId:t,query:{kind:"show",ref:$.hash}}).then(re=>{if(X.current!==$.hash)return;let Y=Z(re,"show");Y!==null?(C($.hash,{commit:Y.commit,body:Y.body,stats:Y.stats}),T(Y.body)):T("")})},260)},[e,t,C]),ee=(0,E.useCallback)(()=>{I.current!==void 0&&clearTimeout(I.current),X.current=null,j(null),T(null)},[]);return(0,E.useEffect)(()=>()=>{I.current!==void 0&&clearTimeout(I.current)},[]),{selected:r,detail:a,detailError:o,select:O,clearSelection:N,fileDiff:d,fileDiffText:c,fileDiffError:m,fileDiffMode:x,setFileDiffMode:_,fileDiffExpanded:F,openFileDiff:D,closeFileDiff:U,hover:Q,hoverBody:ne,onHoverEnter:P,onHoverLeave:ee}}var ae=require("react"),tr=(e,t,n)=>Math.max(t,Math.min(n,e));function nr(e,t){try{let n=typeof localStorage<"u"?localStorage.getItem(e):null,r=n===null?NaN:Number(n);return Number.isFinite(r)?r:t}catch{return t}}function rr(e,t){try{typeof localStorage<"u"&&localStorage.setItem(e,String(Math.round(t)))}catch{}}function ue(e){let{storageKey:t,initial:n,min:r,reserve:i,edge:a}=e,[s,o]=(0,ae.useState)(()=>nr(t,n)),l=(0,ae.useRef)(null),d=(0,ae.useRef)(null),g=(0,ae.useCallback)(u=>{let k=l.current?.parentElement?.clientWidth??Number.MAX_SAFE_INTEGER;d.current={x:u.clientX,w:s,max:Math.max(r,k-i)},u.preventDefault(),typeof document<"u"&&(document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[s,r,i]);(0,ae.useEffect)(()=>{if(typeof window>"u")return;let u=k=>{let x=d.current;if(x===null)return;let _=k.clientX-x.x;o(tr(x.w+(a==="end"?_:-_),r,x.max))},m=()=>{d.current!==null&&(d.current=null,typeof document<"u"&&(document.body.style.cursor="",document.body.style.userSelect=""),o(k=>(rr(t,k),k)))};return window.addEventListener("pointermove",u),window.addEventListener("pointerup",m),()=>{window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",m)}},[a,r,t]);let c=(0,ae.createElement)("div",{key:`rz-${t}`,ref:l,className:"gp-resizer",role:"separator","aria-orientation":"vertical",onPointerDown:g});return{width:s,divider:c}}var gn=require("react");function ye(e,t,n,r,i=!1){return e.map(a=>(0,gn.createElement)("button",{key:a,type:"button",className:`gp-seg__btn${t===a?" gp-seg__btn--active":""}`,...i?{disabled:!0}:{},onClick:()=>n(a)},r(a)))}var be=14,Ne=30,ir=260;function ar(e,t){let[n,r]=(0,p.useState)(!1);return(0,p.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let i=()=>r(e.clientWidth>0&&e.clientWidth<t);i();let a=new ResizeObserver(i);return a.observe(e),()=>a.disconnect()},[e,t]),n}function un({remote:e,sessionId:t,refreshKey:n,defaultDiffView:r,t:i}){let[a,s]=(0,p.useState)({ref:null,search:"",author:"",since:""}),[o,l]=(0,p.useState)(""),[d,g]=(0,p.useState)(null),c=ar(d,ir),[u,m]=(0,p.useState)(new Set(["tags","remote"])),{tree:k,treeError:x,authors:_,reload:F}=cn(e,t,n),v=fn(e,t,r),{commits:M,loading:z,listError:A,hasMore:C,listRef:N,loadMore:O}=pn(e,t,a,n,v.clearSelection);(0,p.useEffect)(()=>{let w=setTimeout(()=>s(L=>L.search===o?L:{...L,search:o}),300);return()=>clearTimeout(w)},[o]);let D=a.search!=="",U=(0,p.useMemo)(()=>D?M.map(w=>({commit:w,lane:0,color:0,edges:[],merge:!1})):qt(M),[M,D]),Q=(0,p.useMemo)(()=>D?0:Kt(U),[U,D]),j=D?12:Math.max(be,Q*be),ne=`${j}px minmax(120px,1fr) 72px 120px 96px`,T=()=>{let w=N.current;w===null||!C||w.scrollTop+w.clientHeight>=w.scrollHeight-240&&O()},I=(0,p.useMemo)(()=>Date.now(),[M]),X=(0,p.useMemo)(()=>v.detail===null?[]:Jt(v.detail.stats.map(w=>({path:w.path,meta:w.status}))),[v.detail]),P=v.selected,ee=ue({storageKey:"gp.overview.left",initial:200,min:130,reserve:360,edge:"end"}),$=ue({storageKey:"gp.overview.right",initial:340,min:190,reserve:360,edge:"start"});return(0,p.createElement)("div",{className:"gp-overview"},[pr(v.fileDiff,{text:v.fileDiffText,error:v.fileDiffError,mode:v.fileDiffMode,onMode:v.setFileDiffMode,expanded:v.fileDiffExpanded,onExpand:w=>{v.fileDiff!==null&&v.openFileDiff(v.fileDiff.path,v.fileDiff.hash,v.fileDiff.shortHash,w)},onClose:v.closeFileDiff,remote:e,sessionId:t,t:i}),(0,p.createElement)("div",{key:"left",className:"gp-col gp-col--left",style:{flex:`0 0 ${ee.width}px`}},sr(k,x,a.ref,u,{onFilter:w=>s(L=>({...L,ref:w})),onToggle:w=>m(L=>{let q=new Set(L);return q.has(w)?q.delete(w):q.add(w),q}),onRetry:F,t:i})),ee.divider,(0,p.createElement)("div",{key:"mid",className:"gp-col gp-col--mid gp-history"},[(0,p.createElement)("div",{key:"tb",className:"gp-toolbar",ref:g},[(0,p.createElement)("input",{key:"search",className:"gp-search",placeholder:i(c?"overview.searchShort":"overview.search"),value:o,onChange:w=>l(w.target.value)}),(0,p.createElement)("select",{key:"author",className:"gp-select",value:a.author,onChange:w=>s(L=>({...L,author:w.target.value}))},[(0,p.createElement)("option",{key:"",value:""},i("overview.allUsers")),..._.map(w=>(0,p.createElement)("option",{key:w,value:w},w))]),(0,p.createElement)("select",{key:"since",className:"gp-select",value:a.since,onChange:w=>s(L=>({...L,since:w.target.value}))},[(0,p.createElement)("option",{key:"",value:""},i("overview.allTime")),(0,p.createElement)("option",{key:"today",value:"1 day ago"},i("overview.today")),(0,p.createElement)("option",{key:"7d",value:"7 days ago"},i("overview.last7d")),(0,p.createElement)("option",{key:"30d",value:"30 days ago"},i("overview.last30d"))]),(0,p.createElement)("button",{key:"fetch",type:"button",className:"gp-icon-btn",title:i("overview.fetch"),onClick:()=>{e.run({sessionId:t,action:{kind:"fetch"}}).then(()=>F())}},(0,p.createElement)(Fe,{size:14}))]),(0,p.createElement)("div",{key:"list",className:"gp-history__list",ref:N,onScroll:T},M.length===0?(0,p.createElement)("div",{className:"gp-empty"},i(z?"common.loading":A?"overview.loadFailed":"overview.noResults")):U.map(w=>lr(w,{selected:P?.hash===w.commit.hash,gridTpl:ne,graphW:j,laneCount:Q,searching:D,now:I,onSelect:()=>void v.select(w.commit),onHoverEnter:v.onHoverEnter,onHoverLeave:v.onHoverLeave,t:i})))]),$.divider,(0,p.createElement)("div",{key:"right",className:"gp-col gp-col--right gp-detail",style:{flex:`0 0 ${$.width}px`}},P===null?(0,p.createElement)("div",{className:"gp-empty"},[(0,p.createElement)(De,{key:"i",size:20}),i("overview.selectCommit")]):[(0,p.createElement)("div",{key:"files",className:"gp-detail__files"},v.detail===null?(0,p.createElement)("div",{className:"gp-empty"},v.detailError?i("overview.detailFailed"):i("common.loading")):cr(X,{activePath:v.fileDiff?.path??null,openTitle:i("overview.openFileDiff"),onOpen:w=>{P!==null&&v.openFileDiff(w,P.hash,P.shortHash)}})),(0,p.createElement)("div",{key:"msg",className:"gp-detail__msg"},[(0,p.createElement)("div",{key:"subj",className:"gp-detail__subject"},P.subject),(0,p.createElement)("div",{key:"meta",className:"gp-detail__meta"},[(0,p.createElement)("span",{key:"h",className:"gp-commit-hash"},P.shortHash),(0,p.createElement)("span",{key:"a"},P.author),(0,p.createElement)("span",{key:"t"},Wt(P.dateIso))]),v.detail!==null&&v.detail.body!==""?(0,p.createElement)("pre",{key:"body",className:"gp-detail__body"},v.detail.body):(0,p.createElement)("div",{key:"nb",className:"gp-empty"},i("overview.noMessage"))])]),or(v.hover,v.hoverBody,i)])}function or(e,t,n){if(e===null||typeof document>"u")return null;let r=460,i=Math.min(e.x+16,(typeof window<"u"?window.innerWidth:1200)-r-12),a=e.y+14,s=(0,p.createElement)("div",{className:"gp-hovercard",style:{left:i,top:a,maxWidth:r}},[(0,p.createElement)("div",{key:"subj",className:"gp-hovercard__subject"},e.commit.subject),(0,p.createElement)("div",{key:"meta",className:"gp-hovercard__meta"},[(0,p.createElement)("span",{key:"h",className:"gp-commit-hash"},e.commit.shortHash),(0,p.createElement)("span",{key:"a"},e.commit.author)]),t===null?(0,p.createElement)("div",{key:"l",className:"gp-hovercard__loading"},n("common.loading")):t===""?(0,p.createElement)("div",{key:"e",className:"gp-hovercard__loading"},n("overview.noMessage")):(0,p.createElement)("pre",{key:"body",className:"gp-hovercard__body"},t)]);return(0,ft.createPortal)(s,document.body,"commit-hovercard")}function sr(e,t,n,r,i){if(t)return(0,p.createElement)("div",{className:"gp-empty"},[(0,p.createElement)("span",{key:"m"},i.t("overview.branchesError")),(0,p.createElement)("button",{key:"r",type:"button",className:"gp-btn",style:{marginTop:8},onClick:i.onRetry},i.t("common.retry"))]);if(e===null)return(0,p.createElement)("div",{className:"gp-empty"},i.t("common.loading"));let a=(s,o,l,d,g="")=>(0,p.createElement)("div",{key:s,className:"gp-branch-group"},[(0,p.createElement)("div",{key:"head",className:"gp-branch-group__head",onClick:()=>i.onToggle(s)},[(0,p.createElement)(ge,{key:"c",size:11,open:!r.has(s)}),`${i.t(o)} (${l.length})`]),r.has(s)?null:l.map(c=>{let u=g+c.name,m=e.current===c.name,k=`gp-branch-row${n===u?" gp-branch-row--active":""}${m?" gp-branch-row--current":""}`;return(0,p.createElement)("div",{key:c.name,className:k,title:c.name,onClick:()=>i.onFilter(n===u?null:u)},[(0,p.createElement)("span",{key:"i",style:{display:"inline-flex",width:14}},d),(0,p.createElement)("span",{key:"n",className:"gp-tree-name"},c.name),c.ahead||c.behind?(0,p.createElement)("span",{key:"t",className:"gp-branch-row__track"},`${c.ahead?`\u2191${c.ahead}`:""}${c.behind?`\u2193${c.behind}`:""}`):null])})]);return(0,p.createElement)("div",{},[(0,p.createElement)("div",{key:"head-row",className:"gp-branch-row",style:{fontWeight:600,paddingLeft:10},onClick:()=>i.onFilter(null)},i.t("overview.head")),a("local","overview.local",e.local,(0,p.createElement)(ot,{size:13})),a("remote","overview.remote",e.remote,(0,p.createElement)(ot,{size:13})),a("tags","overview.tags",e.tags,(0,p.createElement)(Ht,{size:13}))])}function lr(e,t){let n=e.commit;return(0,p.createElement)("div",{key:n.hash,className:`gp-commit-row${t.selected?" gp-commit-row--active":""}`,style:{gridTemplateColumns:t.gridTpl},onClick:t.onSelect,onMouseEnter:r=>t.onHoverEnter(n,r.clientX,r.clientY),onMouseLeave:t.onHoverLeave},[(0,p.createElement)("div",{key:"g",className:"gp-graph-cell"},t.searching?null:dr(e,t.laneCount)),(0,p.createElement)("div",{key:"s",className:"gp-commit-subject"},[...n.refs.map(r=>(0,p.createElement)("span",{key:r.name,className:`gp-ref-chip${r.head?" gp-ref-chip--head":""}${r.kind==="remote"?" gp-ref-chip--remote":""}${r.kind==="tag"?" gp-ref-chip--tag":""}`},r.name)),n.subject]),(0,p.createElement)("div",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,p.createElement)("div",{key:"a",className:"gp-commit-author"},n.author),(0,p.createElement)("div",{key:"d",className:"gp-commit-date",title:Ce(n.dateIso)},Se(n.dateIso,t.now,t.t))])}var We=["#4e9bff","#3fb950","#e0982e","#d05ce3","#e5534b","#2dc6c6","#d29922","#8b949e"];function dr(e,t){let n=Math.max(be,t*be),r=a=>a*be+be/2,i=[];for(let a of e.edges){let s=We[a.color%We.length];i.push((0,p.createElement)("path",{key:`e${a.fromLane}-${a.toLane}-${a.color}`,d:`M ${r(a.fromLane)} 0 C ${r(a.fromLane)} ${Ne/2}, ${r(a.toLane)} ${Ne/2}, ${r(a.toLane)} ${Ne}`,stroke:s,strokeWidth:1.6,fill:"none"}))}return i.push((0,p.createElement)("circle",{key:"node",cx:r(e.lane),cy:Ne/2,r:e.merge?4:3.2,fill:We[e.color%We.length],stroke:"var(--dsw-alias-bg-layer-1)",strokeWidth:1})),(0,p.createElement)("svg",{className:"gp-graph-svg",width:n,height:Ne},i)}function cr(e,t){let n=[],r=(i,a)=>{for(let s of i)if(s.dir)n.push((0,p.createElement)("div",{key:s.path,className:"gp-tree-row",style:{paddingLeft:10+a*14}},[(0,p.createElement)(ge,{key:"c",size:11,open:!0}),(0,p.createElement)("span",{key:"n",className:"gp-tree-name"},s.name)])),r(s.children,a+1);else{let o=String(s.meta??"modified"),l=t.activePath===s.path;n.push((0,p.createElement)("div",{key:s.path,className:`gp-tree-row${l?" gp-tree-row--active":""}`,style:{paddingLeft:10+a*14},title:t.openTitle,onClick:()=>t.onOpen(s.path)},[(0,p.createElement)("span",{key:"st",className:`gp-status-badge ${Pe(o)}`},(Ae[o]??o[0]??"M").toUpperCase()),(0,p.createElement)("span",{key:"n",className:"gp-tree-name"},s.name)]))}};return r(e,0),(0,p.createElement)("div",{},n)}function pr(e,t){if(e===null||typeof document>"u")return null;let{text:n,error:r,mode:i,onMode:a,expanded:s,onExpand:o,onClose:l,remote:d,sessionId:g,t:c}=t,u=(0,p.createElement)("div",{className:"gp-modal-backdrop",onClick:m=>{m.target===m.currentTarget&&l()}},(0,p.createElement)("div",{className:"gp-modal",role:"dialog","aria-modal":!0},[(0,p.createElement)("div",{key:"bar",className:"gp-modal__bar"},[(0,p.createElement)("span",{key:"fileicon",className:"gp-modal__fileicon"},(0,p.createElement)(It,{size:15})),(0,p.createElement)("span",{key:"path",className:"gp-modal__path",title:e.path},fr(e.path)),(0,p.createElement)("span",{key:"hash",className:"gp-modal__hash"},e.shortHash),n!==null&&n!==""?(()=>{let m=Oe(n);return(0,p.createElement)("span",{key:"sum",className:"gp-modal__sum"},[(0,p.createElement)("span",{key:"a",className:"gp-stats__add"},`+${m.add}`),(0,p.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${m.del}`)])})():null,(0,p.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${s?" gp-seg__btn--active":""}`,disabled:i!=="split"&&i!=="unified",title:c(s?"diff.collapse":"diff.expandAll"),onClick:()=>o(!s)},c(s?"diff.collapse":"diff.expandAll")),(0,p.createElement)("div",{key:"seg",className:"gp-seg"},ye(["unified","split","before","after"],i,a,m=>c(`diff.${m}`))),(0,p.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:c("common.close"),onClick:l},(0,p.createElement)(zt,{size:15}))]),(0,p.createElement)("div",{key:"scroll",className:"gp-modal__scroll"},n===null?(0,p.createElement)("div",{className:"gp-empty"},c(r?"overview.diffFailed":"common.loading")):(0,p.createElement)(Be,{text:n,mode:i,path:e.path,remote:d,sessionId:g,imageSpec:{base:"commit",commit:e.hash},t:c}))]));return(0,ft.createPortal)(u,document.body,"file-diff-modal")}function fr(e){let t=e.lastIndexOf("/");return t<0?[(0,p.createElement)("span",{key:"n",className:"gp-modal__name"},e)]:[(0,p.createElement)("span",{key:"d",className:"gp-modal__dir"},e.slice(0,t+1)),(0,p.createElement)("span",{key:"n",className:"gp-modal__name"},e.slice(t+1))]}var b=require("react");var ie=require("react");function mn({stats:e,t}){let n=Date.now(),r=[(0,ie.createElement)("span",{key:"files",className:"gp-stats__item"},t("stats.files",{n:e.fileCount})),(0,ie.createElement)("span",{key:"lines",className:"gp-stats__item"},[(0,ie.createElement)("span",{key:"a",className:"gp-stats__add"},`+${e.insertions}`)," ",(0,ie.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${e.deletions}`)])];e.staged>0&&r.push((0,ie.createElement)("span",{key:"st",className:"gp-stats__item"},t("stats.staged",{n:e.staged}))),e.modified>0&&r.push((0,ie.createElement)("span",{key:"mo",className:"gp-stats__item"},t("stats.modified",{n:e.modified}))),e.untracked>0&&r.push((0,ie.createElement)("span",{key:"un",className:"gp-stats__item"},t("stats.untracked",{n:e.untracked})));let i=[];return e.lastChangeAt!==null&&i.push((0,ie.createElement)("span",{key:"lc",className:"gp-stats__item",title:Ce(e.lastChangeAt)},t("stats.lastChange",{time:Se(e.lastChangeAt,n,t)}))),e.headCommittedAt!==null&&i.push((0,ie.createElement)("span",{key:"hc",className:"gp-stats__item",title:Ce(e.headCommittedAt)},t("stats.lastCommit",{time:Se(e.headCommittedAt,n,t)}))),i.length>0&&r.push((0,ie.createElement)("span",{key:"times",className:"gp-stats__times"},i)),(0,ie.createElement)("div",{className:"gp-stats"},r)}function hn({remote:e,sessionId:t,snapshot:n,onAction:r,t:i}){let[a,s]=(0,b.useState)(new Set),[o,l]=(0,b.useState)(""),[d,g]=(0,b.useState)(!1),[c,u]=(0,b.useState)(!1),[m,k]=(0,b.useState)(null),[x,_]=(0,b.useState)(new Set),[F,v]=(0,b.useState)(null),[M,z]=(0,b.useState)(null),[A,C]=(0,b.useState)(null),[N,O]=(0,b.useState)(()=>n.defaultDiffView),[D,U]=(0,b.useState)(!1),[Q,j]=(0,b.useState)(!1),ne=(0,b.useRef)(0),T=(0,b.useMemo)(()=>n.changes.filter(y=>y.staged).sort(gt),[n]),I=(0,b.useMemo)(()=>n.changes.filter(y=>!y.staged&&y.status!=="untracked").sort(gt),[n]),X=(0,b.useMemo)(()=>n.changes.filter(y=>y.status==="untracked").sort(gt),[n]),ee=[{key:"staged",labelKey:"changes.groupStaged",items:T},{key:"unstaged",labelKey:"changes.groupUnstaged",items:I},{key:"untracked",labelKey:"changes.groupUntracked",items:X}].filter(y=>y.items.length>0);(0,b.useEffect)(()=>{s(y=>{if(y.size===0)return y;let R=new Set(n.changes.map(H=>H.path+(H.staged?":s":":w"))),K=new Set,J=!1;for(let H of y)R.has(H)?K.add(H):J=!0;return J?K:y})},[n]),(0,b.useEffect)(()=>{if(!d||Q||o.trim()!=="")return;let y=!0;return e.query({sessionId:t,query:{kind:"last-commit-message"}}).then(R=>{let K=Z(R,"last-commit-message");y&&K!==null&&(l(K.message),j(!0))}),()=>{y=!1}},[d,Q,o,e,t]);let $=(0,b.useCallback)(async(y,R,K=!1,J=!1)=>{let H=++ne.current;z({path:y,base:R}),J||C(null),U(K);let se=await e.query({sessionId:t,query:{kind:"diff",path:y,base:R,...K?{context:1e5}:{}}});if(H!==ne.current)return;let xt=Z(se,"diff");C(xt!==null?xt.text:"")},[e,t]);(0,b.useEffect)(()=>{if(M===null)return;if(!n.changes.some(R=>R.path===M.path)){z(null),C(null);return}$(M.path,M.base,D,!0)},[n]),(0,b.useEffect)(()=>{v(null)},[n]);let w=y=>{s(R=>{let K=new Set(R);return K.has(y)?K.delete(y):K.add(y),K})},L=async y=>{if(c)return!1;u(!0),k(null);try{let R=await r(y);return R.ok?!0:(k(R.error??i("error.generic")),!1)}catch(R){return k(R instanceof Error?R.message:i("error.generic")),!1}finally{u(!1)}},q=async()=>{let y=o.trim();if(y===""&&!d){k(i("error.emptyMessage"));return}let R=a.size>0?[...new Set([...a].map(J=>J.replace(/:[sw]$/,"")))]:void 0;await L({kind:"commit",message:y,...R?{paths:R}:{},...d?{amend:!0}:{}})&&(l(""),s(new Set),g(!1),j(!1))},re=y=>{_(R=>{let K=new Set(R);return K.has(y)?K.delete(y):K.add(y),K})},Y=A!==null&&A!==""?Oe(A):null,G=ue({storageKey:"gp.changes.left",initial:380,min:220,reserve:200,edge:"end"});return(0,b.createElement)("div",{className:"gp-changes"},[(0,b.createElement)("div",{key:"left",className:"gp-changes__left",style:{flex:`0 0 ${G.width}px`}},[(0,b.createElement)(mn,{key:"stats",stats:n.stats,t:i}),(0,b.createElement)("div",{key:"toolbar",className:"gp-toolbar"},[(0,b.createElement)("button",{key:"sa",type:"button",className:"gp-btn",disabled:c||n.changes.length===0,onClick:()=>void L({kind:"stage-all"})},i("changes.stageAll")),(0,b.createElement)("button",{key:"ua",type:"button",className:"gp-btn",disabled:c||n.staged===0,onClick:()=>void L({kind:"unstage-all"})},i("changes.unstageAll"))]),m!==null?(0,b.createElement)("div",{key:"err",className:"gp-feedback"},m):null,(0,b.createElement)("div",{key:"list",className:"gp-changes__list"},n.changes.length===0?(0,b.createElement)("div",{className:"gp-empty"},i("changes.noChanges")):ee.map(y=>(0,b.createElement)("div",{key:y.key},[(0,b.createElement)("div",{key:"head",className:"gp-group-head",onClick:()=>re(y.key)},[(0,b.createElement)(ge,{key:"chev",size:12,open:!x.has(y.key)}),`${i(y.labelKey)} (${y.items.length})`]),x.has(y.key)?null:y.items.map(R=>{let K=R.path+(R.staged?":s":":w");return gr(R,{selected:a.has(K),active:M?.path===R.path&&M.base===(R.staged?"staged":"worktree"),busy:c,armed:F===K,onToggle:()=>w(K),onOpen:()=>void $(R.path,R.staged?"staged":"worktree"),onStage:()=>void L(R.staged?{kind:"unstage",paths:[R.path]}:{kind:"stage",paths:[R.path]}),onDiscard:()=>{F===K?(L({kind:"discard",paths:[R.path]}),v(null)):v(K)},t:i})})]))),(0,b.createElement)("div",{key:"box",className:"gp-commitbox"},[(0,b.createElement)("textarea",{key:"msg",className:"gp-commitbox__msg",placeholder:i("commit.placeholder"),value:o,onChange:y=>l(y.target.value)}),(0,b.createElement)("div",{key:"row",className:"gp-commitbox__row"},[(0,b.createElement)("label",{key:"amend",className:"gp-commitbox__amend"},[(0,b.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:d,onChange:()=>{g(y=>!y),j(!1)}}),i("commit.amend")]),(0,b.createElement)("div",{key:"actions",className:"gp-commitbox__actions"},[(0,b.createElement)("button",{key:"commit",type:"button",className:"gp-btn gp-btn--primary",disabled:c||o.trim()==="",onClick:()=>void q()},i("commit.commit"))])])])]),G.divider,(0,b.createElement)("div",{key:"right",className:"gp-changes__right"},M===null?(0,b.createElement)("div",{className:"gp-empty"},i("changes.selectFile")):(0,b.createElement)("div",{className:"gp-diff"},[(0,b.createElement)("div",{key:"tb",className:"gp-diff__toolbar"},[(0,b.createElement)("span",{key:"path",className:"gp-diff__path"},M.path),Y?(0,b.createElement)("span",{key:"sum",className:"gp-stats__item",style:{marginLeft:"auto"}},[(0,b.createElement)("span",{key:"a",className:"gp-stats__add"},`+${Y.add}`)," ",(0,b.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${Y.del}`)]):null,(0,b.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${D?" gp-seg__btn--active":""}`,style:Y?{}:{marginLeft:"auto"},disabled:N!=="split"&&N!=="unified",title:i(D?"diff.collapse":"diff.expandAll"),onClick:()=>void $(M.path,M.base,!D)},i(D?"diff.collapse":"diff.expandAll")),(0,b.createElement)("div",{key:"seg",className:"gp-seg"},ye(["unified","split","before","after"],N,O,y=>i(`diff.${y}`)))]),(0,b.createElement)("div",{key:"scroll",className:"gp-diff__scroll"},A===null?(0,b.createElement)("div",{className:"gp-empty"},i("common.loading")):(0,b.createElement)(Be,{text:A,mode:N,path:M.path,remote:e,sessionId:t,imageSpec:{base:M.base},t:i}))]))])}function gt(e,t){return e.path.localeCompare(t.path)}function gr(e,t){let n=e.path.split("/").pop()??e.path,r=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"";return(0,b.createElement)("div",{key:e.path+(e.staged?":s":":w"),className:`gp-file-row${t.active?" gp-file-row--active":""}`,onClick:t.onOpen},[(0,b.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:t.selected,onClick:i=>i.stopPropagation(),onChange:t.onToggle}),(0,b.createElement)("span",{key:"st",className:`gp-status-badge ${Pe(e.status)}`},Ae[e.status]??"?"),(0,b.createElement)("span",{key:"nm",className:"gp-tree-name",title:e.path},[n,r?(0,b.createElement)("span",{key:"d",style:{color:"var(--dsw-alias-label-tertiary)",marginLeft:6,fontSize:11}},r):null]),(0,b.createElement)("span",{key:"act",className:"gp-file-row__actions"},[(0,b.createElement)("button",{key:"stg",type:"button",className:"gp-icon-btn",title:e.staged?t.t("changes.unstage"):t.t("changes.stage"),disabled:t.busy,onClick:i=>{i.stopPropagation(),t.onStage()}},e.staged?"\u2212":"+"),(0,b.createElement)("button",{key:"dis",type:"button",className:"gp-icon-btn",title:t.armed?t.t("changes.discardConfirm"):t.t("changes.discard"),style:t.armed?{color:"var(--dsw-alias-state-error-primary)"}:{},disabled:t.busy,onClick:i=>{i.stopPropagation(),t.onDiscard()}},"\u21BA")])])}var f=require("react");var ce=require("@deepseek-ai/dsh-client-ui-primitives");function bn(e){return/\.(?:md|markdown)$/i.test(e)}function mt(e){return/\.(?:html?|xhtml)$/i.test(e)}function ur(e){return bn(e)||mt(e)}var mr=256*1024,hr=5e3,yn=5e3,Ue=20,je=12,yr=6e4,ut=new Map;function br(e,t){let n=t.file.kind==="loading"?{kind:"idle"}:t.file;ut.set(e,{state:{...t,file:n},leftAt:Date.now()})}function vr(e){let t=ut.get(e);return t===void 0?null:Date.now()-t.leftAt>yr?(ut.delete(e),null):t.state}function ht({remote:e,sessionId:t,t:n}){let r=(0,f.useRef)(void 0);r.current===void 0&&(r.current=vr(t));let i=r.current,[a,s]=(0,f.useState)(()=>i?.dirs??new Map),[o,l]=(0,f.useState)(()=>i?.open??new Set([""])),[d,g]=(0,f.useState)(()=>i?.selected??null),[c,u]=(0,f.useState)(()=>i?.file??{kind:"idle"}),[m,k]=(0,f.useState)(()=>i?.renderMarkdown??!0),[x,_]=(0,f.useState)("idle"),[F,v]=(0,f.useState)("idle"),M=(0,f.useMemo)(()=>({code:{copyLabel:n("files.copy"),copiedLabel:n("files.copied")},footnotes:n("files.footnotes")}),[n]),z=(0,f.useRef)(0),A=ue({storageKey:"gp.files.left",initial:300,min:180,reserve:220,edge:"end"}),C=(0,f.useCallback)(T=>{s(I=>{let X=I.get(T);if(X!==void 0&&X.status!=="error")return I;let P=new Map(I);return P.set(T,{status:"loading"}),P}),e.query({sessionId:t,query:{kind:"dir-list",path:T}}).then(I=>{let X=Z(I,"dir-list");s(P=>{let ee=new Map(P);return ee.set(T,X===null?{status:"error"}:{status:"ready",entries:X.entries,truncated:X.truncated}),ee})}).catch(()=>{s(I=>{let X=new Map(I);return X.set(T,{status:"error"}),X})})},[e,t]);(0,f.useEffect)(()=>{C("")},[C]);let N=(0,f.useCallback)(T=>{l(I=>{let X=new Set(I);return X.has(T)?(X.delete(T),X):(X.add(T),a.get(T)===void 0&&C(T),X)})},[a,C]),O=(0,f.useCallback)(T=>{g(T),k(!mt(T)),_("idle"),v("idle");let I=++z.current;u({kind:"loading",path:T}),e.query({sessionId:t,query:{kind:"file-content",path:T}}).then(X=>{if(I!==z.current)return;let P=Z(X,"file-content");if(P===null){u({kind:"error",path:T});return}if(P.tooLarge===!0){u({kind:"tooLarge",path:T});return}if(P.variant==="image"&&P.dataUrl!==void 0){u({kind:"image",path:T,dataUrl:P.dataUrl});return}if(P.variant==="text"){u({kind:"text",path:T,content:P.content??"",lines:P.lines??0});return}u({kind:"binary",path:T})}).catch(()=>{I===z.current&&u({kind:"error",path:T})})},[e,t]),D=(0,f.useRef)({dirs:a,open:o,selected:d,file:c,renderMarkdown:m});D.current={dirs:a,open:o,selected:d,file:c,renderMarkdown:m},(0,f.useEffect)(()=>()=>{br(t,D.current)},[t]);let U=(0,f.useRef)(!1);(0,f.useEffect)(()=>{U.current||(U.current=!0,i!==null&&i.selected!==null&&c.kind==="idle"&&O(i.selected))},[i,c.kind,O]);let Q=(0,f.useMemo)(()=>vn("",0,{dirs:a,open:o,selected:d,toggleDir:N,selectFile:O,t:n}),[a,o,d,N,O,n]),j=async()=>{if(d===null)return;let T=z.current;try{await navigator.clipboard.writeText(d),T===z.current&&_("copied")}catch{T===z.current&&_("error")}},ne=async()=>{if(c.kind!=="text")return;let T=z.current;try{await navigator.clipboard.writeText(c.content),T===z.current&&v("copied")}catch{T===z.current&&v("error")}};return(0,f.createElement)("div",{className:"gp-files"},[(0,f.createElement)("div",{key:"left",className:"gp-files__tree",style:{flex:`0 0 ${A.width}px`}},Q),A.divider,(0,f.createElement)("div",{key:"right",className:"gp-files__preview"},[d!==null?(0,f.createElement)("div",{key:"bar",className:"gp-files__bar"},[(0,f.createElement)("code",{key:"path",className:"gp-files__path",title:d},d),c.kind==="text"&&ur(c.path)?(0,f.createElement)("div",{key:"mode",className:"gp-files__mode",role:"group","aria-label":n("files.previewMode")},[(0,f.createElement)("button",{key:"source",type:"button",className:`gp-files__mode-btn${m?"":" gp-files__mode-btn--active"}`,"aria-pressed":!m,onClick:()=>k(!1)},n("files.source")),(0,f.createElement)("button",{key:"render",type:"button",className:`gp-files__mode-btn${m?" gp-files__mode-btn--active":""}`,"aria-pressed":m,onClick:()=>k(!0)},n("files.render"))]):null,(0,f.createElement)("button",{key:"copy",type:"button",className:`gp-files__copy-path${x==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{j()}},n(x==="copied"?"files.pathCopied":x==="error"?"files.pathCopyFailed":"files.copyPath")),c.kind==="text"?(0,f.createElement)("button",{key:"copy-content",type:"button",className:`gp-files__copy-path${F==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{ne()}},n(F==="copied"?"files.contentCopied":F==="error"?"files.contentCopyFailed":"files.copyContent")):null]):null,(0,f.createElement)("div",{key:"content",className:"gp-files__preview-content"},xr(c,m,M,n))])])}function xr(e,t,n,r){return e.kind==="text"&&t&&bn(e.path)?(0,f.createElement)("div",{className:"gp-files__markdown"},(0,f.createElement)(ce.MarkdownText,{text:e.content,labels:n,variant:"body"})):e.kind==="text"&&t&&mt(e.path)?(0,f.createElement)("iframe",{className:"gp-files__html",title:e.path,srcDoc:e.content,sandbox:"allow-scripts",referrerPolicy:"no-referrer"}):wr(e,r)}function vn(e,t,n){let r=n.dirs.get(e);if(r===void 0||r.status==="loading")return t===0?[(0,f.createElement)("div",{key:"l",className:"gp-empty"},n.t("common.loading"))]:[(0,f.createElement)("div",{key:`l${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("common.loading"))];if(r.status==="error")return[(0,f.createElement)("div",{key:`e${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("files.loadFailed"))];let i=[];for(let a of r.entries){let s=e===""?a.name:`${e}/${a.name}`;if(a.dir){let o=n.open.has(s);i.push((0,f.createElement)("button",{key:s,type:"button",className:`gp-tree-row gp-files__entry gp-files__entry--dir${a.ignored?" gp-tree-row--ignored":""}`,style:{paddingLeft:10+t*14},"aria-expanded":o,"aria-label":a.ignored?`${a.name} (${n.t("files.ignored")})`:a.name,onClick:()=>n.toggleDir(s)},[(0,f.createElement)("span",{key:"c",className:"gp-tree-chev"},(0,f.createElement)(ge,{size:11,open:o})),(0,f.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,f.createElement)(ce.FileTypeIcon,{kind:"folder",size:18})),(0,f.createElement)("span",{key:"n",className:"gp-tree-name"},a.name)])),o&&i.push(...vn(s,t+1,n))}else{let o=n.selected===s;i.push((0,f.createElement)("button",{key:s,type:"button",className:`gp-tree-row gp-files__entry${o?" gp-tree-row--active":""}${a.ignored?" gp-tree-row--ignored":""}`,style:{paddingLeft:10+t*14},"aria-current":o?"true":void 0,"aria-label":a.ignored?`${a.name} (${n.t("files.ignored")})`:a.name,onClick:()=>n.selectFile(s)},[(0,f.createElement)("span",{key:"c",className:"gp-tree-chev"}),(0,f.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,f.createElement)(ce.FileTypeIcon,{path:s,size:18})),(0,f.createElement)("span",{key:"n",className:"gp-tree-name"},a.name)]))}}return r.truncated&&i.push((0,f.createElement)("div",{key:`t${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("files.truncated"))),i}function wr(e,t){switch(e.kind){case"idle":return(0,f.createElement)("div",{className:"gp-empty"},t("files.selectFile"));case"loading":return(0,f.createElement)("div",{className:"gp-empty"},t("common.loading"));case"error":return(0,f.createElement)("div",{className:"gp-empty"},t("files.loadFailed"));case"tooLarge":return(0,f.createElement)("div",{className:"gp-empty"},t("files.tooLarge"));case"binary":return(0,f.createElement)("div",{className:"gp-empty"},t("files.binary"));case"image":return(0,f.createElement)("div",{className:"gp-files__image"},(0,f.createElement)("img",{src:e.dataUrl,alt:e.path}));case"text":return(0,f.createElement)(_r,{content:e.content,path:e.path,t})}}function kr(e,t){if(t==="")return[];let n=[];for(let r=0;r<e.length;r++)for(let[i,a]of ze(e[r],t))if(n.push({line:r,start:i,end:a}),n.length>=Le)return n;return n}function _r({content:e,path:t,t:n}){let r=(0,f.useMemo)(()=>{let G=e.split(`
354
- `);return G.length>0&&G[G.length-1]===""&&G.pop(),G},[e]),i=e.length>mr||r.length>hr,a=i?void 0:(0,ce.languageForPath)(t),s=(0,ce.useCodeHighlighter)(a),o=(0,f.useMemo)(()=>i?void 0:s(r.join(`
355
- `)),[i,s,r]),[l,d]=(0,f.useState)(!1),[g,c]=(0,f.useState)(""),[u,m]=(0,f.useState)(!1),[k,x]=(0,f.useState)(0),_=(0,f.useRef)(null),F=(0,f.useRef)(null),v=(0,f.useRef)(null);(0,f.useEffect)(()=>{d(!1),c(""),x(0)},[t]);let M=He(g,$e),z=(0,f.useMemo)(()=>r.map(G=>G.toLowerCase()),[r]),A=u?M:M.toLowerCase(),C=u?r:z,N=(0,f.useMemo)(()=>kr(C,A),[C,A]);(0,f.useEffect)(()=>{x(0)},[A]);let O=N.length===0?0:Math.min(k,N.length-1),D=(0,f.useMemo)(()=>{let G=new Map;for(let y of N){let R=G.get(y.line)??[];R.push([y.start,y.end]),G.set(y.line,R)}return G},[N]);(0,f.useEffect)(()=>{let G=y=>{if(!((y.ctrlKey||y.metaKey)&&(y.key==="f"||y.key==="F")))return;let R=_.current;R===null||R.offsetParent===null||(y.preventDefault(),d(!0),requestAnimationFrame(()=>F.current?.select()))};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[]);let[U,Q]=(0,f.useState)({top:0,height:0});(0,f.useLayoutEffect)(()=>{let G=_.current;if(G===null)return;let y=()=>Q({top:G.scrollTop,height:G.clientHeight});y(),G.addEventListener("scroll",y,{passive:!0});let R=typeof ResizeObserver<"u"?new ResizeObserver(y):null;return R?.observe(G),()=>{G.removeEventListener("scroll",y),R?.disconnect()}},[]);let j=r.length,T=Math.max(0,Math.floor((U.top-0)/Ue)-je),I=U.height===0?j:Math.ceil(U.height/Ue)+je*2,X=Math.min(j,T+I),P=N.length>0?N[O].line:-1,ee=P>=0?Math.min(T,Math.max(0,P-je)):T,$=P>=0?Math.max(X,Math.min(j,P+je)):X;(0,f.useEffect)(()=>{if(P<0)return;let G=requestAnimationFrame(()=>v.current?.scrollIntoView({block:"center",inline:"nearest"}));return()=>cancelAnimationFrame(G)},[O,N,P]);let w=(0,f.useCallback)(G=>{x(y=>N.length===0?0:(y+G+N.length)%N.length)},[N.length]),L=N.length>0?N[O]:null,q=l?(0,f.createElement)(Xe,{inputRef:F,query:g,matches:N.length,active:O,caseSensitive:u,onChange:c,onToggleCase:()=>m(G=>!G),onStep:w,onClose:()=>d(!1),t:n}):null,re=i||l?(0,f.createElement)("div",{key:"hd",className:"gp-files__header"},[i?(0,f.createElement)("div",{key:"note",className:"gp-files__note"},n("files.highlightOff")):null,q]):null,Y=[];for(let G=ee;G<$;G++)Y.push((0,f.createElement)("div",{key:G,className:"gp-files__row",style:{top:G*Ue}},[(0,f.createElement)("div",{key:"n",className:"gp-diff-no"},G+1),Sr(r[G],G,o?.[G],D.get(G),L,v,n)]));return(0,f.createElement)("div",{className:"gp-files__code gp-diff__scroll",ref:_},[re,(0,f.createElement)("div",{key:"grid",className:"gp-files__single gp-files__single--virt",style:{height:j*Ue}},Y)])}function Sr(e,t,n,r,i,a,s){if(e==="")return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},"\xA0");if(e.length>yn)return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},[e.slice(0,yn),(0,f.createElement)("span",{key:"trunc",className:"gp-files__trunc"},s("files.lineTruncated"))]);if(r===void 0||r.length===0)return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},n!==void 0?n.map((l,d)=>(0,f.createElement)("span",{key:d,style:l.style},l.text)):e);let o=i!==null&&i.line===t?[i.start,i.end]:null;return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},Ie(e,r,n,`c${t}`,o,a))}var xn="gp.panel.fontDelta";function Cr(){if(typeof localStorage>"u")return 0;let e=Number(localStorage.getItem(xn));return e===-1||e===1?e:0}function wn({ctx:e,sessionId:t,t:n}){let[r,i]=(0,S.useState)(Cr),[a,s]=(0,S.useState)(null),o=Me(t),l=xe(e),d=o.state==="error"&&o.error.code==="git-unavailable",g=o.state==="error"&&(o.error.code==="not-a-git-repo"||o.error.code==="git-unavailable"),c=d&&o.state==="error"&&o.error.isGitRepo===!0,u=g?"files":a!==null&&a.sessionId===t?a.tab:null,m=(0,S.useRef)({tabs:new Set});m.current.sessionId!==t&&(m.current={sessionId:t,tabs:new Set}),u!==null&&m.current.tabs.add(u);let k=m.current.tabs.has("files");(0,S.useEffect)(()=>{if(!pe(t))return;if(g){s(null);return}if(a?.sessionId===t)return;let C=Et(t);if(C!==null){s({sessionId:t,tab:C});return}let N=Ft(t);if(N!==null){s({sessionId:t,tab:N});return}o.state==="ready"&&s({sessionId:t,tab:o.snapshot.dirty?"changes":"overview"})},[t,o,g,a?.sessionId]),(0,S.useEffect)(()=>{if(pe(t))return Mt(t,C=>s({sessionId:t,tab:C}))},[t]);let x=(0,S.useRef)({tab:null});x.current={sessionId:t,tab:u},(0,S.useEffect)(()=>()=>{let{sessionId:C,tab:N}=x.current;C!==void 0&&N!==null&&Dt(C,N)},[]);let _=o.state==="ready"?o.snapshot.checkedAt:0,F=async C=>{if(!pe(t))return{ok:!1,error:n("error.noCwd")};let N=await l.run({sessionId:t,action:C});return N.ok?(rt(t).accept(N.snapshot),{ok:!0}):{ok:!1,error:Nr(N.error.code,N.error.message,n)}},v=C=>{i(C),typeof localStorage<"u"&&localStorage.setItem(xn,String(C))},M=[{key:"overview",label:n("tab.overview"),icon:(0,S.createElement)(De,{size:14})},{key:"changes",label:n("tab.changes"),icon:(0,S.createElement)($t,{size:14})},{key:"files",label:n("tab.files"),icon:(0,S.createElement)(Xt,{size:14})}],z=g?M.filter(C=>C.key==="files"):M,A=(()=>{if(!pe(t))return(0,S.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(o.state==="no-cwd")return(0,S.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(g){let N=k?(0,S.createElement)(ht,{key:t,remote:l,sessionId:t,t:n}):null;return c?(0,S.createElement)("div",{className:"gp-files-wrap"},[(0,S.createElement)("div",{key:"notice",className:"gp-notice"},n("files.gitNotInstalled")),N]):(0,S.createElement)("div",{style:{display:"contents"}},N)}if(o.state==="error")return(0,S.createElement)("div",{className:"gp-empty"},n("pill.unavailable"));if(o.state==="cold"||o.state==="loading"||u===null)return(0,S.createElement)("div",{className:"gp-empty"},n("common.loading"));let C=o.snapshot;return(0,S.createElement)("div",{style:{display:"contents"}},[m.current.tabs.has("overview")?(0,S.createElement)("div",{key:"overview",style:u==="overview"?{display:"contents"}:{display:"none"}},(0,S.createElement)(un,{key:t,remote:l,sessionId:t,refreshKey:_,defaultDiffView:C.defaultDiffView,t:n})):null,m.current.tabs.has("changes")?(0,S.createElement)("div",{key:"changes",style:u==="changes"?{display:"contents"}:{display:"none"}},(0,S.createElement)(hn,{key:t,remote:l,sessionId:t,snapshot:C,onAction:F,t:n})):null,k?(0,S.createElement)("div",{key:"files",style:u==="files"?{display:"contents"}:{display:"none"}},(0,S.createElement)(ht,{key:t,remote:l,sessionId:t,t:n})):null])})();return(0,S.createElement)("div",{className:"gp-panel","data-conversation-composer-overlay":"","data-font-delta":r},[(0,S.createElement)("div",{key:"tabs",className:"gp-tabbar",role:"tablist"},[...z.map(C=>(0,S.createElement)("button",{key:C.key,type:"button",role:"tab","aria-selected":u===C.key,className:`gp-tab${u===C.key?" gp-tab--active":""}`,onClick:()=>{pe(t)&&s({sessionId:t,tab:C.key})}},[(0,S.createElement)("span",{key:"i",className:"gp-tab__icon"},C.icon),(0,S.createElement)("span",{key:"l",className:"gp-tab__label"},C.label)])),(0,S.createElement)("div",{key:"font",className:"gp-font"},[(0,S.createElement)("button",{key:"dec",type:"button",className:"gp-font__decrease",onClick:()=>v(-1),"aria-label":n("panel.fontDecrease")},"A\u2212"),(0,S.createElement)("button",{key:"reset",type:"button",className:"gp-font__reset",onClick:()=>v(0),"aria-label":n("panel.fontReset")},"A"),(0,S.createElement)("button",{key:"inc",type:"button",className:"gp-font__increase",onClick:()=>v(1),"aria-label":n("panel.fontIncrease")},"A+")]),(0,S.createElement)(Gr,{key:"ver",remote:l,t:n})]),(0,S.createElement)("div",{key:"body",className:"gp-body"},A)])}function Nr(e,t,n){switch(e){case"empty-message":return n("error.emptyMessage");case"not-a-git-repo":return n("error.notARepo");case"cwd-unavailable":return n("error.noCwd");case"local-changes-block":return n("error.localChangesBlock");default:return t??n("error.generic")}}function Gr({remote:e,t}){let[n,r]=(0,S.useState)({kind:"idle"});(0,S.useEffect)(()=>{let o=!0;return e.version({}).then(l=>{o&&"current"in l&&r(d=>({...d,info:l}))}),()=>{o=!1}},[e]);let i=async()=>{r(l=>({kind:"checking",info:l.info}));let o=await e.version({check:!0});r({kind:"idle",info:"current"in o?o:void 0})},a=n.info,s=n.kind==="checking"?(0,S.createElement)("span",{className:"gp-verbar__status"},t("version.checking")):a===void 0||!a.checkedRemote?null:a.error!==void 0?(0,S.createElement)("span",{className:"gp-verbar__status gp-verbar__status--err",title:a.error},a.error==="repository is not configured"?t("version.noRepo"):t("version.error")):a.updateAvailable&&a.latest!==void 0?(0,S.createElement)("span",{},[(0,S.createElement)("span",{key:"s",className:"gp-verbar__status gp-verbar__status--new"},t("version.updateAvailable",{latest:a.latest,current:a.current})),a.releaseUrl!==void 0?(0,S.createElement)("a",{key:"l",className:"gp-verbar__link",href:a.releaseUrl,target:"_blank",rel:"noreferrer",style:{marginLeft:8}},t("version.viewRelease")):null]):(0,S.createElement)("span",{className:"gp-verbar__status gp-verbar__status--ok"},t("version.upToDate",{current:a.current}));return(0,S.createElement)("div",{className:"gp-verbar"},[a!==void 0?(0,S.createElement)("span",{key:"tag",className:"gp-verbar__tag"},`v${a.current}`):null,s,(0,S.createElement)("button",{key:"btn",type:"button",className:"gp-verbar__btn",disabled:n.kind==="checking",onClick:()=>void i()},[(0,S.createElement)("span",{key:"i",className:"gp-tab__icon"},(0,S.createElement)(Fe,{size:12})),t("version.check")]),a?.repositoryUrl!==void 0?(0,S.createElement)("a",{key:"gh",className:"gp-icon-btn gp-verbar__gh",href:a.repositoryUrl,target:"_blank",rel:"noreferrer",title:t("version.openRepo"),"aria-label":t("version.openRepo")},(0,S.createElement)(Vt,{size:15})):null])}var W=require("react"),Cn=require("react-dom");var kn="data-gp-tab-dot",ve,yt=null,_n="",Ye=null,Qe;function Tr(e){if(typeof document>"u")return null;let t=document.querySelectorAll(_e);for(let n of t)if((n.textContent??"").trim()===e)return n;return null}function bt(){let e=Tr(_n);if(e===null)return;let t=e.querySelector(`[${kn}]`);if(Ye===null){t?.remove();return}let n=`gp-tab-dot gp-tab-dot--${Ye}`;if(t!==null){t.className!==n&&(t.className=n);return}let r=document.createElement("span");r.className=n,r.setAttribute(kn,""),r.setAttribute("aria-hidden","true"),e.appendChild(r)}function Rr(){if(typeof document>"u"||typeof MutationObserver>"u")return;let e=document.querySelector(Tt);if(e!==yt){if(ve?.disconnect(),yt=e,e===null){ve=void 0;return}ve=new MutationObserver(()=>bt()),ve.observe(e,{childList:!0,subtree:!0})}}function Er(){ve?.disconnect(),ve=void 0,yt=null}function Sn(e,t,n){if(!(typeof document>"u")){if(n===null){vt(e);return}Qe=e,_n=t,Ye=n,Rr(),bt()}}function vt(e){Qe!==void 0&&Qe!==e||(Qe=void 0,Ye=null,bt(),Er())}function Mr(e){let t=e.replace(/[/\\]+$/,"").split(/[/\\]/);return t[t.length-1]||e}function Dr(){let[e,t]=(0,W.useState)(!1),[n,r]=(0,W.useState)(null),i=(0,W.useRef)(null);return(0,W.useLayoutEffect)(()=>{if(!e||i.current===null){r(null);return}let o=i.current.getBoundingClientRect();r({left:o.left,bottom:window.innerHeight-o.top+8})},[e]),{bind:{ref:o=>{i.current=o},onMouseEnter:()=>t(!0),onMouseLeave:()=>t(!1)},render:o=>!e||n===null||typeof document>"u"?null:(0,Cn.createPortal)((0,W.createElement)("div",{className:"gp-tip",style:{left:n.left,bottom:n.bottom}},o.map((l,d)=>(0,W.createElement)("div",{key:d,className:d===0?"gp-tip__path":"gp-tip__note"},l))),document.body)}}function Fr(e){let[t,n]=(0,W.useState)(!1);return(0,W.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let i=e.closest("[data-conversation-region]")??document.body,a=()=>n(i.clientWidth>0&&i.clientWidth<Ar);a();let s=new ResizeObserver(a);return s.observe(i),()=>s.disconnect()},[e]),t}var Ar=620;function Nn({sessionId:e,t}){let n=Me(e),r=Dr(),[i,a]=(0,W.useState)(null),s=Fr(i),o=(0,W.useRef)(Symbol("gp-tab-dot")),l=n.state==="ready"&&n.snapshot.showInputPill===!1?n.snapshot.dirty?"dirty":"synced":null,d=t("panel.tab");if((0,W.useEffect)(()=>{Sn(o.current,d,l);let _=o.current;return()=>{vt(_)}},[d,l]),n.state==="cold"||n.state==="loading"||n.state==="no-cwd")return null;if(n.state==="error")return n.error.code==="not-a-git-repo"||n.error.code==="git-unavailable"||n.error.showInputPill===!1?null:(0,W.createElement)("span",{className:"gp-pill gp-pill--degraded",title:n.error.detail??t("pill.unavailable")},t("pill.unavailable"));let g=n.snapshot;if(g.showInputPill===!1)return null;let c=Mr(g.root),u=g.branch??`(${t("pill.detached")})`,m=g.dirty,k=m?"gp-pill--dirty":"gp-pill--synced",x=()=>{if(Pt(d)){Lt(d);return}pe(e)&&Rt(e,m?"changes":"overview"),At(d)};return(0,W.createElement)("span",{className:"gp-pill-wrap",ref:a},[(0,W.createElement)("button",{key:"btn",type:"button",className:`gp-pill ${k}${s?" gp-pill--compact":""}`,onClick:x,ref:r.bind.ref,onMouseEnter:r.bind.onMouseEnter,onMouseLeave:r.bind.onMouseLeave},[(0,W.createElement)("span",{key:"dot",className:"gp-pill__dot","aria-hidden":"true"}),(0,W.createElement)("span",{key:"repo",className:"gp-pill__repo"},c),(0,W.createElement)("span",{key:"git",className:"gp-pill__git"},["(",(0,W.createElement)("span",{key:"b",className:"gp-pill__branch"},u),")"])]),r.render([g.root,t(m?"pill.dirty":"pill.synced")])])}var B=require("react");function Pr(e){for(let t of e){let n=t.schema?.dict;if(n!==void 0&&"showInputPill"in n||JSON.stringify(t.schema).includes("showInputPill"))return t.ns}}function Gn({ctx:e,t}){let[,n]=(0,B.useState)(0),[r,i]=(0,B.useState)(!1),[a,s]=(0,B.useState)(!1),[o,l]=(0,B.useState)(null),[d,g]=(0,B.useState)(null),c=()=>{n(D=>D+1)},u=e.get("configForms"),m=(0,B.useMemo)(()=>u?.describe(),[u]);(0,B.useEffect)(()=>{if(m!==void 0)return m.ensure(),m.subscribe(c)},[m]);let k=m?.getSnapshot().view,x=(0,B.useMemo)(()=>k===void 0?void 0:Pr(k.namespaces),[k]),_=(0,B.useMemo)(()=>u!==void 0&&x!==void 0?u.get(x):void 0,[u,x]);(0,B.useEffect)(()=>{if(_!==void 0)return _.subscribe(c)},[_]);let F=_?.getSnapshot(),v=_!==void 0&&F!==void 0&&F.status==="ready",M=m?.getSnapshot().status,z=o??(typeof F?.value?.showInputPill=="boolean"?F.value.showInputPill:!0),A=d??(F?.value?.defaultDiffView==="split"?"split":"unified"),C=async(D,U,Q)=>{if(_!==void 0){s(!1),i(!0);try{let j=await _.set(D,U);Q(),j?(we(),setTimeout(()=>we(),1e3)):s(!0)}catch{Q(),s(!0)}finally{i(!1)}}},N=D=>(l(D),C("showInputPill",D,()=>l(null))),O=D=>D===A?Promise.resolve():(g(D),C("defaultDiffView",D,()=>g(null)));return u===void 0?(0,B.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded")):v?(0,B.createElement)("div",{className:"gp-cfg"},[(0,B.createElement)("h3",{key:"title",className:"gp-cfg__title"},t("cfg.title")),(0,B.createElement)("label",{key:"row",className:"gp-cfg__row"},[(0,B.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:z,disabled:r||F?.writable===!1,onChange:D=>{N(D.currentTarget.checked)}}),(0,B.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.toggle"))]),(0,B.createElement)("p",{key:"hint",className:"gp-cfg__hint"},t("cfg.hint")),(0,B.createElement)("h3",{key:"difftitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.diffTitle")),(0,B.createElement)("div",{key:"diffseg",className:"gp-seg gp-cfg__seg"},ye(["unified","split"],A,D=>{O(D)},D=>t(D==="unified"?"cfg.diffUnified":"cfg.diffSplit"),r||F?.writable===!1)),(0,B.createElement)("p",{key:"diffhint",className:"gp-cfg__hint"},t("cfg.diffHint")),a?(0,B.createElement)("p",{key:"error",className:"gp-cfg__err",role:"alert"},t("cfg.saveFailed")):null]):M==="idle"||M==="loading"?(0,B.createElement)("p",{className:"gp-cfg__hint"},t("common.loading")):(0,B.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded"))}var Ge="gitPanel",Lr=["dsh-git-panel","@xbzbing/dsh-git-panel"],$r=["slots","locale","connection"],Hr="dsh-git-panel";function zr(e){wt(),Nt(e),e.effect(()=>e.locale.register(Ge,{zh:kt,en:_t})??void 0,"dsh-git-panel: dictionaries");let t=e.locale.bind(Ge),n=[],r=i=>{typeof i=="function"&&n.push(i)};r(e.slots.inject("conversation.view",()=>e.slots.register({name:"conversation.view",id:"git-panel",order:30,locale:Ge,label:()=>t("panel.tab")},i=>(0,Ze.createElement)(wn,{ctx:e,sessionId:i.sessionId,t})))),r(e.slots.inject("conversation.input.left",()=>e.slots.register({name:"conversation.input.left",id:"git-panel-pill",order:100,locale:Ge},i=>(0,Ze.createElement)(Nn,{sessionId:i.sessionId,t}))));for(let i of Lr)r(e.slots.inject("plugins.bundle.config",()=>e.slots.register({name:"plugins.bundle.config",key:i,locale:Ge},a=>a.view==="summary"?t("cfg.title"):(0,Ze.createElement)(Gn,{ctx:e,t}))));e.effect(()=>{let i=e.on("connection/reset",()=>we());return()=>{typeof i=="function"&&i();for(let a of n.splice(0))try{a()}catch{}Gt()}},"dsh-git-panel: lifecycle")}module.exports={name:Hr,inject:$r,apply:zr};
356
+
357
+ /* ===================================================================
358
+ * Compact (mobile / narrow-split) layout
359
+ * The panel root carries data-layout="compact" at or below COMPACT_BP
360
+ * (layout.ts). The three-column tabs collapse to a single column that
361
+ * drills from a list into a detail/diff/preview with a back button; the
362
+ * branch filter moves into a bottom sheet. All rules below hang off the
363
+ * attribute, so the wide layout is byte-for-byte unchanged. Portaled
364
+ * surfaces (modal, sheet) sit outside .gp-panel and are keyed off their
365
+ * own classes / viewport media queries instead.
366
+ * =================================================================== */
367
+
368
+ /* Tab bar: wrap the trailing cluster onto a second full-width row so the
369
+ * font stepper + version bar stay reachable instead of being hidden. */
370
+ .gp-panel[data-layout="compact"] .gp-tabbar{flex-wrap:wrap;row-gap:4px}
371
+ .gp-panel[data-layout="compact"] .gp-tabbar__trailing{display:flex;flex-basis:100%;align-items:center;gap:8px;margin-top:2px}
372
+ .gp-panel[data-layout="compact"] .gp-tabbar .gp-font,
373
+ .gp-panel[data-layout="compact"] .gp-tabbar .gp-verbar{display:inline-flex}
374
+ .gp-panel[data-layout="compact"] .gp-tab{height:36px}
375
+
376
+ /* Shared drill-in back bar (overview detail / files preview). The Changes
377
+ * diff and Files bar reuse just the .gp-subhead__back button inline. */
378
+ .gp-subhead{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--dsw-alias-border-l2);flex:none}
379
+ .gp-subhead__back{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font:inherit;font-size:12px;cursor:pointer;flex:none;white-space:nowrap}
380
+ .gp-subhead__back:hover{background:var(--dsw-alias-interactive-bg-hover)}
381
+ .gp-subhead__back:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}
382
+ .gp-subhead__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--dsw-alias-label-tertiary)}
383
+
384
+ /* Overview: single column, each pane fills width + height. */
385
+ .gp-overview--compact .gp-col{width:100%}
386
+ /* Two-line commit rows: subject on top, hash\xB7author\xB7time below; the graph
387
+ * cell stretches to the taller row so lane edges still connect. */
388
+ .gp-commit-row--compact{align-items:stretch}
389
+ .gp-commit-lines{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0}
390
+ .gp-commit-row--compact .gp-commit-subject{font-size:13px}
391
+ .gp-commit-sub{display:flex;align-items:center;gap:8px;min-width:0;font-size:11px;color:var(--dsw-alias-label-tertiary)}
392
+ .gp-commit-row--compact .gp-commit-author{min-width:0;overflow:hidden;text-overflow:ellipsis}
393
+ .gp-commit-row--compact .gp-commit-date{flex:none}
394
+
395
+ /* Changes / Files: the single visible pane takes the full width. */
396
+ .gp-changes--compact .gp-changes__left,
397
+ .gp-changes--compact .gp-changes__right{flex:1 1 100%;min-width:0;width:100%}
398
+ .gp-files--compact .gp-files__tree,
399
+ .gp-files--compact .gp-files__preview{flex:1 1 100%;min-width:0;width:100%}
400
+
401
+ /* Image compare stacks vertically in compact: two ~195px columns are unusable
402
+ * on a phone. The single-image before/after mode keeps its full-height row.
403
+ * The portaled diff modal lives outside .gp-panel, so it keeps side-by-side
404
+ * (near-fullscreen at small viewports, where two columns still fit). */
405
+ .gp-panel[data-layout="compact"] .gp-imgcmp:not(.gp-imgcmp--single){grid-template-columns:1fr;grid-template-rows:1fr 1fr}
406
+
407
+ /* Bottom sheet (compact branch/ref filter): slides up from the bottom edge,
408
+ * portaled over the panel. Honors the home-indicator safe area. */
409
+ .gp-sheet-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-end;background:color-mix(in srgb,var(--dsw-alias-bg-base,#000) 50%,transparent);animation:gp-fade-in .12s ease}
410
+ .gp-sheet{display:flex;flex-direction:column;width:100%;max-height:72vh;background:var(--dsw-alias-bg-layer-2);border-radius:16px 16px 0 0;box-shadow:0 -12px 40px rgba(0,0,0,.3);animation:gp-sheet-up .22s cubic-bezier(.16,1,.3,1);padding-bottom:env(safe-area-inset-bottom)}
411
+ @keyframes gp-sheet-up{from{transform:translateY(100%)}to{transform:none}}
412
+ .gp-sheet__bar{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--dsw-alias-border-l2);flex:none}
413
+ .gp-sheet__title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary)}
414
+ .gp-sheet__close{margin-left:auto;flex:none}
415
+ .gp-sheet__body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 0}
416
+ .gp-sheet__body .gp-branch-row{padding-top:8px;padding-bottom:8px}
417
+
418
+ /* Touch devices (independent of width \u2014 e.g. a tablet in landscape): no hover
419
+ * means row actions must stay visible, and hit targets grow. */
420
+ @media (hover:none){
421
+ .gp-file-row__actions{visibility:visible}
422
+ .gp-icon-btn{width:34px;height:34px}
423
+ .gp-btn{height:36px}
424
+ .gp-tree-row{padding-top:7px;padding-bottom:7px}
425
+ .gp-branch-row{padding-top:8px;padding-bottom:8px}
426
+ }
427
+
428
+ /* Diff modal on a small viewport (it is portaled outside .gp-panel, so this is
429
+ * keyed on the viewport, not the panel attribute): near-fullscreen, wrapping
430
+ * toolbar. The base rule already uses vw/vh, so this only tightens the fit. */
431
+ @media (max-width:640px){
432
+ .gp-modal-backdrop{padding:10px}
433
+ .gp-modal{width:96vw;height:90vh;border-radius:12px}
434
+ .gp-modal__bar{flex-wrap:wrap;row-gap:6px}
435
+ }
436
+
437
+ @media (prefers-reduced-motion:reduce){
438
+ .gp-sheet,.gp-sheet-backdrop,.gp-modal,.gp-modal-backdrop{animation:none}
439
+ }
440
+ `,pt=!1;function Pt(){if(pt||typeof document>"u")return;let e="dsh-git-panel/client.css";if(document.querySelector(`style[data-plugin-css="${e}"]`)!==null){pt=!0;return}let t=document.createElement("style");t.dataset.plugin="@xbzbing/dsh-git-panel",t.dataset.pluginCss=e,t.textContent=Qn,document.head.appendChild(t),pt=!0}var Lt={"panel.tab":"Git","panel.fontDecrease":"\u7F29\u5C0F\u5B57\u4F53","panel.fontReset":"\u91CD\u7F6E\u5B57\u4F53\u5927\u5C0F","panel.fontIncrease":"\u653E\u5927\u5B57\u4F53","tab.overview":"Git \u603B\u89C8","tab.changes":"\u53D8\u66F4\u8BB0\u5F55","tab.files":"\u6587\u4EF6\u6D4F\u89C8","pill.unavailable":"Git \u4E0D\u53EF\u7528","pill.detached":"\u6E38\u79BB HEAD","pill.synced":"\u672C\u5730\u5DF2\u540C\u6B65","pill.dirty":"\u6709\u5F85\u63D0\u4EA4\u7684\u53D8\u66F4","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.retry":"\u91CD\u8BD5","common.close":"\u5173\u95ED","version.check":"\u68C0\u67E5\u65B0\u7248\u672C","version.checking":"\u68C0\u67E5\u4E2D\u2026","version.upToDate":"\u5DF2\u662F\u6700\u65B0\uFF08{current}\uFF09","version.updateAvailable":"\u6709\u65B0\u7248\u672C {latest}\uFF08\u5F53\u524D {current}\uFF09","version.viewRelease":"\u67E5\u770B\u53D1\u5E03","version.error":"\u68C0\u67E5\u5931\u8D25","version.noRepo":"\u672A\u914D\u7F6E\u4ED3\u5E93\u5730\u5740","version.openRepo":"\u5728 GitHub \u4E0A\u6253\u5F00\u4ED3\u5E93","overview.head":"HEAD\uFF08\u5F53\u524D\u5206\u652F\uFF09","overview.local":"\u672C\u5730","overview.remote":"\u8FDC\u7A0B","overview.tags":"\u6807\u7B7E","overview.search":"\u641C\u7D22\u63D0\u4EA4\uFF08\u6D88\u606F / \u54C8\u5E0C\uFF09","overview.searchShort":"\u641C\u7D22\u63D0\u4EA4","overview.allUsers":"\u5168\u90E8\u4F5C\u8005","overview.allTime":"\u5168\u90E8\u65F6\u95F4","overview.today":"\u4ECA\u5929","overview.last7d":"\u8FD1 7 \u5929","overview.last30d":"\u8FD1 30 \u5929","overview.selectCommit":"\u9009\u62E9\u4E00\u4E2A\u63D0\u4EA4\u67E5\u770B\u8BE6\u60C5","overview.noMessage":"\uFF08\u65E0\u63D0\u4EA4\u6B63\u6587\uFF09","overview.noResults":"\u6CA1\u6709\u5339\u914D\u7684\u63D0\u4EA4","overview.loadFailed":"\u52A0\u8F7D\u5931\u8D25","overview.detailFailed":"\u8BE6\u60C5\u52A0\u8F7D\u5931\u8D25","overview.diffFailed":"\u5DEE\u5F02\u52A0\u8F7D\u5931\u8D25","overview.openFileDiff":"\u67E5\u770B\u8BE5\u6587\u4EF6\u5728\u6B64\u63D0\u4EA4\u4E2D\u7684\u53D8\u66F4","overview.fetch":"\u62C9\u53D6\u8FDC\u7A0B","overview.branchesError":"\u5206\u652F\u52A0\u8F7D\u5931\u8D25","overview.filterBranch":"\u6309\u5206\u652F\u7B5B\u9009","overview.backToList":"\u8FD4\u56DE\u5217\u8868","changes.groupStaged":"\u5DF2\u6682\u5B58\u7684\u66F4\u6539","changes.groupUnstaged":"\u66F4\u6539","changes.groupUntracked":"\u672A\u7248\u672C\u63A7\u5236\u7684\u6587\u4EF6","changes.selectFile":"\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u67E5\u770B\u53D8\u66F4","changes.noChanges":"\u6CA1\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4","changes.stageAll":"\u5168\u90E8\u6682\u5B58","changes.unstageAll":"\u5168\u90E8\u53D6\u6D88\u6682\u5B58","changes.stage":"\u6682\u5B58","changes.unstage":"\u53D6\u6D88\u6682\u5B58","changes.discard":"\u653E\u5F03\u66F4\u6539","changes.discardConfirm":"\u518D\u6B21\u70B9\u51FB\u4EE5\u786E\u8BA4\u653E\u5F03","changes.backToList":"\u8FD4\u56DE\u5217\u8868","files.selectFile":"\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u67E5\u770B\u5185\u5BB9","files.loadFailed":"\u52A0\u8F7D\u5931\u8D25","files.backToTree":"\u8FD4\u56DE\u6587\u4EF6\u6811","files.truncated":"\u6761\u76EE\u8FC7\u591A\uFF0C\u5DF2\u622A\u65AD","files.tooLarge":"\u6587\u4EF6\u8FC7\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8","files.binary":"\u4E8C\u8FDB\u5236\u6587\u4EF6\uFF0C\u65E0\u6CD5\u9884\u89C8","files.highlightOff":"\u6587\u4EF6\u8F83\u5927\uFF0C\u5DF2\u5173\u95ED\u8BED\u6CD5\u9AD8\u4EAE\u4EE5\u4FDD\u6301\u6D41\u7545","files.lineTruncated":" \u2026\uFF08\u6B64\u884C\u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD\uFF09","files.findPlaceholder":"\u5728\u6B64\u6587\u4EF6\u4E2D\u67E5\u627E","files.findNoMatch":"\u65E0\u5339\u914D","files.findPrev":"\u4E0A\u4E00\u4E2A","files.findNext":"\u4E0B\u4E00\u4E2A","files.findClose":"\u5173\u95ED\u67E5\u627E","files.findCase":"\u533A\u5206\u5927\u5C0F\u5199","files.previewMode":"\u9884\u89C8\u65B9\u5F0F","files.source":"\u6E90\u7801","files.render":"\u6E32\u67D3","files.copyPath":"\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84","files.pathCopied":"\u8DEF\u5F84\u5DF2\u590D\u5236","files.pathCopyFailed":"\u590D\u5236\u5931\u8D25","files.copyContent":"\u590D\u5236\u6587\u4EF6\u5185\u5BB9","files.contentCopied":"\u5185\u5BB9\u5DF2\u590D\u5236","files.contentCopyFailed":"\u590D\u5236\u5931\u8D25","files.ignored":"\u5DF2\u88AB Git \u5FFD\u7565","files.copy":"\u590D\u5236\u4EE3\u7801","files.copied":"\u5DF2\u590D\u5236","files.footnotes":"\u6CE8\u91CA","files.gitNotInstalled":"\u7CFB\u7EDF\u672A\u5B89\u88C5 Git\uFF0CGit \u9762\u677F\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5B89\u88C5 Git \u5DE5\u5177\u540E\u91CD\u8BD5\u3002","stats.files":"{n} \u4E2A\u6587\u4EF6","stats.lastChange":"\u6700\u8FD1\u53D8\u66F4 {time}","stats.lastCommit":"\u4E0A\u6B21\u63D0\u4EA4 {time}","stats.staged":"\u5DF2\u6682\u5B58 {n}","stats.modified":"\u5DF2\u4FEE\u6539 {n}","stats.untracked":"\u672A\u8DDF\u8E2A {n}","commit.placeholder":"\u63D0\u4EA4\u4FE1\u606F","commit.commit":"\u63D0\u4EA4","commit.amend":"\u4FEE\u6B63\u4E0A\u6B21\u63D0\u4EA4\uFF08amend\uFF09","commit.suggest":"AI \u751F\u6210","commit.suggesting":"\u751F\u6210\u4E2D\u2026","commit.suggestOverwrite":"\u518D\u6B21\u70B9\u51FB\u300CAI \u751F\u6210\u300D\u4EE5\u8986\u76D6\u5F53\u524D\u63D0\u4EA4\u4FE1\u606F","commit.suggestTruncated":"diff \u8FC7\u957F\u5DF2\u622A\u65AD\uFF0C\u751F\u6210\u7684\u5EFA\u8BAE\u53EF\u80FD\u4E0D\u5B8C\u6574","diff.unified":"\u7EDF\u4E00","diff.split":"\u5BF9\u7167","diff.before":"\u53D8\u66F4\u524D","diff.after":"\u53D8\u66F4\u540E","diff.binary":"\u4E8C\u8FDB\u5236\u6587\u4EF6\uFF0C\u65E0\u6CD5\u663E\u793A\u5BF9\u7167","diff.tooLarge":"\u56FE\u7247\u8FC7\u5927\uFF0C\u65E0\u6CD5\u663E\u793A\u5BF9\u7167","diff.imageMissing":"\u4E0D\u5B58\u5728","diff.svgRender":"\u6E32\u67D3","diff.svgSource":"\u6E90\u7801","diff.empty":"\u65E0\u5DEE\u5F02","diff.expandAll":"\u5C55\u5F00\u5168\u90E8","diff.collapse":"\u6298\u53E0\u672A\u53D8\u66F4","diff.expandGap":"\u5C55\u5F00\u5168\u90E8 {n} \u884C","diff.expandUp":"\u5411\u4E0A\u5C55\u5F00 {n} \u884C","diff.expandDown":"\u5411\u4E0B\u5C55\u5F00 {n} \u884C","time.justNow":"\u521A\u521A","time.minutesAgo":"{n} \u5206\u949F\u524D","time.hoursAgo":"{n} \u5C0F\u65F6\u524D","time.daysAgo":"{n} \u5929\u524D","error.generic":"\u64CD\u4F5C\u5931\u8D25","error.notARepo":"\u5F53\u524D\u76EE\u5F55\u4E0D\u662F Git \u4ED3\u5E93","error.noCwd":"\u5F53\u524D\u4F1A\u8BDD\u65E0\u5DE5\u4F5C\u76EE\u5F55","error.localChangesBlock":"\u672C\u5730\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u65E0\u6CD5\u5207\u6362","error.emptyMessage":"\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A","error.emptyDiff":"\u6CA1\u6709\u53EF\u751F\u6210\u7684\u53D8\u66F4","error.llmUnavailable":"AI \u670D\u52A1\u4E0D\u53EF\u7528","error.llmFailed":"AI \u751F\u6210\u5931\u8D25","error.suggestDisabled":"AI \u751F\u6210\u5DF2\u5728\u63D2\u4EF6\u914D\u7F6E\u4E2D\u5173\u95ED","cfg.title":"\u8F93\u5165\u6846\u5206\u652F\u6807\u8BB0","cfg.toggle":"\u663E\u793A\u8F93\u5165\u6846\u6807\u8BB0","cfg.hint":"\u5F00\u542F\u65F6\u5728\u8F93\u5165\u6846\u663E\u793A zsh \u98CE\u683C\u7684 <\u4ED3\u5E93\u540D> (\u5206\u652F) \u6807\u8BB0\uFF1B\u5173\u95ED\u540E\u6539\u4E3A\u5728 Git \u6807\u7B7E\u65C1\u663E\u793A\u72B6\u6001\u5706\u70B9\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.diffTitle":"\u5DEE\u5F02\u5BF9\u6BD4\u9ED8\u8BA4\u89C6\u56FE","cfg.diffHint":"\u9009\u62E9\u53D8\u66F4\u5BF9\u6BD4\u9ED8\u8BA4\u6253\u5F00\u7684\u5E03\u5C40\uFF1A\u7EDF\u4E00\u89C6\u56FE\u4E3A\u5355\u680F\u884C\u5185\u5BF9\u6BD4\uFF0C\u5E76\u6392\u89C6\u56FE\u4E3A\u5DE6\u53F3\u5206\u680F\u5BF9\u6BD4\u3002\u4ECD\u53EF\u5728\u6BCF\u4E2A\u5DEE\u5F02\u89C6\u56FE\u4E2D\u4E34\u65F6\u5207\u6362\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.diffUnified":"\u7EDF\u4E00\u89C6\u56FE\uFF08\u5355\u680F\u884C\u5185\uFF09","cfg.diffSplit":"\u5E76\u6392\u89C6\u56FE\uFF08\u5DE6\u53F3\u5206\u680F\uFF09","cfg.suggestTitle":"AI \u751F\u6210\u63D0\u4EA4\u4FE1\u606F","cfg.suggestToggle":"\u63D0\u4EA4\u6846\u663E\u793A AI \u751F\u6210\u6309\u94AE","cfg.suggestHint":"\u5F00\u542F\u540E\u63D0\u4EA4\u6846\u65C1\u4F1A\u51FA\u73B0\u300CAI \u751F\u6210\u300D\u6309\u94AE\uFF1A\u6839\u636E\u5F53\u524D\u53D8\u66F4\u4E0E\u6700\u8FD1\u63D0\u4EA4\u98CE\u683C\u751F\u6210\u63D0\u4EA4\u4FE1\u606F\uFF0C\u586B\u5165\u540E\u53EF\u7F16\u8F91\u518D\u63D0\u4EA4\u3002\u751F\u6210\u7684\u8BF7\u6C42\u4F1A\u4F7F\u7528\u4F60\u5728 DSH \u4E2D\u914D\u7F6E\u7684\u6A21\u578B\uFF0Cdiff \u5185\u5BB9\u4F1A\u53D1\u9001\u7ED9\u6A21\u578B\u4F9B\u5E94\u5546\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.notLoaded":"\u914D\u7F6E\u672A\u52A0\u8F7D\uFF1A\u8BE5\u914D\u7F6E\u7531\u8FD0\u884C\u4E2D\u7684\u5BBF\u4E3B\u63D0\u4F9B\uFF0C\u82E5\u957F\u65F6\u95F4\u7A7A\u767D\u8BF7\u91CD\u542F DSH \u540E\u91CD\u8BD5\u3002","cfg.saveFailed":"\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"},zt={"panel.tab":"Git","panel.fontDecrease":"Decrease font size","panel.fontReset":"Reset font size","panel.fontIncrease":"Increase font size","tab.overview":"Overview","tab.changes":"Changes","tab.files":"Files","pill.unavailable":"Git unavailable","pill.detached":"detached HEAD","pill.synced":"Everything committed","pill.dirty":"Uncommitted changes","common.loading":"Loading\u2026","common.retry":"Retry","common.close":"Close","version.check":"Check for updates","version.checking":"Checking\u2026","version.upToDate":"Up to date ({current})","version.updateAvailable":"New version {latest} available (current {current})","version.viewRelease":"View release","version.error":"Check failed","version.noRepo":"Repository not configured","version.openRepo":"Open repository on GitHub","overview.head":"HEAD (Current Branch)","overview.local":"Local","overview.remote":"Remote","overview.tags":"Tags","overview.search":"Search commits (message / hash)","overview.searchShort":"Search","overview.allUsers":"All authors","overview.allTime":"All time","overview.today":"Today","overview.last7d":"Last 7 days","overview.last30d":"Last 30 days","overview.selectCommit":"Select a commit to see details","overview.noMessage":"(no commit body)","overview.noResults":"No matching commits","overview.loadFailed":"Load failed","overview.detailFailed":"Failed to load details","overview.diffFailed":"Failed to load diff","overview.openFileDiff":"View this file\u2019s changes in this commit","overview.fetch":"Fetch","overview.branchesError":"Failed to load branches","overview.filterBranch":"Filter by branch","overview.backToList":"Back to list","changes.groupStaged":"Staged changes","changes.groupUnstaged":"Changes","changes.groupUntracked":"Unversioned files","changes.selectFile":"Select a file to see its diff","changes.noChanges":"No uncommitted changes","changes.stageAll":"Stage all","changes.unstageAll":"Unstage all","changes.stage":"Stage","changes.unstage":"Unstage","changes.discard":"Discard changes","changes.discardConfirm":"Click again to confirm discard","changes.backToList":"Back to list","files.selectFile":"Select a file to preview","files.loadFailed":"Load failed","files.backToTree":"Back to files","files.truncated":"Too many entries \u2014 truncated","files.tooLarge":"File too large to preview","files.binary":"Binary file \u2014 no preview","files.highlightOff":"Large file \u2014 syntax highlighting disabled for performance","files.lineTruncated":" \u2026 (line too long, truncated)","files.findPlaceholder":"Find in file","files.findNoMatch":"No results","files.findPrev":"Previous match","files.findNext":"Next match","files.findClose":"Close find","files.findCase":"Match case","files.previewMode":"Preview mode","files.source":"Source","files.render":"Rendered","files.copyPath":"Copy relative path","files.pathCopied":"Path copied","files.pathCopyFailed":"Copy failed","files.copyContent":"Copy file content","files.contentCopied":"Content copied","files.contentCopyFailed":"Copy failed","files.ignored":"Ignored by Git","files.copy":"Copy code","files.copied":"Copied","files.footnotes":"Footnotes","files.gitNotInstalled":"Git is not installed; the Git panel is unavailable. Please install Git and try again.","stats.files":"{n} files","stats.lastChange":"changed {time}","stats.lastCommit":"last commit {time}","stats.staged":"{n} staged","stats.modified":"{n} modified","stats.untracked":"{n} untracked","commit.placeholder":"Commit message","commit.commit":"Commit","commit.amend":"Amend previous commit","commit.suggest":"AI suggest","commit.suggesting":"Generating\u2026","commit.suggestOverwrite":'Click "AI suggest" again to replace the current message',"commit.suggestTruncated":"The diff was truncated; the suggestion may be incomplete","diff.unified":"Unified","diff.split":"Split","diff.before":"Before","diff.after":"After","diff.binary":"Binary file \u2014 no diff to show","diff.tooLarge":"Image too large to compare","diff.imageMissing":"Does not exist","diff.svgRender":"Rendered","diff.svgSource":"Source","diff.empty":"No differences","diff.expandAll":"Expand all","diff.collapse":"Collapse unchanged","diff.expandGap":"Expand all {n} lines","diff.expandUp":"Expand up {n} lines","diff.expandDown":"Expand down {n} lines","time.justNow":"just now","time.minutesAgo":"{n}m ago","time.hoursAgo":"{n}h ago","time.daysAgo":"{n}d ago","error.generic":"Operation failed","error.notARepo":"Not a Git repository","error.noCwd":"This session has no working directory","error.localChangesBlock":"Local changes block the checkout","error.emptyMessage":"Commit message cannot be empty","error.emptyDiff":"No changes to summarize","error.llmUnavailable":"AI service unavailable","error.llmFailed":"AI generation failed","error.suggestDisabled":"AI suggest is turned off in the plugin config","cfg.title":"Input-bar branch marker","cfg.toggle":"Show input-bar marker","cfg.hint":"When on, the input bar shows the zsh-style <repo> (branch) marker; when off, a status dot appears beside the Git tab instead. Saved changes apply immediately.","cfg.diffTitle":"Default diff view","cfg.diffHint":"Choose the layout diffs open with: unified is a single inline column, split is side-by-side. You can still switch per diff. Saved changes apply immediately.","cfg.diffUnified":"Unified (single inline column)","cfg.diffSplit":"Split (side-by-side)","cfg.suggestTitle":"AI commit message","cfg.suggestToggle":"Show AI suggest button in the commit box","cfg.suggestHint":'When on, an "AI suggest" button appears beside the commit button: it writes a commit message from the current changes and the recent commit style, filled in for you to edit before committing. Generation uses the model configured in DSH; the diff is sent to that model provider. Saved changes apply immediately.',"cfg.notLoaded":"Config not loaded: it is served by the running host. Restart DSH if this stays blank.","cfg.saveFailed":"Save failed, please retry"};var He=require("react");var Yn=new Set(["cwd-unavailable"]),gt=3e4,Zn=6e4,ze=class{constructor(t,n){this.remote=t;this.sessionId=n}view={state:"cold"};listeners=new Set;timer;inflight;pendingRefresh=!1;disposed=!1;pollMs=gt;subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}getSnapshot(){return this.view}ensure(){this.view.state!=="cold"&&this.view.state!=="no-cwd"||this.refresh()}refresh(){return this.inflight!==void 0?(this.pendingRefresh=!0,this.inflight):this.disposed?Promise.resolve():(this.view.state==="cold"&&this.setView({state:"loading"}),this.inflight=this.remote.snapshot({sessionId:this.sessionId}).then(t=>{if(!this.disposed){if(t.ok)this.pollMs=t.value.refreshIntervalMs||gt,this.setView({state:"ready",snapshot:t.value});else if(t.error.code!=="cancelled")if(Yn.has(t.error.code))this.pollMs=Zn,this.setView({state:"no-cwd"});else if(t.error.code==="not-a-git-repo"){let n=t.error;this.setView({state:"error",error:{code:"not-a-git-repo",...n.cwd?{cwd:n.cwd}:{},...n.showInputPill!==void 0?{showInputPill:n.showInputPill}:{}}})}else if(t.error.code==="git-unavailable"){let n=t.error;this.setView({state:"error",error:{code:"git-unavailable",...n.detail?{detail:n.detail}:{},...n.cwd?{cwd:n.cwd}:{},...n.isGitRepo!==void 0?{isGitRepo:n.isGitRepo}:{}}})}else this.setView({state:"error",error:{code:t.error.code,..."detail"in t.error?{detail:t.error.detail}:{}}})}}).catch(t=>{this.disposed||this.setView({state:"error",error:{code:"git-unavailable",detail:t instanceof Error?t.message:String(t)}})}).finally(()=>{this.inflight=void 0,this.pendingRefresh&&!this.disposed?(this.pendingRefresh=!1,this.refresh()):this.schedulePoll()}),this.inflight)}resync(){this.disposed||this.refresh()}accept(t){this.disposed||(this.pollMs=t.refreshIntervalMs||gt,this.setView({state:"ready",snapshot:t}),this.schedulePoll())}schedulePoll(){this.disposed||(this.timer!==void 0&&clearTimeout(this.timer),!(this.pollMs<=0)&&(this.timer=setTimeout(()=>{this.refresh()},this.pollMs)))}setView(t){this.view=t;for(let n of this.listeners)n()}dispose(){this.disposed=!0,this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.listeners.clear()}};var er="/api",tr="gitPanel";function nr(e){try{let t=e.get("connection")?.rpc,n=t?.call;if(t!==void 0&&typeof n=="function")return(r,a,i)=>n.call(t,er,r,a,i)}catch{}}function rr(e){let t=e;if(t===null||typeof t!="object")return{ok:!1,error:{code:"git-unavailable",message:"malformed rpc result"}};if(t.ok!==!0){let n=t.error;return{ok:!1,error:{code:typeof n?.code=="string"?n.code:"git-unavailable",message:typeof n?.message=="string"?n.message:void 0}}}return t.value===void 0?{ok:!1,error:{code:"git-unavailable",message:"missing value"}}:t.value}function ie(e,t){return!e.ok||e.value.kind!==t?null:e.value}function me(e){return e!==void 0&&e!==""}var $t=new WeakMap;function Ee(e){let t=$t.get(e);if(t!==void 0)return t;let n=async(a,i,o)=>{let s=nr(e);if(s===void 0)return{ok:!1,error:{code:"git-unavailable",message:"no connection"}};try{let d=await s(`${tr}/${a}`,{args:{request:i}},o);return rr(d)}catch(d){return{ok:!1,error:{code:"git-unavailable",message:d instanceof Error?d.message:String(d)}}}},r={snapshot:(a,i)=>n("snapshot",a,i),run:(a,i)=>n("run",a,i),query:(a,i)=>n("query",a,i),suggest:(a,i)=>n("suggest",a,i),version:(a,i)=>n("version",a,i)};return $t.set(e,r),r}var be=new Map,Ht,ft;function It(e){ft=e,Ht=Ee(e)}function ut(e){let t=be.get(e);if(t===void 0){let n=Ht??(ft?Ee(ft):void 0);t=new ze(n??sr(),e),be.set(e,t)}return t}var ir=6e4,$e=new Map;function ar(e){let t=$e.get(e);t!==void 0&&(clearTimeout(t),$e.delete(e)),ke.set(e,(ke.get(e)??0)+1)}function or(e){let t=(ke.get(e)??1)-1;if(t>0){ke.set(e,t);return}ke.delete(e);let n=setTimeout(()=>{$e.delete(e),!((ke.get(e)??0)>0)&&(be.get(e)?.dispose(),be.delete(e))},ir);$e.set(e,n)}var ke=new Map;function Re(){for(let e of be.values())e.resync()}function Xt(){for(let e of be.values())e.dispose();be.clear()}function sr(){let e=async()=>({ok:!1,error:{code:"git-unavailable"}});return{snapshot:e,run:e,query:e,suggest:e,version:e}}function Ie(e){let[,t]=(0,He.useState)(0),n=e?ut(e):void 0;return(0,He.useEffect)(()=>{if(n===void 0||e===void 0)return;ar(e);let r=n.subscribe(()=>t(a=>a+1));return n.ensure(),()=>{r(),or(e)}},[n,e]),n?n.getSnapshot():{state:"cold"}}var S=require("react");var Vt="[data-conversation-tabs]",De='[data-conversation-tabs] button[role="tab"]',mt=new Map,Me=new Map;function Bt(e,t){let n=Me.get(e);if(n!==void 0&&n.size>0){for(let r of n)r(t);return}mt.set(e,t)}function Kt(e){let t=mt.get(e);return t===void 0?null:(mt.delete(e),t)}function qt(e,t){let n=Me.get(e);return n===void 0&&(n=new Set,Me.set(e,n)),n.add(t),()=>{let r=Me.get(e);r!==void 0&&(r.delete(t),r.size===0&&Me.delete(e))}}var lr=6e4,ht=new Map;function Jt(e,t){ht.set(e,{tab:t,leftAt:Date.now()})}function Ot(e){let t=ht.get(e);return t===void 0?null:Date.now()-t.leftAt>lr?(ht.delete(e),null):t.tab}function Wt(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(De);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}function jt(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(De);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")==="true";return!1}function Ut(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(De);for(let n of t)if((n.textContent??"").trim()!==e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}var l=require("react"),it=require("react-dom");var I=require("react");function le(e,t=15){return(0,I.createElement)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"},e)}function Xe({size:e}){return le([(0,I.createElement)("circle",{key:"c",cx:8,cy:8,r:2.4}),(0,I.createElement)("line",{key:"l1",x1:8,y1:1.5,x2:8,y2:5.6}),(0,I.createElement)("line",{key:"l2",x1:8,y1:10.4,x2:8,y2:14.5})],e)}function Qt({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M4 2v8"}),(0,I.createElement)("path",{key:"b",d:"M2 4h4"}),(0,I.createElement)("circle",{key:"c",cx:4,cy:12,r:1.6}),(0,I.createElement)("circle",{key:"d",cx:12,cy:4,r:1.6}),(0,I.createElement)("path",{key:"e",d:"M12 6v4"}),(0,I.createElement)("path",{key:"f",d:"M10 12h4"})],e)}function yt({size:e}){return le([(0,I.createElement)("circle",{key:"a",cx:4,cy:3,r:1.6}),(0,I.createElement)("circle",{key:"b",cx:4,cy:13,r:1.6}),(0,I.createElement)("circle",{key:"c",cx:12,cy:5,r:1.6}),(0,I.createElement)("path",{key:"d",d:"M4 4.6v6.8"}),(0,I.createElement)("path",{key:"e",d:"M12 6.6c0 3-4 2.4-8 4"})],e)}function Yt({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M2 7V3h4l8 8-4 4z"}),(0,I.createElement)("circle",{key:"b",cx:4.5,cy:5.5,r:.8,fill:"currentColor"})],e)}function ve({size:e,open:t}){return le([(0,I.createElement)("path",{key:"a",d:t?"M3 6l5 5 5-5":"M6 3l5 5-5 5"})],e)}function bt({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M4 4l8 8M12 4l-8 8"})],e)}function _e({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M10 3L5 8l5 5"}),(0,I.createElement)("path",{key:"b",d:"M5 8h8"})],e)}function Zt({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M2 3h12l-4.5 5.5V13L6.5 11V8.5z"})],e)}function Ve({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M13 8a5 5 0 1 1-1.5-3.5"}),(0,I.createElement)("path",{key:"b",d:"M13 2v3h-3"})],e)}function en({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M8 2.6l1.4 4 4 1.4-4 1.4-1.4 4-1.4-4-4-1.4 4-1.4z"}),(0,I.createElement)("path",{key:"b",d:"M13 11.6v2.8M11.6 13h2.8"})],e)}function tn({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M4 2h5l3 3v9H4z"}),(0,I.createElement)("path",{key:"b",d:"M9 2v3h3"})],e)}function nn({size:e}){return le([(0,I.createElement)("path",{key:"a",d:"M5 2.5h4l2.5 2.5v7.5h-6.5z"}),(0,I.createElement)("path",{key:"b",d:"M9 2.5V5h2.5"}),(0,I.createElement)("path",{key:"c",d:"M11 12.5v1.5h-6.5V6"})],e)}function rn({size:e=15}){return(0,I.createElement)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor"},(0,I.createElement)("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"}))}function an(e){let t=0;for(let n of e){t=Math.max(t,n.lane+1);for(let r of n.edges)t=Math.max(t,r.fromLane+1,r.toLane+1)}return t}function on(e){let t=[],n=[],r=new Map,a=0,i=o=>{let s=r.get(o);return s===void 0&&(s=a++,r.set(o,s)),s};for(let o of e){let s=u=>{let v=n.findIndex(D=>D===u);return v===-1&&(v=n.findIndex(D=>D===null),v===-1&&(v=n.length,n.push(null)),n[v]=u),v},d=s(o.hash),c=i(o.hash),p=[...n],f=o.parents,h=f.length>=2;for(let u=0;u<n.length;u++)u!==d&&n[u]===o.hash&&(n[u]=null);if(f.length===0)n[d]=null;else{let u=f.find(v=>!n.includes(v));n[d]=u===void 0?null:u;for(let v=1;v<f.length;v++){let D=f[v];s(D),i(D)}n[d]!==null&&i(n[d])}let x=[],y=n;for(let u=0;u<p.length;u++){let v=p[u];if(v!==null)if(v===o.hash)x.push({fromLane:u,toLane:d,color:c,kind:"into"});else{let D=y.findIndex(G=>G===v);D!==-1&&x.push({fromLane:u,toLane:D,color:i(v),kind:"pass"})}}for(let u of f){let v=y.findIndex(D=>D===u);v!==-1&&x.push({fromLane:d,toLane:v,color:i(u),kind:"out"})}for(t.push({commit:o,lane:d,color:c,edges:x,merge:h});n.length>0&&n[n.length-1]===null;)n=n.slice(0,-1)}return t}function sn(e){let t={name:"",path:"",dir:!0,children:[]};for(let n of e){let r=n.path.split("/").filter(o=>o!==""),a=t,i="";for(let o=0;o<r.length;o++){let s=r[o];i=i===""?s:`${i}/${s}`;let d=o===r.length-1,c=a.children.find(p=>p.name===s&&p.dir===!d);c===void 0&&(c={name:s,path:i,dir:!d,children:[],...d?{meta:n.meta}:{}},a.children.push(c)),a=c}}return ln(t),dn(t.children)}function ln(e){e.children.sort((t,n)=>t.dir!==n.dir?t.dir?-1:1:t.name.localeCompare(n.name));for(let t of e.children)ln(t)}function dn(e){return e.map(t=>{if(!t.dir)return t;let n=t;for(;n.children.length===1&&n.children[0].dir;){let r=n.children[0];n={name:`${n.name}/${r.name}`,path:r.path,dir:!0,children:r.children}}return{...n,children:dn(n.children)}})}function Se(e,t,n){if(e===null)return"";let r=typeof e=="number"?e:Date.parse(e);if(!Number.isFinite(r))return"";let a=Math.max(0,t-r),i=Math.floor(a/6e4);if(i<1)return n("time.justNow");if(i<60)return n("time.minutesAgo",{n:i});let o=Math.floor(i/60);if(o<24)return n("time.hoursAgo",{n:o});let s=Math.floor(o/24);return n("time.daysAgo",{n:s})}function Ae(e){if(e===null)return"";let t=new Date(typeof e=="number"?e:Date.parse(e));if(Number.isNaN(t.getTime()))return"";let n=r=>String(r).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function cn(e){if(e===null)return"";let t=new Date(typeof e=="number"?e:Date.parse(e));if(Number.isNaN(t.getTime()))return"";let n=r=>String(r).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}var Be={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"!",typechange:"T"};function Ke(e){return e==="added"||e==="untracked"?"gp-status--added":e==="deleted"?"gp-status--deleted":e==="renamed"?"gp-status--renamed":"gp-status--modified"}var w=require("react");var dr={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",ico:"image/x-icon",tif:"image/tiff",tiff:"image/tiff"};function vt(e){let t=e.lastIndexOf(".");return t<0?null:dr[e.slice(t+1).toLowerCase()]??null}function pn(e){return/^Binary files .* differ$/m.test(e)||/^GIT binary patch$/m.test(e)}function gn(e){return vt(e)!==null}function fn(e){return/\.svg$/i.test(e)}function cr(e){let t=wt(e);return t.length===0?!1:t.every(n=>n.startsWith("+")||n.startsWith(" "))&&t.some(n=>n.startsWith("+"))&&/^\+\+\+ /m.test(e)&&/--- \/dev\/null/m.test(e)}function pr(e){let t=wt(e);return t.length===0?!1:t.every(n=>n.startsWith("-")||n.startsWith(" "))&&t.some(n=>n.startsWith("-"))&&/^\+\+\+ \/dev\/null/m.test(e)}function wt(e){let t=e.split(`
441
+ `),n=[],r=!1;for(let a of t){if(a.startsWith("@@")){r=!0;continue}if(r){if(a.startsWith("diff ")||a.startsWith("index ")){r=!1;continue}a!==""&&n.push(a)}}return n}function un(e){let t=0,n=0;for(let r of wt(e))r.startsWith("+")?t++:r.startsWith("-")&&n++;return{add:t,del:n}}var gr=/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;function mn(e){let t=[],n=e.split(`
442
+ `),r=0,a=0,i=!0,o=!1,s=0;for(;s<n.length&&!n[s].startsWith("@@");s++);for(;s<n.length;s++){let d=n[s];if(d.startsWith("@@")){let f=gr.exec(d);if(f){let h=Number(f[1]),x=Number(f[3]),y=h-x;if(i)x>1&&t.push(Ce({rightStart:1,count:x-1,delta:y,atStart:!0,atEnd:!1}));else{let u=x-a;u>0&&t.push(Ce({rightStart:a,count:u,delta:y,atStart:!1,atEnd:!1}))}r=h,a=x,i=!1}t.push({kind:"hunk",leftNo:null,rightNo:null,leftText:null,rightText:null,text:d});continue}if(d.startsWith("\\"))continue;let c=d[0],p=d.slice(1);c==="+"?(t.push({kind:"add",leftNo:null,rightNo:a,leftText:null,rightText:p}),a++,o=!0):c==="-"?(t.push({kind:"del",leftNo:r,rightNo:null,leftText:p,rightText:null}),r++,o=!0):c===" "&&(t.push({kind:"context",leftNo:r,rightNo:a,leftText:p,rightText:p}),r++,a++,o=!0)}return o&&!i&&!cr(e)&&!pr(e)&&t.push(Ce({rightStart:a,count:null,delta:r-a,atStart:!1,atEnd:!0})),fr(t)}function Ce(e){return{kind:"gap",leftNo:null,rightNo:null,leftText:null,rightText:null,gap:e}}function fr(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.kind==="del"){let a=[],i=n;for(;i<e.length&&e[i].kind==="del";)a.push(e[i]),i++;let o=[];for(;i<e.length&&e[i].kind==="add";)o.push(e[i]),i++;let s=Math.max(a.length,o.length);for(let d=0;d<s;d++){let c=a[d],p=o[d];if(c&&p){let f=ur(c.leftText??"",p.rightText??"");t.push({kind:"mod",leftNo:c.leftNo,rightNo:p.rightNo,leftText:c.leftText,rightText:p.rightText,...f!==null?{leftWord:f.left,rightWord:f.right}:{}})}else c?t.push({kind:"del",leftNo:c.leftNo,rightNo:null,leftText:c.leftText,rightText:null}):p&&t.push({kind:"add",leftNo:null,rightNo:p.rightNo,leftText:null,rightText:p.rightText})}n=i}else t.push(r),n++}return t}function ur(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;let a=0;for(;a<n-r&&e[e.length-1-a]===t[t.length-1-a];)a++;return r===0&&a===0?null:{left:[r,e.length-a],right:[r,t.length-a]}}function mr(e,t,n){return n.map((r,a)=>{let i=t+a;return{kind:"context",leftNo:i+e,rightNo:i,leftText:r,rightText:r}})}var ge=20;function xt(e){let t=[];for(let n of e)n.kind==="mod"?(t.push({kind:"del",leftNo:n.leftNo,rightNo:null,leftText:n.leftText,rightText:null,...n.leftWord!==void 0?{leftWord:n.leftWord}:{}}),t.push({kind:"add",leftNo:null,rightNo:n.rightNo,leftText:null,rightText:n.rightText,...n.rightWord!==void 0?{rightWord:n.rightWord}:{}})):t.push(n);return t}function hn(e,t,n,r,a,i){let o=e.findIndex(f=>f.kind==="gap"&&f.gap?.rightStart===t);if(o<0)return e.slice();let s=e[o].gap,d=mr(s.delta,r,a),c=[];if(s.atEnd)return c.push(...d),!i&&a.length>0&&c.push(Ce({rightStart:r+a.length,count:null,delta:s.delta,atStart:!1,atEnd:!0})),[...e.slice(0,o),...c,...e.slice(o+1)];let p=s.count??a.length;if(n==="all"||a.length>=p)c.push(...d);else if(n==="down"){c.push(...d);let f=p-a.length;c.push(Ce({rightStart:s.rightStart+a.length,count:f,delta:s.delta,atStart:!1,atEnd:!1}))}else{let f=p-a.length;c.push(Ce({rightStart:s.rightStart,count:f,delta:s.delta,atStart:s.atStart,atEnd:!1})),c.push(...d)}return[...e.slice(0,o),...c,...e.slice(o+1)]}var et=require("@deepseek-ai/dsh-client-ui-primitives");function yn(e,t){let n=[[],[],[]],r=0;for(let a of e){let i=r+a.text.length,o=[r,Math.max(r,Math.min(i,t[0])),Math.max(r,Math.min(i,t[1])),i];for(let s=0;s<3;s++){let d=a.text.slice(o[s]-r,o[s+1]-r);d!==""&&n[s].push({text:d,style:a.style})}r=i}return n}var se=require("react"),qe=5e3,Je=120;function Oe(e,t){let[n,r]=(0,se.useState)(e);return(0,se.useEffect)(()=>{let a=setTimeout(()=>r(e),t);return()=>clearTimeout(a)},[e,t]),n}function We(e,t){if(t==="")return[];let n=[],r=0;for(;;){let a=e.indexOf(t,r);if(a<0)break;n.push([a,a+t.length]),r=a+t.length}return n}function kt(e,t,n,r,a){if(n>=r)return[];if(e===void 0)return[t.slice(n,r)];let i=[],o=0,s=0;for(let d of e){let c=o+d.text.length,p=Math.max(n,o),f=Math.min(r,c);if(f>p&&i.push((0,se.createElement)("span",{key:`${a}-${s++}`,style:d.style},d.text.slice(p-o,f-o))),o=c,o>=r)break}return i}function je(e,t,n,r,a,i){let o=[],s=0,d=[...t].sort((c,p)=>c[0]-p[0]);for(let[c,p]of d){if(c<s)continue;c>s&&o.push(...kt(n,e,s,c,`${r}b${s}`));let f=a!==null&&a[0]===c&&a[1]===p;o.push((0,se.createElement)("mark",{key:`mk${r}-${c}`,className:`gp-find-hit${f?" gp-find-hit--active":""}`,...f?{ref:i}:{}},kt(n,e,c,p,`mk${r}-${c}`))),s=p}return s<e.length&&o.push(...kt(n,e,s,e.length,`${r}e`)),o}function Ue(e){return(0,se.createElement)("div",{key:"find",className:"gp-find"},[(0,se.createElement)("input",{key:"in",ref:e.inputRef,className:"gp-find__input",type:"text",placeholder:e.t("files.findPlaceholder"),value:e.query,spellCheck:!1,"aria-label":e.t("files.findPlaceholder"),onChange:t=>e.onChange(t.target.value),onKeyDown:t=>{t.key==="Escape"?(t.preventDefault(),t.stopPropagation(),e.onClose()):t.key==="Enter"&&(t.preventDefault(),e.onStep(t.shiftKey?-1:1))}}),(0,se.createElement)("button",{key:"case",type:"button",className:`gp-find__btn gp-find__case${e.caseSensitive?" gp-find__case--active":""}`,title:e.t("files.findCase"),"aria-label":e.t("files.findCase"),"aria-pressed":e.caseSensitive,onClick:()=>e.onToggleCase()},"Aa"),(0,se.createElement)("span",{key:"cnt",className:"gp-find__count"},e.query===""?"":e.matches===0?e.t("files.findNoMatch"):`${e.active+1}/${e.matches}`),(0,se.createElement)("button",{key:"prev",type:"button",className:"gp-find__btn",title:e.t("files.findPrev"),"aria-label":e.t("files.findPrev"),disabled:e.matches===0,onClick:()=>e.onStep(-1)},"\u2039"),(0,se.createElement)("button",{key:"next",type:"button",className:"gp-find__btn",title:e.t("files.findNext"),"aria-label":e.t("files.findNext"),disabled:e.matches===0,onClick:()=>e.onStep(1)},"\u203A"),(0,se.createElement)("button",{key:"x",type:"button",className:"gp-find__btn",title:e.t("files.findClose"),"aria-label":e.t("files.findClose"),onClick:()=>e.onClose()},"\u2715")])}var fe=require("react");function Qe(e,t,n){let r=n(`diff.${e}`);return(0,fe.createElement)("div",{className:`gp-imgcmp__pane gp-imgcmp__pane--${e}`},[(0,fe.createElement)("div",{key:"head",className:"gp-imgcmp__head"},r),t===void 0?(0,fe.createElement)("div",{key:"missing",className:"gp-imgcmp__missing"},n("diff.imageMissing")):(0,fe.createElement)("div",{key:"img",className:"gp-imgcmp__img"},(0,fe.createElement)("img",{src:t,alt:r}))])}function bn({oldUrl:e,newUrl:t,mode:n,t:r}){return n==="before"?(0,fe.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Qe("before",e,r)):n==="after"?(0,fe.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Qe("after",t,r)):(0,fe.createElement)("div",{className:"gp-imgcmp"},[Qe("before",e,r),Qe("after",t,r)])}var tt=(0,w.memo)(function({text:t,mode:n,path:r,remote:a,sessionId:i,imageSpec:o,t:s}){let d=(0,w.useMemo)(()=>mn(t),[t]),c=pn(t),p=(0,et.useCodeHighlighter)(r===void 0?void 0:(0,et.languageForPath)(r)),[f,h]=(0,w.useState)(d);(0,w.useEffect)(()=>{h(d)},[d]);let x=br(f,h,a,i,r,o),y=r!==void 0&&fn(r),[u,v]=(0,w.useState)("render");(0,w.useEffect)(()=>{v("render")},[r]);let G=(c||y)&&r!==void 0&&gn(r)&&a!==void 0&&i!==void 0&&o!==void 0&&(!y||u==="render"),A=wr(G?a:void 0,G?i:void 0,G?r:void 0,G?o:void 0),[$,H]=(0,w.useState)(!1),[B,b]=(0,w.useState)(""),[V,E]=(0,w.useState)(!1),[L,ee]=(0,w.useState)(0),Z=(0,w.useRef)(null),z=(0,w.useRef)(null),K=(0,w.useRef)(null);(0,w.useEffect)(()=>{H(!1),b(""),ee(0)},[t,r]);let W=(0,w.useMemo)(()=>hr(n,f),[n,f]),ne=(0,w.useMemo)(()=>W.map(J=>({key:J.key,text:J.text.toLowerCase()})),[W]),Y=Oe(B,Je),ae=V?Y:Y.toLowerCase(),k=V?W:ne,M=(0,w.useMemo)(()=>yr(k,ae),[k,ae]);(0,w.useEffect)(()=>{ee(0)},[ae]);let F=M.length===0?0:Math.min(L,M.length-1),P=M.length>0?M[F]:null,te=(0,w.useMemo)(()=>{let J=new Map;for(let q of M){let _=J.get(q.cellKey)??[];_.push([q.start,q.end]),J.set(q.cellKey,_)}return J},[M]);(0,w.useEffect)(()=>{let J=q=>{if(!((q.ctrlKey||q.metaKey)&&(q.key==="f"||q.key==="F")))return;let _=Z.current;_===null||_.offsetParent===null||(q.preventDefault(),H(!0),requestAnimationFrame(()=>z.current?.select()))};return document.addEventListener("keydown",J),()=>document.removeEventListener("keydown",J)},[]),(0,w.useEffect)(()=>{K.current?.scrollIntoView({block:"center",inline:"nearest"})},[F,M]);let O=(0,w.useCallback)(J=>{ee(q=>M.length===0?0:(q+J+M.length)%M.length)},[M.length]),N=$&&ae!==""?{perCell:te,activeKey:P?.cellKey??null,activeRange:P?[P.start,P.end]:null,activeRef:K}:null;if(G){let J=(()=>{if(A.kind==="idle"||A.kind==="loading")return(0,w.createElement)("div",{className:"gp-empty"},s("common.loading"));if(A.kind==="ready"){let q=A.res;if(q.tooLarge===!0)return(0,w.createElement)("div",{className:"gp-empty"},s("diff.tooLarge"));if(q.mime!==null&&(q.old!==void 0||q.new!==void 0))return(0,w.createElement)(bn,{oldUrl:q.old,newUrl:q.new,mode:n,t:s})}return(0,w.createElement)("div",{className:"gp-empty"},s("diff.binary"))})();return y?vn(u,v,J,s):J}if(c&&!y)return(0,w.createElement)("div",{className:"gp-empty"},s("diff.binary"));let U=(()=>{if(t.trim()==="")return(0,w.createElement)("div",{className:"gp-empty"},s("diff.empty"));if(n==="before")return wn(kn(f),p,N);if(n==="after")return wn(_n(f),p,N);if(n==="unified"){let J=xt(f);return(0,w.createElement)("div",{className:"gp-diff__unified"},J.flatMap((q,_)=>kr(q,_,p,x,N,s)))}return(0,w.createElement)("div",{className:"gp-diff__side"},f.flatMap((J,q)=>xr(J,q,p,x,N,s)))})(),oe=$?(0,w.createElement)(Ue,{inputRef:z,query:B,matches:M.length,active:F,caseSensitive:V,onChange:b,onToggleCase:()=>E(J=>!J),onStep:O,onClose:()=>H(!1),t:s}):null,he=(0,w.createElement)("div",{className:"gp-diff__wrap",ref:Z},[oe,U]);return y?vn(u,v,he,s):he});function hr(e,t){let n=[];return e==="before"?(kn(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="after"?(_n(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="unified"?(xt(t).forEach((r,a)=>{if(r.kind==="hunk"||r.kind==="gap")return;let i=r.rightText??r.leftText??"";i!==""&&n.push({key:`c${a}`,text:i})}),n):(t.forEach((r,a)=>{r.kind==="hunk"||r.kind==="gap"||(r.leftText!==null&&r.leftText!==""&&n.push({key:`l${a}`,text:r.leftText}),r.rightText!==null&&r.rightText!==""&&n.push({key:`r${a}`,text:r.rightText}))}),n)}function yr(e,t){if(t==="")return[];let n=[];for(let r of e)for(let[a,i]of We(r.text,t))if(n.push({cellKey:r.key,start:a,end:i}),n.length>=qe)return n;return n}function vn(e,t,n,r){let a=(i,o)=>(0,w.createElement)("button",{key:i,type:"button",className:`gp-seg__btn${e===i?" gp-seg__btn--active":""}`,"aria-pressed":e===i,onClick:()=>t(i)},o);return(0,w.createElement)("div",{className:"gp-svgdiff"},[(0,w.createElement)("div",{key:"bar",className:"gp-svgdiff__bar"},(0,w.createElement)("div",{className:"gp-seg"},[a("render",r("diff.svgRender")),a("source",r("diff.svgSource"))])),(0,w.createElement)("div",{key:"body",className:"gp-svgdiff__body"},n)])}function br(e,t,n,r,a,i){let[o,s]=(0,w.useState)(null),d=(0,w.useRef)(0);(0,w.useEffect)(()=>{d.current+=1,s(null)},[e]);let c=(0,w.useCallback)((p,f)=>{if(n===void 0||r===void 0||a===void 0||i===void 0)return;let h=`${p.rightStart}:${f}`;s(h);let x=++d.current,{start:y,end:u}=vr(p,f),v=i.base==="commit"&&i.commit!==void 0?{kind:"file-lines",path:a,base:"commit",commit:i.commit,start:y,end:u}:i.base==="staged"?{kind:"file-lines",path:a,base:"staged",start:y,end:u}:{kind:"file-lines",path:a,base:"worktree",start:y,end:u};n.query({sessionId:r,query:v}).then(D=>{if(x!==d.current)return;let G=ie(D,"file-lines");s(null),G!==null&&t(A=>hn(A,p.rightStart,f,G.start,G.lines,G.eof))}).catch(()=>{x===d.current&&s(null)})},[n,r,a,i,t]);return{busy:o,run:c}}function vr(e,t){if(e.atEnd)return{start:e.rightStart,end:e.rightStart+ge-1};let n=e.count??ge;return t==="all"||n<=ge?{start:e.rightStart,end:e.rightStart+n-1}:t==="down"?{start:e.rightStart,end:e.rightStart+ge-1}:{start:e.rightStart+n-ge,end:e.rightStart+n-1}}function wr(e,t,n,r){let[a,i]=(0,w.useState)({kind:"idle"}),o=r?.base,s=r?.commit;return(0,w.useEffect)(()=>{if(e===void 0||t===void 0||n===void 0||o===void 0)return;let d=!0;i({kind:"loading"});let c=o==="commit"&&s!==void 0?{kind:"image-diff",path:n,base:"commit",commit:s}:o==="staged"?{kind:"image-diff",path:n,base:"staged"}:{kind:"image-diff",path:n,base:"worktree"};return e.query({sessionId:t,query:c}).then(p=>{if(!d)return;let f=ie(p,"image-diff");i(f!==null?{kind:"ready",res:f}:{kind:"failed"})}).catch(()=>{d&&i({kind:"failed"})}),()=>{d=!1}},[e,t,n,o,s]),a}function Ye(e,t=""){return e.map((n,r)=>(0,w.createElement)("span",{key:`${t}${r}`,style:n.style},n.text))}function xn(e,t,n,r){if(n===null)return null;let a=n.perCell.get(t);if(a===void 0||a.length===0)return null;let i=n.activeKey===t?n.activeRange:null;return je(e,a,r,t,i,n.activeRef)}function Ze(e,t,n,r,a=null){if(n==="")return(0,w.createElement)("div",{key:t,className:e},"\xA0");let i=r(n)?.[0],o=xn(n,t,a,i);return o!==null?(0,w.createElement)("div",{key:t,className:e},o):(0,w.createElement)("div",{key:t,className:e},i===void 0?n:Ye(i))}function _t(e,t,n,r,a,i,o=null){let s=i(n)?.[0]??[{text:n,style:{}}],d=xn(n,t,o,s);if(d!==null)return(0,w.createElement)("div",{key:t,className:e},d);let[c,p,f]=yn(s,r);return(0,w.createElement)("div",{key:t,className:e},[...Ye(c,"p"),(0,w.createElement)("span",{key:"w",className:a},p.length===0?"\xA0":Ye(p)),...Ye(f,"s")])}function kn(e){return e.filter(t=>t.leftText!==null).map(t=>({no:t.leftNo,text:t.leftText}))}function _n(e){return e.filter(t=>t.rightText!==null).map(t=>({no:t.rightNo,text:t.rightText}))}function wn(e,t,n=null){return(0,w.createElement)("div",{className:"gp-diff__single"},e.flatMap((r,a)=>[(0,w.createElement)("div",{key:`n${a}`,className:"gp-diff-no"},r.no??""),Ze("gp-diff-cell",`c${a}`,r.text,t,n)]))}function xr(e,t,n,r,a,i){if(e.kind==="hunk")return[(0,w.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[Sn(e.gap,t,r,i)];let o=e.kind==="del"||e.kind==="mod"?"gp-diff-row--del":"",s=e.kind==="add"||e.kind==="mod"?"gp-diff-row--add":"",d=e.leftText===null?(0,w.createElement)("div",{key:`l${t}`,className:`gp-diff-cell ${o}`}):e.kind==="mod"&&e.leftWord!==void 0?_t(`gp-diff-cell ${o}`,`l${t}`,e.leftText,e.leftWord,"gp-diff-word gp-diff-word--del",n,a):Ze(`gp-diff-cell ${o}`,`l${t}`,e.leftText,n,a),c=e.rightText===null?(0,w.createElement)("div",{key:`r${t}`,className:`gp-diff-cell ${s}`}):e.kind==="mod"&&e.rightWord!==void 0?_t(`gp-diff-cell ${s}`,`r${t}`,e.rightText,e.rightWord,"gp-diff-word gp-diff-word--add",n,a):Ze(`gp-diff-cell ${s}`,`r${t}`,e.rightText,n,a);return[(0,w.createElement)("div",{key:`ln${t}`,className:"gp-diff-no"},e.leftNo??""),d,(0,w.createElement)("div",{key:`rn${t}`,className:"gp-diff-no"},e.rightNo??""),c]}function kr(e,t,n,r,a,i){if(e.kind==="hunk")return[(0,w.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[Sn(e.gap,t,r,i)];let o=e.kind==="del",s=e.kind==="add",d=s?"gp-diff-row--add":o?"gp-diff-row--del":"",c=s?"+":o?"\u2212":"\xA0",p=e.rightText??e.leftText??"",f=s?e.rightWord:o?e.leftWord:void 0,h=s?"gp-diff-word gp-diff-word--add":"gp-diff-word gp-diff-word--del",x=`gp-diff-cell gp-diff-uni__code ${d}`,y=f!==void 0?_t(x,`c${t}`,p,f,h,n,a):Ze(x,`c${t}`,p,n,a);return[(0,w.createElement)("div",{key:`ol${t}`,className:"gp-diff-no"},e.leftNo??""),(0,w.createElement)("div",{key:`nl${t}`,className:"gp-diff-no"},e.rightNo??""),(0,w.createElement)("div",{key:`sg${t}`,className:`gp-diff-uni__sign ${d}`},c),y]}function Sn(e,t,n,r){let a=n.busy===`${e.rightStart}:all`,i=n.busy===`${e.rightStart}:up`,o=n.busy===`${e.rightStart}:down`,s=(c,p,f)=>(0,w.createElement)("button",{key:c,type:"button",className:"gp-gap__btn",disabled:n.busy!==null,onClick:h=>{h.stopPropagation(),n.run(e,c)}},f?r("common.loading"):p),d=[];if(e.atEnd)d.push(s("down",r("diff.expandDown",{n:ge}),o));else{let c=e.count??0;c>0&&c<=ge?d.push(s("all",r("diff.expandGap",{n:c}),a)):(e.atStart||d.push(s("up",r("diff.expandUp",{n:ge}),i)),d.push(s("all",r("diff.expandGap",{n:c}),a)),d.push(s("down",r("diff.expandDown",{n:ge}),o)))}return(0,w.createElement)("div",{key:`g${t}`,className:"gp-diff-row--gap",style:{gridColumn:"1 / -1"}},d)}function nt(e){return un(e)}var R=require("react");var _r=100;function Cn(e,t,n){let[r,a]=(0,R.useState)(null),[i,o]=(0,R.useState)(!1),[s,d]=(0,R.useState)([]),c=(0,R.useCallback)(()=>{o(!1),(async()=>{let[p,f]=await Promise.all([e.query({sessionId:t,query:{kind:"branches"}}),e.query({sessionId:t,query:{kind:"tags"}})]),h=ie(p,"branches");if(h===null){o(!0);return}let x=ie(f,"tags");a({current:h.current,defaultBranch:h.defaultBranch,local:h.local,remote:h.remote,tags:x?.tags??[]}),e.query({sessionId:t,query:{kind:"authors"}}).then(y=>{d(ie(y,"authors")?.authors??[])})})()},[e,t]);return(0,R.useEffect)(()=>{c()},[n]),{tree:r,treeError:i,authors:s,reload:c}}function Nn(e,t,n,r,a){let[i,o]=(0,R.useState)([]),[s,d]=(0,R.useState)(0),[c,p]=(0,R.useState)(!1),[f,h]=(0,R.useState)(!1),x=(0,R.useRef)(0),y=(0,R.useRef)(!1),u=(0,R.useRef)(null),v=(0,R.useCallback)(async($,H)=>{if(y.current)return;y.current=!0;let B=x.current;p(!0),h(!1);let b=await e.query({sessionId:t,query:{kind:"history",limit:_r,skip:$,...H.ref?{ref:H.ref}:{},...H.search?{search:H.search}:{},...H.author?{author:H.author}:{},...H.since?{since:H.since}:{}}});if(y.current=!1,B!==x.current)return;p(!1);let V=ie(b,"history");if(V===null){h(!0);return}let E=V.commits;o(L=>$===0?E:[...L,...E]),d(V.total)},[e,t]),D=(0,R.useRef)(n);(0,R.useEffect)(()=>{x.current+=1,y.current=!1,D.current!==n&&(D.current=n,a(),u.current&&(u.current.scrollTop=0)),v(0,n)},[n,r]);let G=s<0?!0:i.length<s,A=(0,R.useCallback)(()=>{y.current||!G||v(i.length,n)},[v,i.length,n,G]);return{commits:i,total:s,loading:c,listError:f,hasMore:G,listRef:u,loadMore:A}}function Tn(e,t,n){let[r,a]=(0,R.useState)(null),[i,o]=(0,R.useState)(null),[s,d]=(0,R.useState)(!1),[c,p]=(0,R.useState)(null),[f,h]=(0,R.useState)(null),[x,y]=(0,R.useState)(!1),[u,v]=(0,R.useState)(n),[D,G]=(0,R.useState)(!1),A=(0,R.useRef)(0),$=(0,R.useRef)(null),H=(0,R.useRef)(new Map),B=(0,R.useCallback)((k,M)=>{let F=H.current;for(F.set(k,M);F.size>50;){let P=F.keys().next().value;if(P===void 0)break;F.delete(P)}},[]),b=(0,R.useCallback)(()=>{a(null),o(null),$.current=null},[]),V=(0,R.useCallback)(async k=>{$.current=k.hash,a(k),d(!1),A.current+=1,p(null),h(null),y(!1);let M=H.current.get(k.hash);if(M!==void 0){o(M);return}o(null);let F=await e.query({sessionId:t,query:{kind:"show",ref:k.hash}});if($.current!==k.hash)return;let P=ie(F,"show");if(P!==null){let te={commit:P.commit,body:P.body,stats:P.stats};B(k.hash,te),o(te)}else d(!0)},[e,t,B]),E=(0,R.useCallback)(async(k,M,F,P=!1)=>{let te=++A.current;p({path:k,hash:M,shortHash:F}),h(null),y(!1),G(P);let O=await e.query({sessionId:t,query:{kind:"diff",path:k,base:"commit",commit:M,...P?{context:1e5}:{}}});if(te!==A.current)return;let N=ie(O,"diff");N!==null?h(N.text):y(!0)},[e,t]),L=(0,R.useCallback)(()=>{A.current+=1,p(null),h(null),y(!1),G(!1)},[]);(0,R.useEffect)(()=>{if(c===null)return;let k=M=>{M.key==="Escape"&&L()};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[c,L]);let[ee,Z]=(0,R.useState)(null),[z,K]=(0,R.useState)(null),W=(0,R.useRef)(void 0),ne=(0,R.useRef)(null),Y=(0,R.useCallback)((k,M,F)=>{W.current!==void 0&&clearTimeout(W.current),W.current=setTimeout(()=>{ne.current=k.hash,Z({commit:k,x:M,y:F});let P=H.current.get(k.hash);if(P!==void 0){K(P.body);return}K(null),e.query({sessionId:t,query:{kind:"show",ref:k.hash}}).then(te=>{if(ne.current!==k.hash)return;let O=ie(te,"show");O!==null?(B(k.hash,{commit:O.commit,body:O.body,stats:O.stats}),K(O.body)):K("")})},260)},[e,t,B]),ae=(0,R.useCallback)(()=>{W.current!==void 0&&clearTimeout(W.current),ne.current=null,Z(null),K(null)},[]);return(0,R.useEffect)(()=>()=>{W.current!==void 0&&clearTimeout(W.current)},[]),{selected:r,detail:i,detailError:s,select:V,clearSelection:b,fileDiff:c,fileDiffText:f,fileDiffError:x,fileDiffMode:u,setFileDiffMode:v,fileDiffExpanded:D,openFileDiff:E,closeFileDiff:L,hover:ee,hoverBody:z,onHoverEnter:Y,onHoverLeave:ae}}var pe=require("react"),Sr=(e,t,n)=>Math.max(t,Math.min(n,e));function Cr(e,t){try{let n=typeof localStorage<"u"?localStorage.getItem(e):null,r=n===null?NaN:Number(n);return Number.isFinite(r)?r:t}catch{return t}}function Nr(e,t){try{typeof localStorage<"u"&&localStorage.setItem(e,String(Math.round(t)))}catch{}}function we(e){let{storageKey:t,initial:n,min:r,reserve:a,edge:i}=e,[o,s]=(0,pe.useState)(()=>Cr(t,n)),d=(0,pe.useRef)(null),c=(0,pe.useRef)(null),p=(0,pe.useCallback)(h=>{let y=d.current?.parentElement?.clientWidth??Number.MAX_SAFE_INTEGER;c.current={x:h.clientX,w:o,max:Math.max(r,y-a)},h.preventDefault(),typeof document<"u"&&(document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[o,r,a]);(0,pe.useEffect)(()=>{if(typeof window>"u")return;let h=y=>{let u=c.current;if(u===null)return;let v=y.clientX-u.x;s(Sr(u.w+(i==="end"?v:-v),r,u.max))},x=()=>{c.current!==null&&(c.current=null,typeof document<"u"&&(document.body.style.cursor="",document.body.style.userSelect=""),s(y=>(Nr(t,y),y)))};return window.addEventListener("pointermove",h),window.addEventListener("pointerup",x),()=>{window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",x)}},[i,r,t]);let f=(0,pe.createElement)("div",{key:`rz-${t}`,ref:d,className:"gp-resizer",role:"separator","aria-orientation":"vertical",onPointerDown:p});return{width:o,divider:f}}var Gn=require("react");function Ne(e,t,n,r,a=!1){return e.map(i=>(0,Gn.createElement)("button",{key:i,type:"button",className:`gp-seg__btn${t===i?" gp-seg__btn--active":""}`,...a?{disabled:!0}:{},onClick:()=>n(i)},r(i)))}var Te=14,En=30,Tr=46,Gr=260;function Er(e,t){let[n,r]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let a=()=>r(e.clientWidth>0&&e.clientWidth<t);a();let i=new ResizeObserver(a);return i.observe(e),()=>i.disconnect()},[e,t]),n}function Rn({remote:e,sessionId:t,refreshKey:n,defaultDiffView:r,compact:a,t:i}){let[o,s]=(0,l.useState)({ref:null,search:"",author:"",since:""}),[d,c]=(0,l.useState)(""),[p,f]=(0,l.useState)(null),h=Er(p,Gr),[x,y]=(0,l.useState)(new Set(["tags","remote"])),[u,v]=(0,l.useState)("list"),[D,G]=(0,l.useState)(!1);(0,l.useEffect)(()=>{if(!D)return;let _=re=>{re.key==="Escape"&&G(!1)};return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[D]),(0,l.useEffect)(()=>{!a&&D&&G(!1)},[a,D]);let{tree:A,treeError:$,authors:H,reload:B}=Cn(e,t,n),b=Tn(e,t,r),{commits:V,loading:E,listError:L,hasMore:ee,listRef:Z,loadMore:z}=Nn(e,t,o,n,b.clearSelection);(0,l.useEffect)(()=>{let _=setTimeout(()=>s(re=>re.search===d?re:{...re,search:d}),300);return()=>clearTimeout(_)},[d]);let K=o.search!=="",W=(0,l.useMemo)(()=>K?V.map(_=>({commit:_,lane:0,color:0,edges:[],merge:!1})):on(V),[V,K]),ne=(0,l.useMemo)(()=>K?0:an(W),[W,K]),Y=K?12:Math.max(Te,ne*Te),ae=a?Tr:En,k=a?`${Y}px minmax(0,1fr)`:`${Y}px minmax(120px,1fr) 72px 120px 96px`,M=()=>{let _=Z.current;_===null||!ee||_.scrollTop+_.clientHeight>=_.scrollHeight-240&&z()},F=_=>{b.select(_),a&&v("detail")},P=(0,l.useMemo)(()=>Date.now(),[V]),te=(0,l.useMemo)(()=>b.detail===null?[]:sn(b.detail.stats.map(_=>({path:_.path,meta:_.status}))),[b.detail]),O=b.selected,N=we({storageKey:"gp.overview.left",initial:200,min:130,reserve:360,edge:"end"}),U=we({storageKey:"gp.overview.right",initial:340,min:190,reserve:360,edge:"start"}),oe=_=>s(re=>({...re,ref:_})),he=Pr(b.fileDiff,{text:b.fileDiffText,error:b.fileDiffError,mode:b.fileDiffMode,onMode:b.setFileDiffMode,expanded:b.fileDiffExpanded,onExpand:_=>{b.fileDiff!==null&&b.openFileDiff(b.fileDiff.path,b.fileDiff.hash,b.fileDiff.shortHash,_)},onClose:b.closeFileDiff,remote:e,sessionId:t,compact:a,t:i}),J=(0,l.createElement)("div",{key:"mid",className:"gp-col gp-col--mid gp-history"},[(0,l.createElement)("div",{key:"tb",className:"gp-toolbar",ref:f},[a?(0,l.createElement)("button",{key:"filter",type:"button",className:`gp-btn${o.ref!==null?" gp-btn--primary":""}`,title:i("overview.filterBranch"),onClick:()=>G(!0)},[(0,l.createElement)(Zt,{key:"ic",size:13}),o.ref??i("overview.filterBranch")]):null,(0,l.createElement)("input",{key:"search",className:"gp-search",placeholder:i(h||a?"overview.searchShort":"overview.search"),value:d,onChange:_=>c(_.target.value)}),(0,l.createElement)("select",{key:"author",className:"gp-select",value:o.author,onChange:_=>s(re=>({...re,author:_.target.value}))},[(0,l.createElement)("option",{key:"",value:""},i("overview.allUsers")),...H.map(_=>(0,l.createElement)("option",{key:_,value:_},_))]),(0,l.createElement)("select",{key:"since",className:"gp-select",value:o.since,onChange:_=>s(re=>({...re,since:_.target.value}))},[(0,l.createElement)("option",{key:"",value:""},i("overview.allTime")),(0,l.createElement)("option",{key:"today",value:"1 day ago"},i("overview.today")),(0,l.createElement)("option",{key:"7d",value:"7 days ago"},i("overview.last7d")),(0,l.createElement)("option",{key:"30d",value:"30 days ago"},i("overview.last30d"))]),(0,l.createElement)("button",{key:"fetch",type:"button",className:"gp-icon-btn",title:i("overview.fetch"),onClick:()=>{e.run({sessionId:t,action:{kind:"fetch"}}).then(()=>B())}},(0,l.createElement)(Ve,{size:14}))]),(0,l.createElement)("div",{key:"list",className:"gp-history__list",ref:Z,onScroll:M},V.length===0?(0,l.createElement)("div",{className:"gp-empty"},i(E?"common.loading":L?"overview.loadFailed":"overview.noResults")):W.map(_=>Dr(_,{selected:O?.hash===_.commit.hash,gridTpl:k,graphW:Y,laneCount:ne,searching:K,now:P,compact:a,rowH:ae,onSelect:()=>F(_.commit),onHoverEnter:b.onHoverEnter,onHoverLeave:b.onHoverLeave,t:i})))]),q=O===null?[(0,l.createElement)("div",{key:"empty",className:"gp-empty"},[(0,l.createElement)(Xe,{key:"i",size:20}),i("overview.selectCommit")])]:[(0,l.createElement)("div",{key:"files",className:"gp-detail__files"},b.detail===null?(0,l.createElement)("div",{className:"gp-empty"},b.detailError?i("overview.detailFailed"):i("common.loading")):Fr(te,{activePath:b.fileDiff?.path??null,openTitle:i("overview.openFileDiff"),onOpen:_=>{O!==null&&b.openFileDiff(_,O.hash,O.shortHash)}})),(0,l.createElement)("div",{key:"msg",className:"gp-detail__msg"},[(0,l.createElement)("div",{key:"subj",className:"gp-detail__subject"},O.subject),(0,l.createElement)("div",{key:"meta",className:"gp-detail__meta"},[(0,l.createElement)("span",{key:"h",className:"gp-commit-hash"},O.shortHash),(0,l.createElement)("span",{key:"a"},O.author),(0,l.createElement)("span",{key:"t"},cn(O.dateIso))]),b.detail!==null&&b.detail.body!==""?(0,l.createElement)("pre",{key:"body",className:"gp-detail__body"},b.detail.body):(0,l.createElement)("div",{key:"nb",className:"gp-empty"},i("overview.noMessage"))])];return a?(0,l.createElement)("div",{className:"gp-overview gp-overview--compact"},[he,u==="detail"?(0,l.createElement)("div",{key:"detail",className:"gp-col gp-col--mid gp-detail"},[(0,l.createElement)("div",{key:"back",className:"gp-subhead"},[(0,l.createElement)("button",{key:"b",type:"button",className:"gp-subhead__back",onClick:()=>v("list")},[(0,l.createElement)(_e,{key:"i",size:14}),i("overview.backToList")]),O!==null?(0,l.createElement)("span",{key:"h",className:"gp-subhead__title gp-commit-hash"},O.shortHash):null]),...q]):J,D?Mr(A,$,o.ref,x,{onFilter:_=>{oe(_),G(!1)},onToggle:_=>y(re=>{let ce=new Set(re);return ce.has(_)?ce.delete(_):ce.add(_),ce}),onRetry:B,onClose:()=>G(!1),t:i}):null]):(0,l.createElement)("div",{className:"gp-overview"},[he,(0,l.createElement)("div",{key:"left",className:"gp-col gp-col--left",style:{flex:`0 0 ${N.width}px`}},Mn(A,$,o.ref,x,{onFilter:_=>oe(_),onToggle:_=>y(re=>{let ce=new Set(re);return ce.has(_)?ce.delete(_):ce.add(_),ce}),onRetry:B,t:i})),N.divider,J,U.divider,(0,l.createElement)("div",{key:"right",className:"gp-col gp-col--right gp-detail",style:{flex:`0 0 ${U.width}px`}},q),Rr(b.hover,b.hoverBody,i)])}function Rr(e,t,n){if(e===null||typeof document>"u")return null;let r=460,a=Math.min(e.x+16,(typeof window<"u"?window.innerWidth:1200)-r-12),i=e.y+14,o=(0,l.createElement)("div",{className:"gp-hovercard",style:{left:a,top:i,maxWidth:r}},[(0,l.createElement)("div",{key:"subj",className:"gp-hovercard__subject"},e.commit.subject),(0,l.createElement)("div",{key:"meta",className:"gp-hovercard__meta"},[(0,l.createElement)("span",{key:"h",className:"gp-commit-hash"},e.commit.shortHash),(0,l.createElement)("span",{key:"a"},e.commit.author)]),t===null?(0,l.createElement)("div",{key:"l",className:"gp-hovercard__loading"},n("common.loading")):t===""?(0,l.createElement)("div",{key:"e",className:"gp-hovercard__loading"},n("overview.noMessage")):(0,l.createElement)("pre",{key:"body",className:"gp-hovercard__body"},t)]);return(0,it.createPortal)(o,document.body,"commit-hovercard")}function Mn(e,t,n,r,a){if(t)return(0,l.createElement)("div",{className:"gp-empty"},[(0,l.createElement)("span",{key:"m"},a.t("overview.branchesError")),(0,l.createElement)("button",{key:"r",type:"button",className:"gp-btn",style:{marginTop:8},onClick:a.onRetry},a.t("common.retry"))]);if(e===null)return(0,l.createElement)("div",{className:"gp-empty"},a.t("common.loading"));let i=(o,s,d,c,p="")=>(0,l.createElement)("div",{key:o,className:"gp-branch-group"},[(0,l.createElement)("div",{key:"head",className:"gp-branch-group__head",onClick:()=>a.onToggle(o)},[(0,l.createElement)(ve,{key:"c",size:11,open:!r.has(o)}),`${a.t(s)} (${d.length})`]),r.has(o)?null:d.map(f=>{let h=p+f.name,x=e.current===f.name,y=`gp-branch-row${n===h?" gp-branch-row--active":""}${x?" gp-branch-row--current":""}`;return(0,l.createElement)("div",{key:f.name,className:y,title:f.name,onClick:()=>a.onFilter(n===h?null:h)},[(0,l.createElement)("span",{key:"i",style:{display:"inline-flex",width:14}},c),(0,l.createElement)("span",{key:"n",className:"gp-tree-name"},f.name),f.ahead||f.behind?(0,l.createElement)("span",{key:"t",className:"gp-branch-row__track"},`${f.ahead?`\u2191${f.ahead}`:""}${f.behind?`\u2193${f.behind}`:""}`):null])})]);return(0,l.createElement)("div",{},[(0,l.createElement)("div",{key:"head-row",className:"gp-branch-row",style:{fontWeight:600,paddingLeft:10},onClick:()=>a.onFilter(null)},a.t("overview.head")),i("local","overview.local",e.local,(0,l.createElement)(yt,{size:13})),i("remote","overview.remote",e.remote,(0,l.createElement)(yt,{size:13})),i("tags","overview.tags",e.tags,(0,l.createElement)(Yt,{size:13}))])}function Mr(e,t,n,r,a){if(typeof document>"u")return null;let i=(0,l.createElement)("div",{className:"gp-sheet-backdrop",onClick:o=>{o.target===o.currentTarget&&a.onClose()}},(0,l.createElement)("div",{className:"gp-sheet",role:"dialog","aria-modal":!0},[(0,l.createElement)("div",{key:"bar",className:"gp-sheet__bar"},[(0,l.createElement)("span",{key:"title",className:"gp-sheet__title"},a.t("overview.filterBranch")),(0,l.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-sheet__close",title:a.t("common.close"),onClick:a.onClose},(0,l.createElement)(bt,{size:15}))]),(0,l.createElement)("div",{key:"body",className:"gp-sheet__body"},Mn(e,t,n,r,a))]));return(0,it.createPortal)(i,document.body,"branch-filter-sheet")}function Dr(e,t){let n=e.commit,r=n.refs.map(i=>(0,l.createElement)("span",{key:i.name,className:`gp-ref-chip${i.head?" gp-ref-chip--head":""}${i.kind==="remote"?" gp-ref-chip--remote":""}${i.kind==="tag"?" gp-ref-chip--tag":""}`},i.name)),a=(0,l.createElement)("div",{key:"g",className:"gp-graph-cell"},t.searching?null:Ar(e,t.laneCount,t.rowH));return t.compact?(0,l.createElement)("div",{key:n.hash,className:`gp-commit-row gp-commit-row--compact${t.selected?" gp-commit-row--active":""}`,style:{gridTemplateColumns:t.gridTpl,height:`${t.rowH}px`},onClick:t.onSelect},[a,(0,l.createElement)("div",{key:"tx",className:"gp-commit-lines"},[(0,l.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,l.createElement)("div",{key:"m",className:"gp-commit-sub"},[(0,l.createElement)("span",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,l.createElement)("span",{key:"a",className:"gp-commit-author"},n.author),(0,l.createElement)("span",{key:"d",className:"gp-commit-date"},Se(n.dateIso,t.now,t.t))])])]):(0,l.createElement)("div",{key:n.hash,className:`gp-commit-row${t.selected?" gp-commit-row--active":""}`,style:{gridTemplateColumns:t.gridTpl},onClick:t.onSelect,onMouseEnter:i=>t.onHoverEnter(n,i.clientX,i.clientY),onMouseLeave:t.onHoverLeave},[a,(0,l.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,l.createElement)("div",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,l.createElement)("div",{key:"a",className:"gp-commit-author"},n.author),(0,l.createElement)("div",{key:"d",className:"gp-commit-date",title:Ae(n.dateIso)},Se(n.dateIso,t.now,t.t))])}var rt=["#4e9bff","#3fb950","#e0982e","#d05ce3","#e5534b","#2dc6c6","#d29922","#8b949e"];function Ar(e,t,n=En){let r=Math.max(Te,t*Te),a=s=>s*Te+Te/2,i=n/2,o=[];for(let s of e.edges){let d=rt[s.color%rt.length],c=s.kind==="out"?i:0,p=s.kind==="into"?i:n,f=(c+p)/2;o.push((0,l.createElement)("path",{key:`e${s.kind}-${s.fromLane}-${s.toLane}-${s.color}`,d:`M ${a(s.fromLane)} ${c} C ${a(s.fromLane)} ${f}, ${a(s.toLane)} ${f}, ${a(s.toLane)} ${p}`,stroke:d,strokeWidth:1.6,fill:"none"}))}return o.push((0,l.createElement)("circle",{key:"node",cx:a(e.lane),cy:i,r:e.merge?4:3.2,fill:rt[e.color%rt.length],stroke:"var(--dsw-alias-bg-layer-1)",strokeWidth:1})),(0,l.createElement)("svg",{className:"gp-graph-svg",width:r,height:n},o)}function Fr(e,t){let n=[],r=(a,i)=>{for(let o of a)if(o.dir)n.push((0,l.createElement)("div",{key:o.path,className:"gp-tree-row",style:{paddingLeft:10+i*14}},[(0,l.createElement)(ve,{key:"c",size:11,open:!0}),(0,l.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)])),r(o.children,i+1);else{let s=String(o.meta??"modified"),d=t.activePath===o.path;n.push((0,l.createElement)("div",{key:o.path,className:`gp-tree-row${d?" gp-tree-row--active":""}`,style:{paddingLeft:10+i*14},title:t.openTitle,onClick:()=>t.onOpen(o.path)},[(0,l.createElement)("span",{key:"st",className:`gp-status-badge ${Ke(s)}`},(Be[s]??s[0]??"M").toUpperCase()),(0,l.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)]))}};return r(e,0),(0,l.createElement)("div",{},n)}function Pr(e,t){if(e===null||typeof document>"u")return null;let{text:n,error:r,mode:a,onMode:i,expanded:o,onExpand:s,onClose:d,remote:c,sessionId:p,compact:f,t:h}=t,x=f?["unified","before","after"]:["unified","split","before","after"],y=f&&a==="split"?"unified":a,u=(0,l.createElement)("div",{className:"gp-modal-backdrop",onClick:v=>{v.target===v.currentTarget&&d()}},(0,l.createElement)("div",{className:"gp-modal",role:"dialog","aria-modal":!0},[(0,l.createElement)("div",{key:"bar",className:"gp-modal__bar"},[(0,l.createElement)("span",{key:"fileicon",className:"gp-modal__fileicon"},(0,l.createElement)(tn,{size:15})),(0,l.createElement)("span",{key:"path",className:"gp-modal__path",title:e.path},Lr(e.path)),(0,l.createElement)("span",{key:"hash",className:"gp-modal__hash"},e.shortHash),n!==null&&n!==""?(()=>{let v=nt(n);return(0,l.createElement)("span",{key:"sum",className:"gp-modal__sum"},[(0,l.createElement)("span",{key:"a",className:"gp-stats__add"},`+${v.add}`),(0,l.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${v.del}`)])})():null,(0,l.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${o?" gp-seg__btn--active":""}`,disabled:y!=="split"&&y!=="unified",title:h(o?"diff.collapse":"diff.expandAll"),onClick:()=>s(!o)},h(o?"diff.collapse":"diff.expandAll")),(0,l.createElement)("div",{key:"seg",className:"gp-seg"},Ne(x,y,i,v=>h(`diff.${v}`))),(0,l.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:h("common.close"),onClick:d},(0,l.createElement)(bt,{size:15}))]),(0,l.createElement)("div",{key:"scroll",className:"gp-modal__scroll"},n===null?(0,l.createElement)("div",{className:"gp-empty"},h(r?"overview.diffFailed":"common.loading")):(0,l.createElement)(tt,{text:n,mode:y,path:e.path,remote:c,sessionId:p,imageSpec:{base:"commit",commit:e.hash},t:h}))]));return(0,it.createPortal)(u,document.body,"file-diff-modal")}function Lr(e){let t=e.lastIndexOf("/");return t<0?[(0,l.createElement)("span",{key:"n",className:"gp-modal__name"},e)]:[(0,l.createElement)("span",{key:"d",className:"gp-modal__dir"},e.slice(0,t+1)),(0,l.createElement)("span",{key:"n",className:"gp-modal__name"},e.slice(t+1))]}var m=require("react");var de=require("react");function Dn({stats:e,t}){let n=Date.now(),r=[(0,de.createElement)("span",{key:"files",className:"gp-stats__item"},t("stats.files",{n:e.fileCount})),(0,de.createElement)("span",{key:"lines",className:"gp-stats__item"},[(0,de.createElement)("span",{key:"a",className:"gp-stats__add"},`+${e.insertions}`)," ",(0,de.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${e.deletions}`)])];e.staged>0&&r.push((0,de.createElement)("span",{key:"st",className:"gp-stats__item"},t("stats.staged",{n:e.staged}))),e.modified>0&&r.push((0,de.createElement)("span",{key:"mo",className:"gp-stats__item"},t("stats.modified",{n:e.modified}))),e.untracked>0&&r.push((0,de.createElement)("span",{key:"un",className:"gp-stats__item"},t("stats.untracked",{n:e.untracked})));let a=[];return e.lastChangeAt!==null&&a.push((0,de.createElement)("span",{key:"lc",className:"gp-stats__item",title:Ae(e.lastChangeAt)},t("stats.lastChange",{time:Se(e.lastChangeAt,n,t)}))),e.headCommittedAt!==null&&a.push((0,de.createElement)("span",{key:"hc",className:"gp-stats__item",title:Ae(e.headCommittedAt)},t("stats.lastCommit",{time:Se(e.headCommittedAt,n,t)}))),a.length>0&&r.push((0,de.createElement)("span",{key:"times",className:"gp-stats__times"},a)),(0,de.createElement)("div",{className:"gp-stats"},r)}function An({remote:e,sessionId:t,snapshot:n,onAction:r,compact:a,t:i}){let[o,s]=(0,m.useState)(new Set),[d,c]=(0,m.useState)(""),[p,f]=(0,m.useState)(!1),[h,x]=(0,m.useState)(!1),[y,u]=(0,m.useState)(null),[v,D]=(0,m.useState)(new Set),[G,A]=(0,m.useState)(null),[$,H]=(0,m.useState)(null),[B,b]=(0,m.useState)(null),[V,E]=(0,m.useState)(()=>n.defaultDiffView),[L,ee]=(0,m.useState)(!1),[Z,z]=(0,m.useState)(!1),[K,W]=(0,m.useState)(!1),[ne,Y]=(0,m.useState)(!1),[ae,k]=(0,m.useState)(null),[M,F]=(0,m.useState)("list"),P=(0,m.useRef)(null),te=(0,m.useRef)(0),O=(0,m.useMemo)(()=>n.changes.filter(C=>C.staged).sort(St),[n]),N=(0,m.useMemo)(()=>n.changes.filter(C=>!C.staged&&C.status!=="untracked").sort(St),[n]),U=(0,m.useMemo)(()=>n.changes.filter(C=>C.status==="untracked").sort(St),[n]),he=[{key:"staged",labelKey:"changes.groupStaged",items:O},{key:"unstaged",labelKey:"changes.groupUnstaged",items:N},{key:"untracked",labelKey:"changes.groupUntracked",items:U}].filter(C=>C.items.length>0);(0,m.useEffect)(()=>{s(C=>{if(C.size===0)return C;let T=new Set(n.changes.map(ye=>ye.path+(ye.staged?":s":":w"))),j=new Set,xe=!1;for(let ye of C)T.has(ye)?j.add(ye):xe=!0;return xe?j:C})},[n]),(0,m.useEffect)(()=>{if(!p||Z||d.trim()!=="")return;let C=!0;return e.query({sessionId:t,query:{kind:"last-commit-message"}}).then(T=>{let j=ie(T,"last-commit-message");C&&j!==null&&(c(j.message),z(!0))}),()=>{C=!1}},[p,Z,d,e,t]);let J=(0,m.useCallback)(async(C,T,j=!1,xe=!1)=>{let ye=++te.current;H({path:C,base:T}),xe||b(null),ee(j);let Un=await e.query({sessionId:t,query:{kind:"diff",path:C,base:T,...j?{context:1e5}:{}}});if(ye!==te.current)return;let Ft=ie(Un,"diff");b(Ft!==null?Ft.text:"")},[e,t]);(0,m.useEffect)(()=>{if($===null)return;if(!n.changes.some(T=>T.path===$.path)){H(null),b(null),F("list");return}J($.path,$.base,L,!0)},[n]),(0,m.useEffect)(()=>{A(null)},[n]),(0,m.useEffect)(()=>{Y(!1)},[n]);let q=C=>{s(T=>{let j=new Set(T);return j.has(C)?j.delete(C):j.add(C),j})},_=async C=>{if(h)return!1;x(!0),u(null),k(null);try{let T=await r(C);return T.ok?!0:(u(T.error??i("error.generic")),!1)}catch(T){return u(T instanceof Error?T.message:i("error.generic")),!1}finally{x(!1)}},re=async()=>{let C=d.trim();if(C===""&&!p){u(i("error.emptyMessage"));return}let T=o.size>0?[...new Set([...o].map(xe=>xe.replace(/:[sw]$/,"")))]:void 0;await _({kind:"commit",message:C,...T?{paths:T}:{},...p?{amend:!0}:{}})&&(c(""),s(new Set),f(!1),z(!1))},ce=(C,T)=>{switch(C){case"empty-diff":return i("error.emptyDiff");case"llm-unavailable":return i("error.llmUnavailable");case"suggest-disabled":return i("error.suggestDisabled");case"llm-error":case"llm-output":return T===void 0?i("error.llmFailed"):`${i("error.llmFailed")}: ${T}`;default:return T??i("error.generic")}},Jn=async()=>{if(K)return;if(p&&!ne&&d.trim()!==""){Y(!0),u(null),k(i("commit.suggestOverwrite"));return}Y(!1);let C=o.size>0?[...new Set([...o].map(T=>T.replace(/:[sw]$/,"")))]:void 0;W(!0),u(null),k(null);try{let T=await e.suggest({sessionId:t,...C&&C.length>0?{paths:C}:{}});T.ok?(c(T.value.message),T.value.truncated===!0&&k(i("commit.suggestTruncated")),P.current?.focus()):u(ce(T.error.code,T.error.message))}catch(T){u(T instanceof Error?T.message:i("error.generic"))}finally{W(!1)}},On=C=>{D(T=>{let j=new Set(T);return j.has(C)?j.delete(C):j.add(C),j})},Pe=B!==null&&B!==""?nt(B):null,Mt=we({storageKey:"gp.changes.left",initial:380,min:220,reserve:200,edge:"end"}),Wn=(C,T)=>{J(C,T),a&&F("diff")},jn=a?["unified","before","after"]:["unified","split","before","after"],Le=a&&V==="split"?"unified":V,Dt=[(0,m.createElement)(Dn,{key:"stats",stats:n.stats,t:i}),(0,m.createElement)("div",{key:"toolbar",className:"gp-toolbar"},[(0,m.createElement)("button",{key:"sa",type:"button",className:"gp-btn",disabled:h||n.changes.length===0,onClick:()=>void _({kind:"stage-all"})},i("changes.stageAll")),(0,m.createElement)("button",{key:"ua",type:"button",className:"gp-btn",disabled:h||n.staged===0,onClick:()=>void _({kind:"unstage-all"})},i("changes.unstageAll"))]),y!==null?(0,m.createElement)("div",{key:"err",className:"gp-feedback"},y):null,ae!==null?(0,m.createElement)("div",{key:"notice",className:"gp-notice"},ae):null,(0,m.createElement)("div",{key:"list",className:"gp-changes__list"},n.changes.length===0?(0,m.createElement)("div",{className:"gp-empty"},i("changes.noChanges")):he.map(C=>(0,m.createElement)("div",{key:C.key},[(0,m.createElement)("div",{key:"head",className:"gp-group-head",onClick:()=>On(C.key)},[(0,m.createElement)(ve,{key:"chev",size:12,open:!v.has(C.key)}),`${i(C.labelKey)} (${C.items.length})`]),v.has(C.key)?null:C.items.map(T=>{let j=T.path+(T.staged?":s":":w");return zr(T,{selected:o.has(j),active:$?.path===T.path&&$.base===(T.staged?"staged":"worktree"),busy:h,armed:G===j,onToggle:()=>q(j),onOpen:()=>Wn(T.path,T.staged?"staged":"worktree"),onStage:()=>void _(T.staged?{kind:"unstage",paths:[T.path]}:{kind:"stage",paths:[T.path]}),onDiscard:()=>{G===j?(_({kind:"discard",paths:[T.path]}),A(null)):A(j)},t:i})})]))),(0,m.createElement)("div",{key:"box",className:"gp-commitbox"},[(0,m.createElement)("textarea",{key:"msg",className:"gp-commitbox__msg",placeholder:i("commit.placeholder"),value:d,ref:P,onChange:C=>c(C.target.value)}),(0,m.createElement)("div",{key:"row",className:"gp-commitbox__row"},[(0,m.createElement)("label",{key:"amend",className:"gp-commitbox__amend"},[(0,m.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:p,onChange:()=>{f(C=>!C),z(!1)}}),i("commit.amend")]),(0,m.createElement)("div",{key:"actions",className:"gp-commitbox__actions"},[n.suggestEnabled!==!1?(0,m.createElement)("button",{key:"suggest",type:"button",className:"gp-btn",disabled:h||K||n.changes.length===0,onClick:()=>void Jn(),title:i("commit.suggest")},[(0,m.createElement)(en,{key:"ic",size:13}),i(K?"commit.suggesting":"commit.suggest")]):null,(0,m.createElement)("button",{key:"commit",type:"button",className:"gp-btn gp-btn--primary",disabled:h||K||d.trim()==="",onClick:()=>void re()},i("commit.commit"))])])])],At=$===null?(0,m.createElement)("div",{className:"gp-empty"},i("changes.selectFile")):(0,m.createElement)("div",{className:"gp-diff"},[(0,m.createElement)("div",{key:"tb",className:"gp-diff__toolbar"},[a?(0,m.createElement)("button",{key:"back",type:"button",className:"gp-subhead__back",onClick:()=>F("list")},[(0,m.createElement)(_e,{key:"i",size:14}),i("changes.backToList")]):null,(0,m.createElement)("span",{key:"path",className:"gp-diff__path"},$.path),Pe?(0,m.createElement)("span",{key:"sum",className:"gp-stats__item",style:{marginLeft:"auto"}},[(0,m.createElement)("span",{key:"a",className:"gp-stats__add"},`+${Pe.add}`)," ",(0,m.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${Pe.del}`)]):null,(0,m.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${L?" gp-seg__btn--active":""}`,style:Pe?{}:{marginLeft:"auto"},disabled:Le!=="split"&&Le!=="unified",title:i(L?"diff.collapse":"diff.expandAll"),onClick:()=>void J($.path,$.base,!L)},i(L?"diff.collapse":"diff.expandAll")),(0,m.createElement)("div",{key:"seg",className:"gp-seg"},Ne(jn,Le,E,C=>i(`diff.${C}`)))]),(0,m.createElement)("div",{key:"scroll",className:"gp-diff__scroll"},B===null?(0,m.createElement)("div",{className:"gp-empty"},i("common.loading")):(0,m.createElement)(tt,{text:B,mode:Le,path:$.path,remote:e,sessionId:t,imageSpec:{base:$.base},t:i}))]);return a?(0,m.createElement)("div",{className:"gp-changes gp-changes--compact"},M==="diff"?(0,m.createElement)("div",{key:"right",className:"gp-changes__right"},At):(0,m.createElement)("div",{key:"left",className:"gp-changes__left"},Dt)):(0,m.createElement)("div",{className:"gp-changes"},[(0,m.createElement)("div",{key:"left",className:"gp-changes__left",style:{flex:`0 0 ${Mt.width}px`}},Dt),Mt.divider,(0,m.createElement)("div",{key:"right",className:"gp-changes__right"},At)])}function St(e,t){return e.path.localeCompare(t.path)}function zr(e,t){let n=e.path.split("/").pop()??e.path,r=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"";return(0,m.createElement)("div",{key:e.path+(e.staged?":s":":w"),className:`gp-file-row${t.active?" gp-file-row--active":""}`,onClick:t.onOpen},[(0,m.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:t.selected,onClick:a=>a.stopPropagation(),onChange:t.onToggle}),(0,m.createElement)("span",{key:"st",className:`gp-status-badge ${Ke(e.status)}`},Be[e.status]??"?"),(0,m.createElement)("span",{key:"nm",className:"gp-tree-name",title:e.path},[n,r?(0,m.createElement)("span",{key:"d",style:{color:"var(--dsw-alias-label-tertiary)",marginLeft:6,fontSize:11}},r):null]),(0,m.createElement)("span",{key:"act",className:"gp-file-row__actions"},[(0,m.createElement)("button",{key:"stg",type:"button",className:"gp-icon-btn",title:e.staged?t.t("changes.unstage"):t.t("changes.stage"),disabled:t.busy,onClick:a=>{a.stopPropagation(),t.onStage()}},e.staged?"\u2212":"+"),(0,m.createElement)("button",{key:"dis",type:"button",className:"gp-icon-btn",title:t.armed?t.t("changes.discardConfirm"):t.t("changes.discard"),style:t.armed?{color:"var(--dsw-alias-state-error-primary)"}:{},disabled:t.busy,onClick:a=>{a.stopPropagation(),t.onDiscard()}},"\u21BA")])])}var g=require("react");var ue=require("@deepseek-ai/dsh-client-ui-primitives");function Pn(e){return/\.(?:md|markdown)$/i.test(e)}function Nt(e){return/\.(?:html?|xhtml)$/i.test(e)}function $r(e){return Pn(e)||Nt(e)}var Hr=256*1024,Ir=5e3,Fn=5e3,at=20,ot=12,Xr=6e4,Ct=new Map;function Vr(e,t){let n=t.file.kind==="loading"?{kind:"idle"}:t.file;Ct.set(e,{state:{...t,file:n},leftAt:Date.now()})}function Br(e){let t=Ct.get(e);return t===void 0?null:Date.now()-t.leftAt>Xr?(Ct.delete(e),null):t.state}function Tt({remote:e,sessionId:t,compact:n,t:r}){let a=(0,g.useRef)(void 0);a.current===void 0&&(a.current=Br(t));let i=a.current,[o,s]=(0,g.useState)(()=>i?.dirs??new Map),[d,c]=(0,g.useState)(()=>i?.open??new Set([""])),[p,f]=(0,g.useState)(()=>i?.selected??null),[h,x]=(0,g.useState)(()=>i?.file??{kind:"idle"}),[y,u]=(0,g.useState)(()=>i?.renderMarkdown??!0),[v,D]=(0,g.useState)("idle"),[G,A]=(0,g.useState)("idle"),[$,H]=(0,g.useState)(()=>i?.pane??"tree"),B=(0,g.useMemo)(()=>({code:{copyLabel:r("files.copy"),copiedLabel:r("files.copied")},footnotes:r("files.footnotes")}),[r]),b=(0,g.useRef)(0),V=we({storageKey:"gp.files.left",initial:300,min:180,reserve:220,edge:"end"}),E=(0,g.useCallback)(k=>{s(M=>{let F=M.get(k);if(F!==void 0&&F.status!=="error")return M;let P=new Map(M);return P.set(k,{status:"loading"}),P}),e.query({sessionId:t,query:{kind:"dir-list",path:k}}).then(M=>{let F=ie(M,"dir-list");s(P=>{let te=new Map(P);return te.set(k,F===null?{status:"error"}:{status:"ready",entries:F.entries,truncated:F.truncated}),te})}).catch(()=>{s(M=>{let F=new Map(M);return F.set(k,{status:"error"}),F})})},[e,t]);(0,g.useEffect)(()=>{E("")},[E]);let L=(0,g.useCallback)(k=>{c(M=>{let F=new Set(M);return F.has(k)?(F.delete(k),F):(F.add(k),o.get(k)===void 0&&E(k),F)})},[o,E]),ee=(0,g.useCallback)(k=>{f(k),n&&H("preview"),u(!Nt(k)),D("idle"),A("idle");let M=++b.current;x({kind:"loading",path:k}),e.query({sessionId:t,query:{kind:"file-content",path:k}}).then(F=>{if(M!==b.current)return;let P=ie(F,"file-content");if(P===null){x({kind:"error",path:k});return}if(P.tooLarge===!0){x({kind:"tooLarge",path:k});return}if(P.variant==="image"&&P.dataUrl!==void 0){x({kind:"image",path:k,dataUrl:P.dataUrl});return}if(P.variant==="text"){x({kind:"text",path:k,content:P.content??"",lines:P.lines??0});return}x({kind:"binary",path:k})}).catch(()=>{M===b.current&&x({kind:"error",path:k})})},[e,t,n]),Z=(0,g.useRef)({dirs:o,open:d,selected:p,file:h,renderMarkdown:y,pane:$});Z.current={dirs:o,open:d,selected:p,file:h,renderMarkdown:y,pane:$},(0,g.useEffect)(()=>()=>{Vr(t,Z.current)},[t]);let z=(0,g.useRef)(!1);(0,g.useEffect)(()=>{z.current||(z.current=!0,i!==null&&i.selected!==null&&h.kind==="idle"&&ee(i.selected))},[i,h.kind,ee]);let K=(0,g.useMemo)(()=>Ln("",0,{dirs:o,open:d,selected:p,toggleDir:L,selectFile:ee,t:r}),[o,d,p,L,ee,r]),W=async()=>{if(p===null)return;let k=b.current;try{await navigator.clipboard.writeText(p),k===b.current&&D("copied")}catch{k===b.current&&D("error")}},ne=async()=>{if(h.kind!=="text")return;let k=b.current;try{await navigator.clipboard.writeText(h.content),k===b.current&&A("copied")}catch{k===b.current&&A("error")}},Y=(0,g.createElement)("div",{key:"left",className:"gp-files__tree",style:n?void 0:{flex:`0 0 ${V.width}px`}},K),ae=(0,g.createElement)("div",{key:"right",className:"gp-files__preview"},[p!==null?(0,g.createElement)("div",{key:"bar",className:"gp-files__bar"},[n?(0,g.createElement)("button",{key:"back",type:"button",className:"gp-subhead__back",onClick:()=>H("tree")},[(0,g.createElement)(_e,{key:"i",size:14}),r("files.backToTree")]):null,(0,g.createElement)("code",{key:"path",className:"gp-files__path",title:p},p),h.kind==="text"&&$r(h.path)?(0,g.createElement)("div",{key:"mode",className:"gp-files__mode",role:"group","aria-label":r("files.previewMode")},[(0,g.createElement)("button",{key:"source",type:"button",className:`gp-files__mode-btn${y?"":" gp-files__mode-btn--active"}`,"aria-pressed":!y,onClick:()=>u(!1)},r("files.source")),(0,g.createElement)("button",{key:"render",type:"button",className:`gp-files__mode-btn${y?" gp-files__mode-btn--active":""}`,"aria-pressed":y,onClick:()=>u(!0)},r("files.render"))]):null,(0,g.createElement)("button",{key:"copy",type:"button",className:`gp-files__copy-path${v==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{W()}},r(v==="copied"?"files.pathCopied":v==="error"?"files.pathCopyFailed":"files.copyPath")),h.kind==="text"?(0,g.createElement)("button",{key:"copy-content",type:"button",className:`gp-files__copy-path${G==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{ne()}},r(G==="copied"?"files.contentCopied":G==="error"?"files.contentCopyFailed":"files.copyContent")):null]):null,(0,g.createElement)("div",{key:"content",className:"gp-files__preview-content"},Kr(h,y,B,r))]);return n?(0,g.createElement)("div",{className:"gp-files gp-files--compact"},$==="preview"?ae:Y):(0,g.createElement)("div",{className:"gp-files"},[Y,V.divider,ae])}function Kr(e,t,n,r){return e.kind==="text"&&t&&Pn(e.path)?(0,g.createElement)("div",{className:"gp-files__markdown"},(0,g.createElement)(ue.MarkdownText,{text:e.content,labels:n,variant:"body"})):e.kind==="text"&&t&&Nt(e.path)?(0,g.createElement)("iframe",{className:"gp-files__html",title:e.path,srcDoc:e.content,sandbox:"allow-scripts",referrerPolicy:"no-referrer"}):qr(e,r)}function Ln(e,t,n){let r=n.dirs.get(e);if(r===void 0||r.status==="loading")return t===0?[(0,g.createElement)("div",{key:"l",className:"gp-empty"},n.t("common.loading"))]:[(0,g.createElement)("div",{key:`l${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("common.loading"))];if(r.status==="error")return[(0,g.createElement)("div",{key:`e${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("files.loadFailed"))];let a=[];for(let i of r.entries){let o=e===""?i.name:`${e}/${i.name}`;if(i.dir){let s=n.open.has(o);a.push((0,g.createElement)("button",{key:o,type:"button",className:`gp-tree-row gp-files__entry gp-files__entry--dir${i.ignored?" gp-tree-row--ignored":""}`,style:{paddingLeft:10+t*14},"aria-expanded":s,"aria-label":i.ignored?`${i.name} (${n.t("files.ignored")})`:i.name,onClick:()=>n.toggleDir(o)},[(0,g.createElement)("span",{key:"c",className:"gp-tree-chev"},(0,g.createElement)(ve,{size:11,open:s})),(0,g.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,g.createElement)(ue.FileTypeIcon,{kind:"folder",size:18})),(0,g.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)])),s&&a.push(...Ln(o,t+1,n))}else{let s=n.selected===o;a.push((0,g.createElement)("button",{key:o,type:"button",className:`gp-tree-row gp-files__entry${s?" gp-tree-row--active":""}${i.ignored?" gp-tree-row--ignored":""}`,style:{paddingLeft:10+t*14},"aria-current":s?"true":void 0,"aria-label":i.ignored?`${i.name} (${n.t("files.ignored")})`:i.name,onClick:()=>n.selectFile(o)},[(0,g.createElement)("span",{key:"c",className:"gp-tree-chev"}),(0,g.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,g.createElement)(ue.FileTypeIcon,{path:o,size:18})),(0,g.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)]))}}return r.truncated&&a.push((0,g.createElement)("div",{key:`t${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("files.truncated"))),a}function qr(e,t){switch(e.kind){case"idle":return(0,g.createElement)("div",{className:"gp-empty"},t("files.selectFile"));case"loading":return(0,g.createElement)("div",{className:"gp-empty"},t("common.loading"));case"error":return(0,g.createElement)("div",{className:"gp-empty"},t("files.loadFailed"));case"tooLarge":return(0,g.createElement)("div",{className:"gp-empty"},t("files.tooLarge"));case"binary":return(0,g.createElement)("div",{className:"gp-empty"},t("files.binary"));case"image":return(0,g.createElement)("div",{className:"gp-files__image"},(0,g.createElement)("img",{src:e.dataUrl,alt:e.path}));case"text":return(0,g.createElement)(Or,{content:e.content,path:e.path,t})}}function Jr(e,t){if(t==="")return[];let n=[];for(let r=0;r<e.length;r++)for(let[a,i]of We(e[r],t))if(n.push({line:r,start:a,end:i}),n.length>=qe)return n;return n}function Or({content:e,path:t,t:n}){let r=(0,g.useMemo)(()=>{let N=e.split(`
443
+ `);return N.length>0&&N[N.length-1]===""&&N.pop(),N},[e]),a=e.length>Hr||r.length>Ir,i=a?void 0:(0,ue.languageForPath)(t),o=(0,ue.useCodeHighlighter)(i),s=(0,g.useMemo)(()=>a?void 0:o(r.join(`
444
+ `)),[a,o,r]),[d,c]=(0,g.useState)(!1),[p,f]=(0,g.useState)(""),[h,x]=(0,g.useState)(!1),[y,u]=(0,g.useState)(0),v=(0,g.useRef)(null),D=(0,g.useRef)(null),G=(0,g.useRef)(null);(0,g.useEffect)(()=>{c(!1),f(""),u(0)},[t]);let A=Oe(p,Je),$=(0,g.useMemo)(()=>r.map(N=>N.toLowerCase()),[r]),H=h?A:A.toLowerCase(),B=h?r:$,b=(0,g.useMemo)(()=>Jr(B,H),[B,H]);(0,g.useEffect)(()=>{u(0)},[H]);let V=b.length===0?0:Math.min(y,b.length-1),E=(0,g.useMemo)(()=>{let N=new Map;for(let U of b){let oe=N.get(U.line)??[];oe.push([U.start,U.end]),N.set(U.line,oe)}return N},[b]);(0,g.useEffect)(()=>{let N=U=>{if(!((U.ctrlKey||U.metaKey)&&(U.key==="f"||U.key==="F")))return;let oe=v.current;oe===null||oe.offsetParent===null||(U.preventDefault(),c(!0),requestAnimationFrame(()=>D.current?.select()))};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[]);let[L,ee]=(0,g.useState)({top:0,height:0});(0,g.useLayoutEffect)(()=>{let N=v.current;if(N===null)return;let U=()=>ee({top:N.scrollTop,height:N.clientHeight});U(),N.addEventListener("scroll",U,{passive:!0});let oe=typeof ResizeObserver<"u"?new ResizeObserver(U):null;return oe?.observe(N),()=>{N.removeEventListener("scroll",U),oe?.disconnect()}},[]);let Z=r.length,K=Math.max(0,Math.floor((L.top-0)/at)-ot),W=L.height===0?Z:Math.ceil(L.height/at)+ot*2,ne=Math.min(Z,K+W),Y=b.length>0?b[V].line:-1,ae=Y>=0?Math.min(K,Math.max(0,Y-ot)):K,k=Y>=0?Math.max(ne,Math.min(Z,Y+ot)):ne;(0,g.useEffect)(()=>{if(Y<0)return;let N=requestAnimationFrame(()=>G.current?.scrollIntoView({block:"center",inline:"nearest"}));return()=>cancelAnimationFrame(N)},[V,b,Y]);let M=(0,g.useCallback)(N=>{u(U=>b.length===0?0:(U+N+b.length)%b.length)},[b.length]),F=b.length>0?b[V]:null,P=d?(0,g.createElement)(Ue,{inputRef:D,query:p,matches:b.length,active:V,caseSensitive:h,onChange:f,onToggleCase:()=>x(N=>!N),onStep:M,onClose:()=>c(!1),t:n}):null,te=a||d?(0,g.createElement)("div",{key:"hd",className:"gp-files__header"},[a?(0,g.createElement)("div",{key:"note",className:"gp-files__note"},n("files.highlightOff")):null,P]):null,O=[];for(let N=ae;N<k;N++)O.push((0,g.createElement)("div",{key:N,className:"gp-files__row",style:{top:N*at}},[(0,g.createElement)("div",{key:"n",className:"gp-diff-no"},N+1),Wr(r[N],N,s?.[N],E.get(N),F,G,n)]));return(0,g.createElement)("div",{className:"gp-files__code gp-diff__scroll",ref:v},[te,(0,g.createElement)("div",{key:"grid",className:"gp-files__single gp-files__single--virt",style:{height:Z*at}},O)])}function Wr(e,t,n,r,a,i,o){if(e==="")return(0,g.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},"\xA0");if(e.length>Fn)return(0,g.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},[e.slice(0,Fn),(0,g.createElement)("span",{key:"trunc",className:"gp-files__trunc"},o("files.lineTruncated"))]);if(r===void 0||r.length===0)return(0,g.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},n!==void 0?n.map((d,c)=>(0,g.createElement)("span",{key:c,style:d.style},d.text)):e);let s=a!==null&&a.line===t?[a.start,a.end]:null;return(0,g.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},je(e,r,n,`c${t}`,s,i))}var st=require("react"),jr=620;function zn(e){let[t,n]=(0,st.useState)(!1);return(0,st.useLayoutEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let r=()=>n(e.clientWidth>0&&e.clientWidth<=jr);r();let a=new ResizeObserver(r);return a.observe(e),()=>a.disconnect()},[e]),t}var $n="gp.panel.fontDelta";function Ur(){if(typeof localStorage>"u")return 0;let e=Number(localStorage.getItem($n));return e===-1||e===1?e:0}function Hn({ctx:e,sessionId:t,t:n}){let[r,a]=(0,S.useState)(Ur),[i,o]=(0,S.useState)(null),[s,d]=(0,S.useState)(null),c=zn(s),p=Ie(t),f=Ee(e),h=p.state==="error"&&p.error.code==="git-unavailable",x=p.state==="error"&&(p.error.code==="not-a-git-repo"||p.error.code==="git-unavailable"),y=h&&p.state==="error"&&p.error.isGitRepo===!0,u=x?"files":i!==null&&i.sessionId===t?i.tab:null,v=(0,S.useRef)({tabs:new Set});v.current.sessionId!==t&&(v.current={sessionId:t,tabs:new Set}),u!==null&&v.current.tabs.add(u);let D=v.current.tabs.has("files");(0,S.useEffect)(()=>{if(!me(t))return;if(x){o(null);return}if(i?.sessionId===t)return;let E=Kt(t);if(E!==null){o({sessionId:t,tab:E});return}let L=Ot(t);if(L!==null){o({sessionId:t,tab:L});return}p.state==="ready"&&o({sessionId:t,tab:p.snapshot.dirty?"changes":"overview"})},[t,p,x,i?.sessionId]),(0,S.useEffect)(()=>{if(me(t))return qt(t,E=>o({sessionId:t,tab:E}))},[t]);let G=(0,S.useRef)({tab:null});G.current={sessionId:t,tab:u},(0,S.useEffect)(()=>()=>{let{sessionId:E,tab:L}=G.current;E!==void 0&&L!==null&&Jt(E,L)},[]);let A=p.state==="ready"?p.snapshot.checkedAt:0,$=async E=>{if(!me(t))return{ok:!1,error:n("error.noCwd")};let L=await f.run({sessionId:t,action:E});return L.ok?(ut(t).accept(L.snapshot),{ok:!0}):{ok:!1,error:Qr(L.error.code,L.error.message,n)}},H=E=>{a(E),typeof localStorage<"u"&&localStorage.setItem($n,String(E))},B=[{key:"overview",label:n("tab.overview"),icon:(0,S.createElement)(Xe,{size:14})},{key:"changes",label:n("tab.changes"),icon:(0,S.createElement)(Qt,{size:14})},{key:"files",label:n("tab.files"),icon:(0,S.createElement)(nn,{size:14})}],b=x?B.filter(E=>E.key==="files"):B,V=(()=>{if(!me(t))return(0,S.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(p.state==="no-cwd")return(0,S.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(x){let L=D?(0,S.createElement)(Tt,{key:t,remote:f,sessionId:t,compact:c,t:n}):null;return y?(0,S.createElement)("div",{className:"gp-files-wrap"},[(0,S.createElement)("div",{key:"notice",className:"gp-notice"},n("files.gitNotInstalled")),L]):(0,S.createElement)("div",{style:{display:"contents"}},L)}if(p.state==="error")return(0,S.createElement)("div",{className:"gp-empty"},n("pill.unavailable"));if(p.state==="cold"||p.state==="loading"||u===null)return(0,S.createElement)("div",{className:"gp-empty"},n("common.loading"));let E=p.snapshot;return(0,S.createElement)("div",{style:{display:"contents"}},[v.current.tabs.has("overview")?(0,S.createElement)("div",{key:"overview",style:u==="overview"?{display:"contents"}:{display:"none"}},(0,S.createElement)(Rn,{key:t,remote:f,sessionId:t,refreshKey:A,defaultDiffView:E.defaultDiffView,compact:c,t:n})):null,v.current.tabs.has("changes")?(0,S.createElement)("div",{key:"changes",style:u==="changes"?{display:"contents"}:{display:"none"}},(0,S.createElement)(An,{key:t,remote:f,sessionId:t,snapshot:E,onAction:$,compact:c,t:n})):null,D?(0,S.createElement)("div",{key:"files",style:u==="files"?{display:"contents"}:{display:"none"}},(0,S.createElement)(Tt,{key:t,remote:f,sessionId:t,compact:c,t:n})):null])})();return(0,S.createElement)("div",{className:"gp-panel",ref:d,"data-conversation-composer-overlay":"","data-font-delta":r,"data-layout":c?"compact":"wide"},[(0,S.createElement)("div",{key:"tabs",className:"gp-tabbar",role:"tablist"},[...b.map(E=>(0,S.createElement)("button",{key:E.key,type:"button",role:"tab","aria-selected":u===E.key,className:`gp-tab${u===E.key?" gp-tab--active":""}`,onClick:()=>{me(t)&&o({sessionId:t,tab:E.key})}},[(0,S.createElement)("span",{key:"i",className:"gp-tab__icon"},E.icon),(0,S.createElement)("span",{key:"l",className:"gp-tab__label"},E.label)])),(0,S.createElement)("div",{key:"trailing",className:"gp-tabbar__trailing"},[(0,S.createElement)("div",{key:"font",className:"gp-font"},[(0,S.createElement)("button",{key:"dec",type:"button",className:"gp-font__decrease",onClick:()=>H(-1),"aria-label":n("panel.fontDecrease")},"A\u2212"),(0,S.createElement)("button",{key:"reset",type:"button",className:"gp-font__reset",onClick:()=>H(0),"aria-label":n("panel.fontReset")},"A"),(0,S.createElement)("button",{key:"inc",type:"button",className:"gp-font__increase",onClick:()=>H(1),"aria-label":n("panel.fontIncrease")},"A+")]),(0,S.createElement)(Yr,{key:"ver",remote:f,t:n})])]),(0,S.createElement)("div",{key:"body",className:"gp-body"},V)])}function Qr(e,t,n){switch(e){case"empty-message":return n("error.emptyMessage");case"not-a-git-repo":return n("error.notARepo");case"cwd-unavailable":return n("error.noCwd");case"local-changes-block":return n("error.localChangesBlock");default:return t??n("error.generic")}}function Yr({remote:e,t}){let[n,r]=(0,S.useState)({kind:"idle"});(0,S.useEffect)(()=>{let s=!0;return e.version({}).then(d=>{s&&"current"in d&&r(c=>({...c,info:d}))}),()=>{s=!1}},[e]);let a=async()=>{r(d=>({kind:"checking",info:d.info}));let s=await e.version({check:!0});r({kind:"idle",info:"current"in s?s:void 0})},i=n.info,o=n.kind==="checking"?(0,S.createElement)("span",{className:"gp-verbar__status"},t("version.checking")):i===void 0||!i.checkedRemote?null:i.error!==void 0?(0,S.createElement)("span",{className:"gp-verbar__status gp-verbar__status--err",title:i.error},i.error==="repository is not configured"?t("version.noRepo"):t("version.error")):i.updateAvailable&&i.latest!==void 0?(0,S.createElement)("span",{},[(0,S.createElement)("span",{key:"s",className:"gp-verbar__status gp-verbar__status--new"},t("version.updateAvailable",{latest:i.latest,current:i.current})),i.releaseUrl!==void 0?(0,S.createElement)("a",{key:"l",className:"gp-verbar__link",href:i.releaseUrl,target:"_blank",rel:"noreferrer",style:{marginLeft:8}},t("version.viewRelease")):null]):(0,S.createElement)("span",{className:"gp-verbar__status gp-verbar__status--ok"},t("version.upToDate",{current:i.current}));return(0,S.createElement)("div",{className:"gp-verbar"},[i!==void 0?(0,S.createElement)("span",{key:"tag",className:"gp-verbar__tag"},`v${i.current}`):null,o,(0,S.createElement)("button",{key:"btn",type:"button",className:"gp-verbar__btn",disabled:n.kind==="checking",onClick:()=>void a()},[(0,S.createElement)("span",{key:"i",className:"gp-tab__icon"},(0,S.createElement)(Ve,{size:12})),t("version.check")]),i?.repositoryUrl!==void 0?(0,S.createElement)("a",{key:"gh",className:"gp-icon-btn gp-verbar__gh",href:i.repositoryUrl,target:"_blank",rel:"noreferrer",title:t("version.openRepo"),"aria-label":t("version.openRepo")},(0,S.createElement)(rn,{size:15})):null])}var Q=require("react"),Bn=require("react-dom");var In="data-gp-tab-dot",Ge,Gt=null,Xn="",dt=null,lt;function Zr(e){if(typeof document>"u")return null;let t=document.querySelectorAll(De);for(let n of t)if((n.textContent??"").trim()===e)return n;return null}function Et(){let e=Zr(Xn);if(e===null)return;let t=e.querySelector(`[${In}]`);if(dt===null){t?.remove();return}let n=`gp-tab-dot gp-tab-dot--${dt}`;if(t!==null){t.className!==n&&(t.className=n);return}let r=document.createElement("span");r.className=n,r.setAttribute(In,""),r.setAttribute("aria-hidden","true"),e.appendChild(r)}function ei(){if(typeof document>"u"||typeof MutationObserver>"u")return;let e=document.querySelector(Vt);if(e!==Gt){if(Ge?.disconnect(),Gt=e,e===null){Ge=void 0;return}Ge=new MutationObserver(()=>Et()),Ge.observe(e,{childList:!0,subtree:!0})}}function ti(){Ge?.disconnect(),Ge=void 0,Gt=null}function Vn(e,t,n){if(!(typeof document>"u")){if(n===null){Rt(e);return}lt=e,Xn=t,dt=n,ei(),Et()}}function Rt(e){lt!==void 0&&lt!==e||(lt=void 0,dt=null,Et(),ti())}function ni(e){let t=e.replace(/[/\\]+$/,"").split(/[/\\]/);return t[t.length-1]||e}function ri(){let[e,t]=(0,Q.useState)(!1),[n,r]=(0,Q.useState)(null),a=(0,Q.useRef)(null);return(0,Q.useLayoutEffect)(()=>{if(!e||a.current===null){r(null);return}let s=a.current.getBoundingClientRect();r({left:s.left,bottom:window.innerHeight-s.top+8})},[e]),{bind:{ref:s=>{a.current=s},onMouseEnter:()=>t(!0),onMouseLeave:()=>t(!1)},render:s=>!e||n===null||typeof document>"u"?null:(0,Bn.createPortal)((0,Q.createElement)("div",{className:"gp-tip",style:{left:n.left,bottom:n.bottom}},s.map((d,c)=>(0,Q.createElement)("div",{key:c,className:c===0?"gp-tip__path":"gp-tip__note"},d))),document.body)}}function ii(e){let[t,n]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let a=e.closest("[data-conversation-region]")??document.body,i=()=>n(a.clientWidth>0&&a.clientWidth<ai);i();let o=new ResizeObserver(i);return o.observe(a),()=>o.disconnect()},[e]),t}var ai=620;function Kn({sessionId:e,t}){let n=Ie(e),r=ri(),[a,i]=(0,Q.useState)(null),o=ii(a),s=(0,Q.useRef)(Symbol("gp-tab-dot")),d=n.state==="ready"&&n.snapshot.showInputPill===!1?n.snapshot.dirty?"dirty":"synced":null,c=t("panel.tab");if((0,Q.useEffect)(()=>{Vn(s.current,c,d);let v=s.current;return()=>{Rt(v)}},[c,d]),n.state==="cold"||n.state==="loading"||n.state==="no-cwd")return null;if(n.state==="error")return n.error.code==="not-a-git-repo"||n.error.code==="git-unavailable"||n.error.showInputPill===!1?null:(0,Q.createElement)("span",{className:"gp-pill gp-pill--degraded",title:n.error.detail??t("pill.unavailable")},t("pill.unavailable"));let p=n.snapshot;if(p.showInputPill===!1)return null;let f=ni(p.root),h=p.branch??`(${t("pill.detached")})`,x=p.dirty,y=x?"gp-pill--dirty":"gp-pill--synced",u=()=>{if(jt(c)){Ut(c);return}me(e)&&Bt(e,x?"changes":"overview"),Wt(c)};return(0,Q.createElement)("span",{className:"gp-pill-wrap",ref:i},[(0,Q.createElement)("button",{key:"btn",type:"button",className:`gp-pill ${y}${o?" gp-pill--compact":""}`,onClick:u,ref:r.bind.ref,onMouseEnter:r.bind.onMouseEnter,onMouseLeave:r.bind.onMouseLeave},[(0,Q.createElement)("span",{key:"dot",className:"gp-pill__dot","aria-hidden":"true"}),(0,Q.createElement)("span",{key:"repo",className:"gp-pill__repo"},f),(0,Q.createElement)("span",{key:"git",className:"gp-pill__git"},["(",(0,Q.createElement)("span",{key:"b",className:"gp-pill__branch"},h),")"])]),r.render([p.root,t(x?"pill.dirty":"pill.synced")])])}var X=require("react");function oi(e){for(let t of e){let n=t.schema?.dict;if(n!==void 0&&"showInputPill"in n||JSON.stringify(t.schema).includes("showInputPill"))return t.ns}}function qn({ctx:e,t}){let[,n]=(0,X.useState)(0),[r,a]=(0,X.useState)(!1),[i,o]=(0,X.useState)(!1),[s,d]=(0,X.useState)(null),[c,p]=(0,X.useState)(null),[f,h]=(0,X.useState)(null),x=()=>{n(z=>z+1)},y=e.get("configForms"),u=(0,X.useMemo)(()=>y?.describe(),[y]);(0,X.useEffect)(()=>{if(u!==void 0)return u.ensure(),u.subscribe(x)},[u]);let v=u?.getSnapshot().view,D=(0,X.useMemo)(()=>v===void 0?void 0:oi(v.namespaces),[v]),G=(0,X.useMemo)(()=>y!==void 0&&D!==void 0?y.get(D):void 0,[y,D]);(0,X.useEffect)(()=>{if(G!==void 0)return G.subscribe(x)},[G]);let A=G?.getSnapshot(),$=G!==void 0&&A!==void 0&&A.status==="ready",H=u?.getSnapshot().status,B=s??(typeof A?.value?.showInputPill=="boolean"?A.value.showInputPill:!0),b=c??(A?.value?.defaultDiffView==="split"?"split":"unified"),V=f??(typeof A?.value?.suggestEnabled=="boolean"?A.value.suggestEnabled:!0),E=async(z,K,W)=>{if(G!==void 0){o(!1),a(!0);try{let ne=await G.set(z,K);W(),ne?(Re(),setTimeout(()=>Re(),1e3)):o(!0)}catch{W(),o(!0)}finally{a(!1)}}},L=z=>(d(z),E("showInputPill",z,()=>d(null))),ee=z=>z===b?Promise.resolve():(p(z),E("defaultDiffView",z,()=>p(null))),Z=z=>(h(z),E("suggestEnabled",z,()=>h(null)));return y===void 0?(0,X.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded")):$?(0,X.createElement)("div",{className:"gp-cfg"},[(0,X.createElement)("h3",{key:"title",className:"gp-cfg__title"},t("cfg.title")),(0,X.createElement)("label",{key:"row",className:"gp-cfg__row"},[(0,X.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:B,disabled:r||A?.writable===!1,onChange:z=>{L(z.currentTarget.checked)}}),(0,X.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.toggle"))]),(0,X.createElement)("p",{key:"hint",className:"gp-cfg__hint"},t("cfg.hint")),(0,X.createElement)("h3",{key:"difftitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.diffTitle")),(0,X.createElement)("div",{key:"diffseg",className:"gp-seg gp-cfg__seg"},Ne(["unified","split"],b,z=>{ee(z)},z=>t(z==="unified"?"cfg.diffUnified":"cfg.diffSplit"),r||A?.writable===!1)),(0,X.createElement)("p",{key:"diffhint",className:"gp-cfg__hint"},t("cfg.diffHint")),(0,X.createElement)("h3",{key:"sgtitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.suggestTitle")),(0,X.createElement)("label",{key:"sgrow",className:"gp-cfg__row"},[(0,X.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:V,disabled:r||A?.writable===!1,onChange:z=>{Z(z.currentTarget.checked)}}),(0,X.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.suggestToggle"))]),(0,X.createElement)("p",{key:"sghint",className:"gp-cfg__hint"},t("cfg.suggestHint")),i?(0,X.createElement)("p",{key:"error",className:"gp-cfg__err",role:"alert"},t("cfg.saveFailed")):null]):H==="idle"||H==="loading"?(0,X.createElement)("p",{className:"gp-cfg__hint"},t("common.loading")):(0,X.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded"))}var Fe="gitPanel",si=["dsh-git-panel","@xbzbing/dsh-git-panel"],li=["slots","locale","connection"],di="dsh-git-panel";function ci(e){Pt(),It(e),e.effect(()=>e.locale.register(Fe,{zh:Lt,en:zt})??void 0,"dsh-git-panel: dictionaries");let t=e.locale.bind(Fe),n=[],r=a=>{typeof a=="function"&&n.push(a)};r(e.slots.inject("conversation.view",()=>e.slots.register({name:"conversation.view",id:"git-panel",order:30,locale:Fe,label:()=>t("panel.tab")},a=>(0,ct.createElement)(Hn,{ctx:e,sessionId:a.sessionId,t})))),r(e.slots.inject("conversation.input.left",()=>e.slots.register({name:"conversation.input.left",id:"git-panel-pill",order:100,locale:Fe},a=>(0,ct.createElement)(Kn,{sessionId:a.sessionId,t}))));for(let a of si)r(e.slots.inject("plugins.bundle.config",()=>e.slots.register({name:"plugins.bundle.config",key:a,locale:Fe},i=>i.view==="summary"?t("cfg.title"):(0,ct.createElement)(qn,{ctx:e,t}))));e.effect(()=>{let a=e.on("connection/reset",()=>Re());return()=>{typeof a=="function"&&a();for(let i of n.splice(0))try{i()}catch{}Xt()}},"dsh-git-panel: lifecycle")}module.exports={name:di,inject:li,apply:ci};
356
445
  return module.exports;
357
446
  } });