@xbzbing/dsh-git-panel 1.4.0 → 1.5.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 Xt=require("react");var Ir=`
3
+ "use strict";var Vt=require("react");var qr=`
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. */
@@ -27,6 +27,9 @@ var module = { exports: {} }; var exports = module.exports;
27
27
  .gp-verbar__link:hover{text-decoration:underline}
28
28
  .gp-verbar__gh{color:var(--dsw-alias-label-secondary);text-decoration:none}
29
29
  .gp-verbar__gh:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}
30
+ /* star link: hollow by default, fills to a gold star on hover */
31
+ .gp-verbar__gh--starred:hover{color:var(--dsw-alias-state-warn-primary,#e3b341)}
32
+ .gp-verbar__gh--starred:hover svg{fill:currentColor}
30
33
  .gp-tab{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--dsw-alias-label-secondary);font:inherit;font-size:13px;cursor:pointer;flex:none;transition:background .12s ease,color .12s ease}
31
34
  .gp-tab:hover{background:var(--dsw-alias-interactive-bg-hover)}
32
35
  /* Active tab: primary-tinted fill + primary text + medium weight + a soft ring.
@@ -67,7 +70,8 @@ var module = { exports: {} }; var exports = module.exports;
67
70
  * blank when a right sidebar narrows the panel. */
68
71
  .gp-overview{display:flex;width:100%;min-height:0}
69
72
  .gp-col{display:flex;flex-direction:column;min-height:0;min-width:0}
70
- .gp-col--left{flex:0 1 200px;min-width:130px;overflow-y:auto}
73
+ .gp-col--left{flex:0 1 200px;min-width:130px;overflow:hidden}
74
+ .gp-col-left__scroll{flex:1;min-height:0;overflow-y:auto}
71
75
  .gp-col--mid{flex:1 1 0;min-width:150px}
72
76
  .gp-col--right{flex:0 1 340px;min-width:190px;display:flex;flex-direction:column;min-height:0}
73
77
  /* drag handle between two columns: a thin hit area with a hairline center that
@@ -81,10 +85,25 @@ var module = { exports: {} }; var exports = module.exports;
81
85
  .gp-branch-group__head{display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:11px;color:var(--dsw-alias-label-tertiary);cursor:pointer;user-select:none}
82
86
  .gp-branch-row{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 22px;cursor:pointer;border-radius:6px;font-size:12px;color:var(--dsw-alias-label-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
83
87
  .gp-branch-row:hover{background:var(--dsw-alias-interactive-bg-hover)}
84
- .gp-branch-row--active{color:var(--dsw-alias-state-business-primary)}
88
+ .gp-branch-row--active,.gp-branch-row--active:hover{color:var(--dsw-alias-state-business-primary);background:var(--gp-select-bg);box-shadow:var(--gp-select-bar)}
85
89
  .gp-branch-row--current{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-state-business-primary))}
86
90
  .gp-branch-row__track{margin-left:auto;font-size:10px;color:var(--dsw-alias-label-tertiary)}
87
91
 
92
+ /* left-column footer status bar: repo icon (left) + branch sync (right) */
93
+ .gp-statusbar{flex:none;display:flex;align-items:center;gap:8px;min-height:30px;padding:4px 8px;border-top:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);font-size:11px}
94
+ .gp-statusbar__repo{flex:none;display:inline-flex;align-items:center;color:var(--dsw-alias-label-secondary);text-decoration:none;border-radius:6px;padding:3px 5px}
95
+ a.gp-statusbar__repo:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-business-primary)}
96
+ .gp-statusbar__repo--none{color:var(--dsw-alias-label-tertiary)}
97
+ .gp-statusbar__ic{flex:none;display:inline-flex;align-items:center}
98
+ .gp-statusbar__sync{display:flex;align-items:center;gap:6px;margin-left:auto;min-width:0}
99
+ .gp-statusbar__state{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary)}
100
+ .gp-statusbar__state--ok{color:var(--dsw-alias-state-success-primary)}
101
+ .gp-statusbar__state--warn{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-state-business-primary))}
102
+ .gp-statusbar__btn{flex:none;width:24px;height:24px;border-radius:50%}
103
+ .gp-statusbar--busy .gp-statusbar__btn{animation:gp-spin 1s linear infinite}
104
+ .gp-statusbar__pull{flex:none;height:24px;padding:0 8px;font-size:11px}
105
+ @keyframes gp-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
106
+
88
107
  /* history */
89
108
  .gp-history{display:flex;flex-direction:column;height:100%;min-height:0}
90
109
  /* overscroll-behavior:contain keeps a wheel gesture that reaches the top/bottom
@@ -97,10 +116,11 @@ var module = { exports: {} }; var exports = module.exports;
97
116
  .gp-commit-hash{font-family:var(--dsw-font-mono,monospace);font-size:11px;color:var(--dsw-alias-label-tertiary)}
98
117
  .gp-commit-author{font-size:11px;color:var(--dsw-alias-label-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
99
118
  .gp-commit-date{font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap}
100
- .gp-ref-chip{display:inline-block;padding:0 6px;margin-right:4px;border-radius:8px;font-size:10px;line-height:16px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2)}
101
- .gp-ref-chip--head{background:var(--dsw-alias-state-business-primary);color:#fff;border-color:transparent}
102
- .gp-ref-chip--remote{color:var(--dsw-alias-label-tertiary)}
119
+ .gp-ref-chip{display:inline-block;padding:0 6px;margin-right:4px;border-radius:8px;font-size:10px;line-height:16px;background:color-mix(in srgb,var(--dsw-alias-label-primary) 7%,transparent);color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2)}
120
+ .gp-ref-chip--remote{color:var(--dsw-alias-label-secondary)}
103
121
  .gp-ref-chip--tag{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-label-secondary))}
122
+ /* --head last so the current-branch fill always wins if a ref carries two kinds */
123
+ .gp-ref-chip--head{background:var(--dsw-alias-state-business-primary);color:#fff;border-color:transparent;font-weight:700;font-size:11px}
104
124
  .gp-graph-cell{position:relative}
105
125
  .gp-graph-svg{display:block}
106
126
  .gp-search{flex:1;min-width:60px;height:28px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:12px;padding:0 10px;box-sizing:border-box}
@@ -291,7 +311,7 @@ var module = { exports: {} }; var exports = module.exports;
291
311
  * dimmed backdrop, closed by Esc / backdrop click / the close button. */
292
312
  .gp-modal-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:40px;background:color-mix(in srgb,var(--dsw-alias-bg-base,#000) 62%,transparent);backdrop-filter:blur(2px);animation:gp-fade-in .12s ease}
293
313
  @keyframes gp-fade-in{from{opacity:0}to{opacity:1}}
294
- .gp-modal{display:flex;flex-direction:column;width:min(920px,86vw);height:min(680px,82vh);border:1px solid var(--dsw-alias-border-l1,var(--dsw-alias-border-l2));border-radius:14px;background:var(--dsw-alias-bg-layer-2);box-shadow:0 24px 64px rgba(0,0,0,.32),0 4px 12px rgba(0,0,0,.18);overflow:hidden;animation:gp-modal-in .18s cubic-bezier(.16,1,.3,1)}
314
+ .gp-modal{display:flex;flex-direction:column;position:relative;width:min(920px,86vw);height:min(680px,82vh);border:1px solid var(--dsw-alias-border-l1,var(--dsw-alias-border-l2));border-radius:14px;background:var(--dsw-alias-bg-layer-2);box-shadow:0 24px 64px rgba(0,0,0,.32),0 4px 12px rgba(0,0,0,.18);overflow:hidden;animation:gp-modal-in .18s cubic-bezier(.16,1,.3,1)}
295
315
  @keyframes gp-modal-in{from{transform:translateY(12px) scale(.97);opacity:0}to{transform:none;opacity:1}}
296
316
  .gp-modal__bar{display:flex;align-items:center;gap:10px;padding:11px 12px 11px 14px;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);flex:none}
297
317
  .gp-modal__fileicon{display:inline-flex;align-items:center;color:var(--dsw-alias-label-tertiary);flex:none}
@@ -307,6 +327,16 @@ var module = { exports: {} }; var exports = module.exports;
307
327
  .gp-modal--sm{width:min(460px,92vw);height:auto;max-height:min(560px,86vh)}
308
328
  .gp-modal__form{flex:1;min-height:0;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
309
329
  .gp-modal__confirmtext{font-size:13px;line-height:1.6;color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word}
330
+ /* pull-scope line: highlighted + bold summary of the incoming fast-forward */
331
+ .gp-pullscope{margin-top:10px;padding:8px 12px;font-size:13px;font-weight:600;line-height:1.5;color:var(--dsw-alias-label-primary);background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 9%,transparent);border:1px solid color-mix(in srgb,var(--dsw-alias-state-business-primary) 22%,transparent);border-radius:8px}
332
+ .gp-pullscope--loading{font-weight:400;color:var(--dsw-alias-label-tertiary);background:color-mix(in srgb,var(--dsw-alias-label-primary) 5%,transparent);border-color:var(--dsw-alias-border-l2)}
333
+ .gp-pullscope__add{color:var(--dsw-alias-state-success-primary)}
334
+ .gp-pullscope__del{color:var(--dsw-alias-state-error-primary)}
335
+ /* busy overlay (e.g. pull in flight): a scrim + spinner + indeterminate bar */
336
+ .gp-modal__overlay{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;background:color-mix(in srgb,var(--dsw-alias-bg-layer-2) 82%,transparent);backdrop-filter:blur(1.5px);border-radius:inherit;animation:gp-fade-in .12s ease}
337
+ .gp-modal__overlay-label{font-size:12px;color:var(--dsw-alias-label-secondary)}
338
+ @keyframes gp-fade-in{from{opacity:0}to{opacity:1}}
339
+ .gp-spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-state-business-primary);animation:gp-spin .7s linear infinite}
310
340
  .gp-modal__check{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dsw-alias-label-secondary);cursor:pointer;user-select:none}
311
341
  .gp-input{width:100%;box-sizing:border-box;height:30px;padding:0 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:6px;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:13px}
312
342
  .gp-input:focus{outline:none;border-color:var(--dsw-alias-state-business-primary)}
@@ -440,7 +470,10 @@ var module = { exports: {} }; var exports = module.exports;
440
470
  .gp-subhead__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--dsw-alias-label-tertiary)}
441
471
 
442
472
  /* Overview: single column, each pane fills width + height. */
473
+ .gp-overview--compact{flex-direction:column}
443
474
  .gp-overview--compact .gp-col{width:100%}
475
+ /* The drill pane grows; the footer status bar keeps its own height below it. */
476
+ .gp-overview--compact>.gp-col{flex:1 1 auto;min-height:0;height:auto}
444
477
  /* Two-line commit rows: subject on top, hash\xB7author\xB7time below; the graph
445
478
  * cell stretches to the taller row so lane edges still connect. */
446
479
  .gp-commit-row--compact{align-items:stretch}
@@ -495,12 +528,12 @@ var module = { exports: {} }; var exports = module.exports;
495
528
  @media (prefers-reduced-motion:reduce){
496
529
  .gp-sheet,.gp-sheet-backdrop,.gp-modal,.gp-modal-backdrop{animation:none}
497
530
  }
498
- `,jt=!1;function _n(){if(jt||typeof document>"u")return;let e="dsh-git-panel/client.css";if(document.querySelector(`style[data-plugin-css="${e}"]`)!==null){jt=!0;return}let t=document.createElement("style");t.dataset.plugin="@xbzbing/dsh-git-panel",t.dataset.pluginCss=e,t.textContent=Ir,document.head.appendChild(t),jt=!0}var Sn={"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","common.cancel":"\u53D6\u6D88","ops.aiHint":"\u63D0\u793A\uFF1A\u7ED9 AI \u591A\u4E00\u70B9\u4FE1\u4EFB\uFF0C\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u8BA9 AI \u76F4\u63A5\u6267\u884C Git \u64CD\u4F5C\u3002","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","overview.createTag":"\u521B\u5EFA\u6807\u7B7E","overview.revert":"\u8FD8\u539F\u6B64\u63D0\u4EA4","overview.reset":"\u91CD\u7F6E\u5230\u6B64","tag.createTitle":"\u5728\u6B64\u63D0\u4EA4\u521B\u5EFA\u6807\u7B7E","tag.namePlaceholder":"\u6807\u7B7E\u540D","tag.annotated":"\u9644\u6CE8\u6807\u7B7E\uFF08\u5E26\u8BF4\u660E\uFF09","tag.messagePlaceholder":"\u6807\u7B7E\u8BF4\u660E","tag.create":"\u521B\u5EFA\u6807\u7B7E","tag.deleteTitle":"\u5220\u9664\u6807\u7B7E","tag.deleteConfirm":"\u786E\u5B9A\u5220\u9664\u6807\u7B7E\u300C{name}\u300D\uFF1F","tag.deleteOne":"\u5220\u9664\u6807\u7B7E\u300C{name}\u300D","ops.dirtyWarn":"\u68C0\u6D4B\u5230\u672A\u63D0\u4EA4\u6539\u52A8\uFF0C\u8FD9\u4E9B\u6539\u52A8\u53EF\u80FD\u662F dsh AI \u6B63\u5728\u8FDB\u884C\u7684\u5DE5\u4F5C\u3002","revert.title":"\u8FD8\u539F\u63D0\u4EA4","revert.body":"\u5C06\u5728\u5F53\u524D HEAD \u8FFD\u52A0\u4E00\u4E2A\u53CD\u5411\u63D0\u4EA4\uFF0C\u8FD8\u539F {ref} \u7684\u6539\u52A8\u3002\u4E0D\u4F1A\u4E22\u5F03\u4F60\u7684\u5DE5\u4F5C\u533A\u6539\u52A8\u3002","revert.confirm":"\u8FD8\u539F","reset.title":"\u91CD\u7F6E\u5206\u652F","reset.body":"\u5C06\u628A\u5F53\u524D\u5206\u652F\u7684 HEAD \u4ECE {from} \u79FB\u52A8\u5230 {to}\u3002","reset.modeSoft":"\u8F6F\u91CD\u7F6E\uFF08--soft\uFF09","reset.softHint":"\u79FB\u52A8 HEAD\uFF0C\u6539\u52A8\u4FDD\u7559\u5728\u6682\u5B58\u533A\u3002","reset.modeMixed":"\u6DF7\u5408\u91CD\u7F6E\uFF08--mixed\uFF0C\u9ED8\u8BA4\uFF09","reset.mixedHint":"\u79FB\u52A8 HEAD\uFF0C\u6539\u52A8\u4FDD\u7559\u5728\u5DE5\u4F5C\u533A\u3002","reset.modeHard":"\u786C\u91CD\u7F6E\uFF08--hard\uFF09","reset.hardHint":"\u79FB\u52A8 HEAD \u5230\u6B64\u63D0\u4EA4\u5E76\u4E22\u5F03\u6240\u6709\u672A\u63D0\u4EA4\u6539\u52A8\uFF08\u672A\u63D0\u4EA4\u6539\u52A8\u65E0\u6CD5\u6062\u590D\uFF09\u3002","reset.hardOrphan":"\u5F53\u524D\u5206\u652F\u4E0A\u665A\u4E8E\u76EE\u6807\u7684\u63D0\u4EA4\u4F1A\u79BB\u5F00\u5206\u652F\uFF08\u4ECD\u53EF\u7528 git reflog \u627E\u56DE\uFF09\u3002","reset.hardWarn":"\u4EE5\u4E0B\u672A\u63D0\u4EA4\u6539\u52A8\u5C06\u88AB\u6C38\u4E45\u4E22\u5F03\uFF1A","reset.lostMore":"\u2026\u8FD8\u6709\u66F4\u591A\u672A\u63D0\u4EA4\u6539\u52A8\u672A\u663E\u793A\uFF08\u5217\u8868\u5DF2\u622A\u65AD\uFF09","reset.hardAck":"\u6211\u5DF2\u4E86\u89E3\uFF0C\u786E\u8BA4\u4E22\u5F03\u8FD9\u4E9B\u672A\u63D0\u4EA4\u6539\u52A8","reset.hardAckClean":"\u6211\u5DF2\u4E86\u89E3\u6B64\u64CD\u4F5C\u7684\u540E\u679C\uFF0C\u786E\u8BA4\u91CD\u7F6E","reset.confirm":"\u91CD\u7F6E","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","changes.stash":"\u8D2E\u85CF\u66F4\u6539","stash.title":"\u8D2E\u85CF\u5F53\u524D\u66F4\u6539","stash.messagePlaceholder":"\u8D2E\u85CF\u8BF4\u660E\uFF08\u53EF\u9009\uFF09","stash.save":"\u8D2E\u85CF","stash.section":"\u8D2E\u85CF","stash.onBranch":"\u4F4D\u4E8E {branch}","stash.apply":"\u5E94\u7528","stash.pop":"\u5F39\u51FA","stash.drop":"\u4E22\u5F03","stash.dropTitle":"\u4E22\u5F03\u8D2E\u85CF","stash.dropConfirm":"\u786E\u5B9A\u4E22\u5F03\u6B64\u8D2E\u85CF\u6761\u76EE\uFF1F\u4E22\u5F03\u540E\u65E0\u6CD5\u6062\u590D\uFF1A{name}","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}","stats.partial":"\u7EDF\u8BA1\u5DF2\u7B80\u5316","stats.partialHint":"\u53D8\u66F4\u6570\u91CF\u8F83\u591A\uFF0C\u5DF2\u8DF3\u8FC7\u672A\u8DDF\u8E2A\u6587\u4EF6\u884C\u6570\u4E0E\u6700\u8FD1\u53D8\u66F4\u65F6\u95F4\u7684\u7CBE\u786E\u7EDF\u8BA1\u4EE5\u4FDD\u6301\u9762\u677F\u6D41\u7545\u3002","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\u64CD\u4F5C\u88AB\u963B\u6B62","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","error.conflict":"\u8D2E\u85CF\u5E94\u7528\u4EA7\u751F\u51B2\u7A81\uFF0C\u8D2E\u85CF\u6761\u76EE\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u624B\u52A8\u89E3\u51B3\u51B2\u7A81\u540E\u518D\u8BD5","error.revertConflict":"\u8FD8\u539F\u4F1A\u4E0E\u5F53\u524D\u5185\u5BB9\u51B2\u7A81\uFF0C\u5DF2\u81EA\u52A8\u53D6\u6D88\u8FD8\u539F\uFF08\u672A\u6539\u52A8\u4F60\u7684\u5DE5\u4F5C\u533A\uFF09","error.revertStuck":"\u8FD8\u539F\u4EA7\u751F\u51B2\u7A81\u4E14\u81EA\u52A8\u53D6\u6D88\u5931\u8D25\uFF0C\u4ED3\u5E93\u4ECD\u5904\u4E8E\u8FD8\u539F\u4E2D\uFF0C\u8BF7\u624B\u52A8\u6267\u884C git revert --abort \u6216\u89E3\u51B3\u51B2\u7A81","error.revertMerge":"\u8FD9\u662F\u4E00\u4E2A\u5408\u5E76\u63D0\u4EA4\uFF0C\u9762\u677F\u6682\u4E0D\u652F\u6301\u8FD8\u539F\uFF08\u9700\u6307\u5B9A\u4E3B\u7EBF\u7236\u63D0\u4EA4\uFF09\uFF0C\u8BF7\u5728\u547D\u4EE4\u884C\u7528 git revert -m \u5904\u7406","error.indexBusy":"Git \u6B63\u5FD9\uFF08\u53E6\u4E00\u8FDB\u7A0B\u5360\u7528\u7D22\u5F15\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5","error.notFound":"\u76EE\u6807\u4E0D\u5B58\u5728\uFF08\u6807\u7B7E\u6216\u8D2E\u85CF\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\uFF09","error.invalidName":"\u540D\u79F0\u4E0D\u5408\u6CD5","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.graphTitle":"\u63D0\u4EA4\u5386\u53F2\u56FE\u7EBF\u6761\u6837\u5F0F","cfg.graphHint":"\u9009\u62E9\u63D0\u4EA4\u5386\u53F2\u56FE\u7684\u8FDE\u7EBF\u753B\u6CD5\uFF1A\u5E73\u884C\u7EBF\u4E3A VSCode / \u56FE\u5F62\u754C\u9762\u98CE\u683C\uFF0C\u5206\u652F\u5404\u5360\u4E00\u5217\u3001\u5171\u4EAB\u7956\u5148\u4EE5\u5E76\u884C\u7EBF\u8868\u793A\uFF1B\u7D27\u51D1\u4E3A git log \u547D\u4EE4\u884C\u98CE\u683C\uFF0C\u5171\u4EAB\u7956\u5148\u5408\u5E76\u4E3A\u4E00\u5217\u3001\u7EBF\u66F4\u5C11\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.graphParallel":"\u5E73\u884C\u7EBF\uFF08VSCode \u98CE\u683C\uFF09","cfg.graphCompact":"\u7D27\u51D1\uFF08git log \u98CE\u683C\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"},Cn={"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","common.cancel":"Cancel","ops.aiHint":"Tip: Trust AI more, try direct Git\u2011operation execution by AI.","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","overview.createTag":"Create tag","overview.revert":"Revert this commit","overview.reset":"Reset to here","tag.createTitle":"Create a tag at this commit","tag.namePlaceholder":"Tag name","tag.annotated":"Annotated tag (with message)","tag.messagePlaceholder":"Tag message","tag.create":"Create tag","tag.deleteTitle":"Delete tag","tag.deleteConfirm":'Delete tag "{name}"?',"tag.deleteOne":'Delete tag "{name}"',"ops.dirtyWarn":"There are uncommitted changes \u2014 they may be work the dsh AI is doing.","revert.title":"Revert commit","revert.body":"Appends a reverse commit at the current HEAD that undoes the changes in {ref}. Your working-tree changes are kept.","revert.confirm":"Revert","reset.title":"Reset branch","reset.body":"Moves the current branch HEAD from {from} to {to}.","reset.modeSoft":"Soft (--soft)","reset.softHint":"Moves HEAD; changes stay staged.","reset.modeMixed":"Mixed (--mixed, default)","reset.mixedHint":"Moves HEAD; changes stay in the working tree.","reset.modeHard":"Hard (--hard)","reset.hardHint":"Moves HEAD to this commit and discards all uncommitted changes (uncommitted changes cannot be recovered).","reset.hardOrphan":"Commits after the target leave the branch (still recoverable via git reflog).","reset.hardWarn":"The following uncommitted changes will be permanently discarded:","reset.lostMore":"\u2026 more uncommitted changes not shown (list capped)","reset.hardAck":"I understand these uncommitted changes will be lost","reset.hardAckClean":"I understand the consequences and confirm the reset","reset.confirm":"Reset","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","changes.stash":"Stash changes","stash.title":"Stash current changes","stash.messagePlaceholder":"Stash message (optional)","stash.save":"Stash","stash.section":"Stashes","stash.onBranch":"on {branch}","stash.apply":"Apply","stash.pop":"Pop","stash.drop":"Drop","stash.dropTitle":"Drop stash","stash.dropConfirm":"Drop this stash? This cannot be undone: {name}","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","stats.partial":"simplified","stats.partialHint":"Large change set \u2014 untracked line counts and last-change time are omitted to keep the panel responsive.","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 this operation","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","error.conflict":"Applying the stash produced conflicts; the stash entry is kept \u2014 resolve them and retry","error.revertConflict":"The revert would conflict with the current content; it was cancelled automatically (your working tree is unchanged)","error.revertStuck":"The revert conflicted and could not be auto-cancelled; the repository is mid-revert \u2014 run `git revert --abort` or resolve it manually","error.revertMerge":"This is a merge commit; the panel cannot revert it (a mainline parent is required) \u2014 use `git revert -m` on the command line","error.indexBusy":"Git is busy (another process holds the index lock); try again shortly","error.notFound":"Target not found (the tag or stash may have been removed)","error.invalidName":"Invalid name","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.graphTitle":"Commit graph line style","cfg.graphHint":"Choose how the commit graph draws its lines: parallel is the VSCode / GUI style \u2014 each branch keeps its own column and a shared ancestor shows as parallel lines; compact is the git log style \u2014 a shared ancestor merges into one column with fewer lines. Saved changes apply immediately.","cfg.graphParallel":"Parallel (VSCode style)","cfg.graphCompact":"Compact (git log style)","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 ut=require("react");var Xr=new Set(["cwd-unavailable"]),Ut=3e4,Vr=6e4,pt=class{constructor(t,n){this.remote=t;this.sessionId=n}view={state:"cold"};listeners=new Set;timer;inflight;pendingRefresh=!1;disposed=!1;pollMs=Ut;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||Ut,this.setView({state:"ready",snapshot:t.value});else if(t.error.code!=="cancelled")if(Xr.has(t.error.code))this.pollMs=Vr,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||Ut,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 Kr="/api",Jr="gitPanel";function Br(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,Kr,r,a,i)}catch{}}function Or(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 de(e,t){return!e.ok||e.value.kind!==t?null:e.value}function Ce(e){return e!==void 0&&e!==""}var Nn=new WeakMap;function We(e){let t=Nn.get(e);if(t!==void 0)return t;let n=async(a,i,o)=>{let s=Br(e);if(s===void 0)return{ok:!1,error:{code:"git-unavailable",message:"no connection"}};try{let l=await s(`${Jr}/${a}`,{args:{request:i}},o);return Or(l)}catch(l){return{ok:!1,error:{code:"git-unavailable",message:l instanceof Error?l.message:String(l)}}}},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 Nn.set(e,r),r}var Ee=new Map,Tn,Qt;function En(e){Qt=e,Tn=We(e)}function je(e){let t=Ee.get(e);if(t===void 0){let n=Tn??(Qt?We(Qt):void 0);t=new pt(n??Ur(),e),Ee.set(e,t)}return t}var qr=6e4,gt=new Map;function Wr(e){let t=gt.get(e);t!==void 0&&(clearTimeout(t),gt.delete(e)),Pe.set(e,(Pe.get(e)??0)+1)}function jr(e){let t=(Pe.get(e)??1)-1;if(t>0){Pe.set(e,t);return}Pe.delete(e);let n=setTimeout(()=>{gt.delete(e),!((Pe.get(e)??0)>0)&&(Ee.get(e)?.dispose(),Ee.delete(e))},qr);gt.set(e,n)}var Pe=new Map;function Ue(){for(let e of Ee.values())e.resync()}function Rn(){for(let e of Ee.values())e.dispose();Ee.clear()}function Ur(){let e=async()=>({ok:!1,error:{code:"git-unavailable"}});return{snapshot:e,run:e,query:e,suggest:e,version:e}}function ft(e){let[,t]=(0,ut.useState)(0),n=e?je(e):void 0;return(0,ut.useEffect)(()=>{if(n===void 0||e===void 0)return;Wr(e);let r=n.subscribe(()=>t(a=>a+1));return n.ensure(),()=>{r(),jr(e)}},[n,e]),n?n.getSnapshot():{state:"cold"}}var T=require("react");var Gn="[data-conversation-tabs]",Ye='[data-conversation-tabs] button[role="tab"]',Yt=new Map,Qe=new Map;function Mn(e,t){let n=Qe.get(e);if(n!==void 0&&n.size>0){for(let r of n)r(t);return}Yt.set(e,t)}function Dn(e){let t=Yt.get(e);return t===void 0?null:(Yt.delete(e),t)}function An(e,t){let n=Qe.get(e);return n===void 0&&(n=new Set,Qe.set(e,n)),n.add(t),()=>{let r=Qe.get(e);r!==void 0&&(r.delete(t),r.size===0&&Qe.delete(e))}}var Qr=6e4,Zt=new Map;function Pn(e,t){Zt.set(e,{tab:t,leftAt:Date.now()})}function Ln(e){let t=Zt.get(e);return t===void 0?null:Date.now()-t.leftAt>Qr?(Zt.delete(e),null):t.tab}function Hn(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(Ye);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}function Fn(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(Ye);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")==="true";return!1}function zn(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(Ye);for(let n of t)if((n.textContent??"").trim()!==e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}var d=require("react"),At=require("react-dom");var F=require("react");function ge(e,t=15){return(0,F.createElement)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"},e)}function mt({size:e}){return ge([(0,F.createElement)("circle",{key:"c",cx:8,cy:8,r:2.4}),(0,F.createElement)("line",{key:"l1",x1:8,y1:1.5,x2:8,y2:5.6}),(0,F.createElement)("line",{key:"l2",x1:8,y1:10.4,x2:8,y2:14.5})],e)}function $n({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M4 2v8"}),(0,F.createElement)("path",{key:"b",d:"M2 4h4"}),(0,F.createElement)("circle",{key:"c",cx:4,cy:12,r:1.6}),(0,F.createElement)("circle",{key:"d",cx:12,cy:4,r:1.6}),(0,F.createElement)("path",{key:"e",d:"M12 6v4"}),(0,F.createElement)("path",{key:"f",d:"M10 12h4"})],e)}function en({size:e}){return ge([(0,F.createElement)("circle",{key:"a",cx:4,cy:3,r:1.6}),(0,F.createElement)("circle",{key:"b",cx:4,cy:13,r:1.6}),(0,F.createElement)("circle",{key:"c",cx:12,cy:5,r:1.6}),(0,F.createElement)("path",{key:"d",d:"M4 4.6v6.8"}),(0,F.createElement)("path",{key:"e",d:"M12 6.6c0 3-4 2.4-8 4"})],e)}function Le({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M2 7V3h4l8 8-4 4z"}),(0,F.createElement)("circle",{key:"b",cx:4.5,cy:5.5,r:.8,fill:"currentColor"})],e)}function Ne({size:e,open:t}){return ge([(0,F.createElement)("path",{key:"a",d:t?"M3 6l5 5 5-5":"M6 3l5 5-5 5"})],e)}function He({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M4 4l8 8M12 4l-8 8"})],e)}function Fe({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M10 3L5 8l5 5"}),(0,F.createElement)("path",{key:"b",d:"M5 8h8"})],e)}function In({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M2 3h12l-4.5 5.5V13L6.5 11V8.5z"})],e)}function ht({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M13 8a5 5 0 1 1-1.5-3.5"}),(0,F.createElement)("path",{key:"b",d:"M13 2v3h-3"})],e)}function Xn({size:e}){return ge([(0,F.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,F.createElement)("path",{key:"b",d:"M13 11.6v2.8M11.6 13h2.8"})],e)}function Vn({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M4 2h5l3 3v9H4z"}),(0,F.createElement)("path",{key:"b",d:"M9 2v3h3"})],e)}function tn({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M2 5.5h12V13H2z"}),(0,F.createElement)("path",{key:"b",d:"M1.5 3h13v2.5h-13z"}),(0,F.createElement)("path",{key:"c",d:"M6.5 8.5h3"})],e)}function Kn({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M3 4.5h10"}),(0,F.createElement)("path",{key:"b",d:"M5.5 4.5V3h5v1.5"}),(0,F.createElement)("path",{key:"c",d:"M4.5 4.5l.7 9h5.6l.7-9"})],e)}function Jn({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M3 7a5 5 0 1 1 1.3 3.4"}),(0,F.createElement)("path",{key:"b",d:"M3 3.5V7h3.5"})],e)}function yt({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M13 3v10"}),(0,F.createElement)("path",{key:"b",d:"M10.5 8L3 3.5v9z",fill:"currentColor"})],e)}function Bn({size:e}){return ge([(0,F.createElement)("path",{key:"a",d:"M5 2.5h4l2.5 2.5v7.5h-6.5z"}),(0,F.createElement)("path",{key:"b",d:"M9 2.5V5h2.5"}),(0,F.createElement)("path",{key:"c",d:"M11 12.5v1.5h-6.5V6"})],e)}function On({size:e=15}){return(0,F.createElement)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor"},(0,F.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 qn(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 Wn(e,t){let n=[],r=[],a=[],i=[],o=0,s=()=>{if(i.length===0)return o++;let c=Math.min(...i);return i.splice(i.indexOf(c),1),c},l=c=>{c!==null&&!i.includes(c)&&i.push(c)};for(let c of e){let p=b=>{let _=r.findIndex(P=>P===b);return _===-1&&(_=r.findIndex(P=>P===null),_===-1&&(_=r.length,r.push(null),a.push(null)),r[_]=b,a[_]=s()),_},g=p(c.hash),m=a[g],k=[...r],v=[...a],x=c.parents,E=x.length>=2;for(let b=0;b<r.length;b++)b!==g&&r[b]===c.hash&&(l(a[b]),r[b]=null,a[b]=null);let G=-1,X=[];if(x.length===0)l(a[g]),r[g]=null,a[g]=null;else{let b=x[0],_=t==="compact"?r.findIndex((P,z)=>P===b&&z!==g):-1;if(_===-1)r[g]=b,G=g;else{let P=Math.min(g,_),z=Math.max(g,_);r[P]=b,l(a[z]),r[z]=null,a[z]=null,G=P}for(let P=1;P<x.length;P++)X.push(p(x[P]))}let V=[];for(let b=0;b<k.length;b++){let _=k[b];if(_!==null)if(_===c.hash)V.push({fromLane:b,toLane:g,color:v[b],kind:"into"});else{let P=r[b]===_?b:r.findIndex(z=>z===_);P!==-1&&V.push({fromLane:b,toLane:P,color:v[b],kind:"pass"})}}G!==-1&&V.push({fromLane:g,toLane:G,color:a[G],kind:"out"});for(let b of X)V.push({fromLane:g,toLane:b,color:a[b],kind:"out"});for(n.push({commit:c,lane:g,color:m,edges:V,merge:E});r.length>0&&r[r.length-1]===null;)r=r.slice(0,-1),a=a.slice(0,-1)}return n}function jn(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 l=o===r.length-1,c=a.children.find(p=>p.name===s&&p.dir===!l);c===void 0&&(c={name:s,path:i,dir:!l,children:[],...l?{meta:n.meta}:{}},a.children.push(c)),a=c}}return Un(t),Qn(t.children)}function Un(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)Un(t)}function Qn(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:Qn(n.children)}})}function ze(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 Ze(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 nn(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 bt={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"!",typechange:"T"};function vt(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 Yr={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 rn(e){let t=e.lastIndexOf(".");return t<0?null:Yr[e.slice(t+1).toLowerCase()]??null}function Yn(e){return/^Binary files .* differ$/m.test(e)||/^GIT binary patch$/m.test(e)}function Zn(e){return rn(e)!==null}function er(e){return/\.svg$/i.test(e)}function Zr(e){let t=an(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 ea(e){let t=an(e);return t.length===0?!1:t.every(n=>n.startsWith("-")||n.startsWith(" "))&&t.some(n=>n.startsWith("-"))&&/^\+\+\+ \/dev\/null/m.test(e)}function an(e){let t=e.split(`
499
- `),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 tr(e){let t=0,n=0;for(let r of an(e))r.startsWith("+")?t++:r.startsWith("-")&&n++;return{add:t,del:n}}var ta=/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;function nr(e){let t=[],n=e.split(`
500
- `),r=0,a=0,i=!0,o=!1,s=0;for(;s<n.length&&!n[s].startsWith("@@");s++);for(;s<n.length;s++){let l=n[s];if(l.startsWith("@@")){let g=ta.exec(l);if(g){let m=Number(g[1]),k=Number(g[3]),v=m-k;if(i)k>1&&t.push($e({rightStart:1,count:k-1,delta:v,atStart:!0,atEnd:!1}));else{let x=k-a;x>0&&t.push($e({rightStart:a,count:x,delta:v,atStart:!1,atEnd:!1}))}r=m,a=k,i=!1}t.push({kind:"hunk",leftNo:null,rightNo:null,leftText:null,rightText:null,text:l});continue}if(l.startsWith("\\"))continue;let c=l[0],p=l.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&&!Zr(e)&&!ea(e)&&t.push($e({rightStart:a,count:null,delta:r-a,atStart:!1,atEnd:!0})),na(t)}function $e(e){return{kind:"gap",leftNo:null,rightNo:null,leftText:null,rightText:null,gap:e}}function na(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 l=0;l<s;l++){let c=a[l],p=o[l];if(c&&p){let g=ra(c.leftText??"",p.rightText??"");t.push({kind:"mod",leftNo:c.leftNo,rightNo:p.rightNo,leftText:c.leftText,rightText:p.rightText,...g!==null?{leftWord:g.left,rightWord:g.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 ra(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 aa(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 xe=20;function on(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 rr(e,t,n,r,a,i){let o=e.findIndex(g=>g.kind==="gap"&&g.gap?.rightStart===t);if(o<0)return e.slice();let s=e[o].gap,l=aa(s.delta,r,a),c=[];if(s.atEnd)return c.push(...l),!i&&a.length>0&&c.push($e({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(...l);else if(n==="down"){c.push(...l);let g=p-a.length;c.push($e({rightStart:s.rightStart+a.length,count:g,delta:s.delta,atStart:!1,atEnd:!1}))}else{let g=p-a.length;c.push($e({rightStart:s.rightStart,count:g,delta:s.delta,atStart:s.atStart,atEnd:!1})),c.push(...l)}return[...e.slice(0,o),...c,...e.slice(o+1)]}var Rt=require("@deepseek-ai/dsh-client-ui-primitives");function ar(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 l=a.text.slice(o[s]-r,o[s+1]-r);l!==""&&n[s].push({text:l,style:a.style})}r=i}return n}var fe=require("react"),wt=5e3,xt=120;function kt(e,t){let[n,r]=(0,fe.useState)(e);return(0,fe.useEffect)(()=>{let a=setTimeout(()=>r(e),t);return()=>clearTimeout(a)},[e,t]),n}function _t(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 sn(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 l of e){let c=o+l.text.length,p=Math.max(n,o),g=Math.min(r,c);if(g>p&&i.push((0,fe.createElement)("span",{key:`${a}-${s++}`,style:l.style},l.text.slice(p-o,g-o))),o=c,o>=r)break}return i}function St(e,t,n,r,a,i){let o=[],s=0,l=[...t].sort((c,p)=>c[0]-p[0]);for(let[c,p]of l){if(c<s)continue;c>s&&o.push(...sn(n,e,s,c,`${r}b${s}`));let g=a!==null&&a[0]===c&&a[1]===p;o.push((0,fe.createElement)("mark",{key:`mk${r}-${c}`,className:`gp-find-hit${g?" gp-find-hit--active":""}`,...g?{ref:i}:{}},sn(n,e,c,p,`mk${r}-${c}`))),s=p}return s<e.length&&o.push(...sn(n,e,s,e.length,`${r}e`)),o}function Ct(e){return(0,fe.createElement)("div",{key:"find",className:"gp-find"},[(0,fe.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,fe.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,fe.createElement)("span",{key:"cnt",className:"gp-find__count"},e.query===""?"":e.matches===0?e.t("files.findNoMatch"):`${e.active+1}/${e.matches}`),(0,fe.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,fe.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,fe.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 _e=require("react");function Nt(e,t,n){let r=n(`diff.${e}`);return(0,_e.createElement)("div",{className:`gp-imgcmp__pane gp-imgcmp__pane--${e}`},[(0,_e.createElement)("div",{key:"head",className:"gp-imgcmp__head"},r),t===void 0?(0,_e.createElement)("div",{key:"missing",className:"gp-imgcmp__missing"},n("diff.imageMissing")):(0,_e.createElement)("div",{key:"img",className:"gp-imgcmp__img"},(0,_e.createElement)("img",{src:t,alt:r}))])}function ir({oldUrl:e,newUrl:t,mode:n,t:r}){return n==="before"?(0,_e.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Nt("before",e,r)):n==="after"?(0,_e.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Nt("after",t,r)):(0,_e.createElement)("div",{className:"gp-imgcmp"},[Nt("before",e,r),Nt("after",t,r)])}var Gt=(0,w.memo)(function({text:t,mode:n,path:r,remote:a,sessionId:i,imageSpec:o,t:s}){let l=(0,w.useMemo)(()=>nr(t),[t]),c=Yn(t),p=(0,Rt.useCodeHighlighter)(r===void 0?void 0:(0,Rt.languageForPath)(r)),[g,m]=(0,w.useState)(l);(0,w.useEffect)(()=>{m(l)},[l]);let k=sa(g,m,a,i,r,o),v=r!==void 0&&er(r),[x,E]=(0,w.useState)("render");(0,w.useEffect)(()=>{E("render")},[r]);let X=(c||v)&&r!==void 0&&Zn(r)&&a!==void 0&&i!==void 0&&o!==void 0&&(!v||x==="render"),V=da(X?a:void 0,X?i:void 0,X?r:void 0,X?o:void 0),[b,_]=(0,w.useState)(!1),[P,z]=(0,w.useState)(""),[U,C]=(0,w.useState)(!1),[$,ne]=(0,w.useState)(0),Q=(0,w.useRef)(null),re=(0,w.useRef)(null),ae=(0,w.useRef)(null);(0,w.useEffect)(()=>{_(!1),z(""),ne(0)},[t,r]);let q=(0,w.useMemo)(()=>ia(n,g),[n,g]),Y=(0,w.useMemo)(()=>q.map(Z=>({key:Z.key,text:Z.text.toLowerCase()})),[q]),N=kt(P,xt),le=U?N:N.toLowerCase(),A=U?q:Y,S=(0,w.useMemo)(()=>oa(A,le),[A,le]);(0,w.useEffect)(()=>{ne(0)},[le]);let L=S.length===0?0:Math.min($,S.length-1),K=S.length>0?S[L]:null,ee=(0,w.useMemo)(()=>{let Z=new Map;for(let W of S){let me=Z.get(W.cellKey)??[];me.push([W.start,W.end]),Z.set(W.cellKey,me)}return Z},[S]);(0,w.useEffect)(()=>{let Z=W=>{if(!((W.ctrlKey||W.metaKey)&&(W.key==="f"||W.key==="F")))return;let me=Q.current;me===null||me.offsetParent===null||(W.preventDefault(),_(!0),requestAnimationFrame(()=>re.current?.select()))};return document.addEventListener("keydown",Z),()=>document.removeEventListener("keydown",Z)},[]),(0,w.useEffect)(()=>{ae.current?.scrollIntoView({block:"center",inline:"nearest"})},[L,S]);let ce=(0,w.useCallback)(Z=>{ne(W=>S.length===0?0:(W+Z+S.length)%S.length)},[S.length]),D=b&&le!==""?{perCell:ee,activeKey:K?.cellKey??null,activeRange:K?[K.start,K.end]:null,activeRef:ae}:null;if(X){let Z=(()=>{if(V.kind==="idle"||V.kind==="loading")return(0,w.createElement)("div",{className:"gp-empty"},s("common.loading"));if(V.kind==="ready"){let W=V.res;if(W.tooLarge===!0)return(0,w.createElement)("div",{className:"gp-empty"},s("diff.tooLarge"));if(W.mime!==null&&(W.old!==void 0||W.new!==void 0))return(0,w.createElement)(ir,{oldUrl:W.old,newUrl:W.new,mode:n,t:s})}return(0,w.createElement)("div",{className:"gp-empty"},s("diff.binary"))})();return v?or(x,E,Z,s):Z}if(c&&!v)return(0,w.createElement)("div",{className:"gp-empty"},s("diff.binary"));let M=(()=>{if(t.trim()==="")return(0,w.createElement)("div",{className:"gp-empty"},s("diff.empty"));if(n==="before")return sr(dr(g),p,D);if(n==="after")return sr(cr(g),p,D);if(n==="unified"){let Z=on(g);return(0,w.createElement)("div",{className:"gp-diff__unified"},Z.flatMap((W,me)=>pa(W,me,p,k,D,s)))}return(0,w.createElement)("div",{className:"gp-diff__side"},g.flatMap((Z,W)=>ca(Z,W,p,k,D,s)))})(),oe=b?(0,w.createElement)(Ct,{inputRef:re,query:P,matches:S.length,active:L,caseSensitive:U,onChange:z,onToggleCase:()=>C(Z=>!Z),onStep:ce,onClose:()=>_(!1),t:s}):null,ke=(0,w.createElement)("div",{className:"gp-diff__wrap",ref:Q},[oe,M]);return v?or(x,E,ke,s):ke});function ia(e,t){let n=[];return e==="before"?(dr(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="after"?(cr(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="unified"?(on(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 oa(e,t){if(t==="")return[];let n=[];for(let r of e)for(let[a,i]of _t(r.text,t))if(n.push({cellKey:r.key,start:a,end:i}),n.length>=wt)return n;return n}function or(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 sa(e,t,n,r,a,i){let[o,s]=(0,w.useState)(null),l=(0,w.useRef)(0);(0,w.useEffect)(()=>{l.current+=1,s(null)},[e]);let c=(0,w.useCallback)((p,g)=>{if(n===void 0||r===void 0||a===void 0||i===void 0)return;let m=`${p.rightStart}:${g}`;s(m);let k=++l.current,{start:v,end:x}=la(p,g),E=i.base==="commit"&&i.commit!==void 0?{kind:"file-lines",path:a,base:"commit",commit:i.commit,start:v,end:x}:i.base==="staged"?{kind:"file-lines",path:a,base:"staged",start:v,end:x}:{kind:"file-lines",path:a,base:"worktree",start:v,end:x};n.query({sessionId:r,query:E}).then(G=>{if(k!==l.current)return;let X=de(G,"file-lines");s(null),X!==null&&t(V=>rr(V,p.rightStart,g,X.start,X.lines,X.eof))}).catch(()=>{k===l.current&&s(null)})},[n,r,a,i,t]);return{busy:o,run:c}}function la(e,t){if(e.atEnd)return{start:e.rightStart,end:e.rightStart+xe-1};let n=e.count??xe;return t==="all"||n<=xe?{start:e.rightStart,end:e.rightStart+n-1}:t==="down"?{start:e.rightStart,end:e.rightStart+xe-1}:{start:e.rightStart+n-xe,end:e.rightStart+n-1}}function da(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 l=!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(!l)return;let g=de(p,"image-diff");i(g!==null?{kind:"ready",res:g}:{kind:"failed"})}).catch(()=>{l&&i({kind:"failed"})}),()=>{l=!1}},[e,t,n,o,s]),a}function Tt(e,t=""){return e.map((n,r)=>(0,w.createElement)("span",{key:`${t}${r}`,style:n.style},n.text))}function lr(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 St(e,a,r,t,i,n.activeRef)}function Et(e,t,n,r,a=null){if(n==="")return(0,w.createElement)("div",{key:t,className:e},"\xA0");let i=r(n)?.[0],o=lr(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:Tt(i))}function ln(e,t,n,r,a,i,o=null){let s=i(n)?.[0]??[{text:n,style:{}}],l=lr(n,t,o,s);if(l!==null)return(0,w.createElement)("div",{key:t,className:e},l);let[c,p,g]=ar(s,r);return(0,w.createElement)("div",{key:t,className:e},[...Tt(c,"p"),(0,w.createElement)("span",{key:"w",className:a},p.length===0?"\xA0":Tt(p)),...Tt(g,"s")])}function dr(e){return e.filter(t=>t.leftText!==null).map(t=>({no:t.leftNo,text:t.leftText}))}function cr(e){return e.filter(t=>t.rightText!==null).map(t=>({no:t.rightNo,text:t.rightText}))}function sr(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??""),Et("gp-diff-cell",`c${a}`,r.text,t,n)]))}function ca(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[pr(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":"",l=e.leftText===null?(0,w.createElement)("div",{key:`l${t}`,className:`gp-diff-cell ${o}`}):e.kind==="mod"&&e.leftWord!==void 0?ln(`gp-diff-cell ${o}`,`l${t}`,e.leftText,e.leftWord,"gp-diff-word gp-diff-word--del",n,a):Et(`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?ln(`gp-diff-cell ${s}`,`r${t}`,e.rightText,e.rightWord,"gp-diff-word gp-diff-word--add",n,a):Et(`gp-diff-cell ${s}`,`r${t}`,e.rightText,n,a);return[(0,w.createElement)("div",{key:`ln${t}`,className:"gp-diff-no"},e.leftNo??""),l,(0,w.createElement)("div",{key:`rn${t}`,className:"gp-diff-no"},e.rightNo??""),c]}function pa(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[pr(e.gap,t,r,i)];let o=e.kind==="del",s=e.kind==="add",l=s?"gp-diff-row--add":o?"gp-diff-row--del":"",c=s?"+":o?"\u2212":"\xA0",p=e.rightText??e.leftText??"",g=s?e.rightWord:o?e.leftWord:void 0,m=s?"gp-diff-word gp-diff-word--add":"gp-diff-word gp-diff-word--del",k=`gp-diff-cell gp-diff-uni__code ${l}`,v=g!==void 0?ln(k,`c${t}`,p,g,m,n,a):Et(k,`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 ${l}`},c),v]}function pr(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,g)=>(0,w.createElement)("button",{key:c,type:"button",className:"gp-gap__btn",disabled:n.busy!==null,onClick:m=>{m.stopPropagation(),n.run(e,c)}},g?r("common.loading"):p),l=[];if(e.atEnd)l.push(s("down",r("diff.expandDown",{n:xe}),o));else{let c=e.count??0;c>0&&c<=xe?l.push(s("all",r("diff.expandGap",{n:c}),a)):(e.atStart||l.push(s("up",r("diff.expandUp",{n:xe}),i)),l.push(s("all",r("diff.expandGap",{n:c}),a)),l.push(s("down",r("diff.expandDown",{n:xe}),o)))}return(0,w.createElement)("div",{key:`g${t}`,className:"gp-diff-row--gap",style:{gridColumn:"1 / -1"}},l)}function Mt(e){return tr(e)}var H=require("react");var ga=100;function gr(e,t,n){let[r,a]=(0,H.useState)(null),[i,o]=(0,H.useState)(!1),[s,l]=(0,H.useState)([]),c=(0,H.useCallback)(()=>{o(!1),(async()=>{let[p,g]=await Promise.all([e.query({sessionId:t,query:{kind:"branches"}}),e.query({sessionId:t,query:{kind:"tags"}})]),m=de(p,"branches");if(m===null){o(!0);return}let k=de(g,"tags");a({current:m.current,defaultBranch:m.defaultBranch,local:m.local,remote:m.remote,tags:k?.tags??[]}),e.query({sessionId:t,query:{kind:"authors"}}).then(v=>{l(de(v,"authors")?.authors??[])})})()},[e,t]);return(0,H.useEffect)(()=>{c()},[n]),{tree:r,treeError:i,authors:s,reload:c}}function ur(e,t,n,r,a){let[i,o]=(0,H.useState)([]),[s,l]=(0,H.useState)(0),[c,p]=(0,H.useState)(!1),[g,m]=(0,H.useState)(!1),k=(0,H.useRef)(0),v=(0,H.useRef)(!1),x=(0,H.useRef)(null),E=(0,H.useCallback)(async(b,_)=>{if(v.current)return;v.current=!0;let P=k.current;p(!0),m(!1);let z=await e.query({sessionId:t,query:{kind:"history",limit:ga,skip:b,..._.ref?{ref:_.ref}:{},..._.search?{search:_.search}:{},..._.author?{author:_.author}:{},..._.since?{since:_.since}:{}}});if(v.current=!1,P!==k.current)return;p(!1);let U=de(z,"history");if(U===null){m(!0);return}let C=U.commits;o($=>b===0?C:[...$,...C]),l(U.total)},[e,t]),G=(0,H.useRef)(n);(0,H.useEffect)(()=>{k.current+=1,v.current=!1,G.current!==n&&(G.current=n,a(),x.current&&(x.current.scrollTop=0)),E(0,n)},[n,r]);let X=s<0?!0:i.length<s,V=(0,H.useCallback)(()=>{v.current||!X||E(i.length,n)},[E,i.length,n,X]);return{commits:i,total:s,loading:c,listError:g,hasMore:X,listRef:x,loadMore:V}}function fr(e,t,n){let[r,a]=(0,H.useState)(null),[i,o]=(0,H.useState)(null),[s,l]=(0,H.useState)(!1),[c,p]=(0,H.useState)(null),[g,m]=(0,H.useState)(null),[k,v]=(0,H.useState)(!1),[x,E]=(0,H.useState)(n),[G,X]=(0,H.useState)(!1),V=(0,H.useRef)(0),b=(0,H.useRef)(null),_=(0,H.useRef)(new Map),P=(0,H.useCallback)((S,L)=>{let K=_.current;for(K.set(S,L);K.size>50;){let ee=K.keys().next().value;if(ee===void 0)break;K.delete(ee)}},[]),z=(0,H.useCallback)(()=>{a(null),o(null),b.current=null},[]),U=(0,H.useCallback)(S=>{b.current===S.hash&&a(S)},[]),C=(0,H.useCallback)(async S=>{b.current=S.hash,a(S),l(!1),V.current+=1,p(null),m(null),v(!1);let L=_.current.get(S.hash);if(L!==void 0){o(L);return}o(null);let K=await e.query({sessionId:t,query:{kind:"show",ref:S.hash}});if(b.current!==S.hash)return;let ee=de(K,"show");if(ee!==null){let ce={commit:ee.commit,body:ee.body,stats:ee.stats};P(S.hash,ce),o(ce)}else l(!0)},[e,t,P]),$=(0,H.useCallback)(async(S,L,K,ee=!1)=>{let ce=++V.current;p({path:S,hash:L,shortHash:K}),m(null),v(!1),X(ee);let D=await e.query({sessionId:t,query:{kind:"diff",path:S,base:"commit",commit:L,...ee?{context:1e5}:{}}});if(ce!==V.current)return;let M=de(D,"diff");M!==null?m(M.text):v(!0)},[e,t]),ne=(0,H.useCallback)(()=>{V.current+=1,p(null),m(null),v(!1),X(!1)},[]);(0,H.useEffect)(()=>{if(c===null)return;let S=L=>{L.key==="Escape"&&ne()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[c,ne]);let[Q,re]=(0,H.useState)(null),[ae,q]=(0,H.useState)(null),Y=(0,H.useRef)(void 0),N=(0,H.useRef)(null),le=(0,H.useCallback)((S,L,K)=>{Y.current!==void 0&&clearTimeout(Y.current),Y.current=setTimeout(()=>{N.current=S.hash,re({commit:S,x:L,y:K});let ee=_.current.get(S.hash);if(ee!==void 0){q(ee.body);return}q(null),e.query({sessionId:t,query:{kind:"show",ref:S.hash}}).then(ce=>{if(N.current!==S.hash)return;let D=de(ce,"show");D!==null?(P(S.hash,{commit:D.commit,body:D.body,stats:D.stats}),q(D.body)):q("")})},260)},[e,t,P]),A=(0,H.useCallback)(()=>{Y.current!==void 0&&clearTimeout(Y.current),N.current=null,re(null),q(null)},[]);return(0,H.useEffect)(()=>()=>{Y.current!==void 0&&clearTimeout(Y.current)},[]),{selected:r,detail:i,detailError:s,select:C,resyncSelected:U,clearSelection:z,fileDiff:c,fileDiffText:g,fileDiffError:k,fileDiffMode:x,setFileDiffMode:E,fileDiffExpanded:G,openFileDiff:$,closeFileDiff:ne,hover:Q,hoverBody:ae,onHoverEnter:le,onHoverLeave:A}}var be=require("react"),ua=(e,t,n)=>Math.max(t,Math.min(n,e));function fa(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 ma(e,t){try{typeof localStorage<"u"&&localStorage.setItem(e,String(Math.round(t)))}catch{}}function Re(e){let{storageKey:t,initial:n,min:r,reserve:a,edge:i}=e,[o,s]=(0,be.useState)(()=>fa(t,n)),l=(0,be.useRef)(null),c=(0,be.useRef)(null),p=(0,be.useCallback)(m=>{let v=l.current?.parentElement?.clientWidth??Number.MAX_SAFE_INTEGER;c.current={x:m.clientX,w:o,max:Math.max(r,v-a)},m.preventDefault(),typeof document<"u"&&(document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[o,r,a]);(0,be.useEffect)(()=>{if(typeof window>"u")return;let m=v=>{let x=c.current;if(x===null)return;let E=v.clientX-x.x;s(ua(x.w+(i==="end"?E:-E),r,x.max))},k=()=>{c.current!==null&&(c.current=null,typeof document<"u"&&(document.body.style.cursor="",document.body.style.userSelect=""),s(v=>(ma(t,v),v)))};return window.addEventListener("pointermove",m),window.addEventListener("pointerup",k),()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",k)}},[i,r,t]);let g=(0,be.createElement)("div",{key:`rz-${t}`,ref:l,className:"gp-resizer",role:"separator","aria-orientation":"vertical",onPointerDown:p});return{width:o,divider:g}}var mr=require("react");function Ge(e,t,n,r,a=!1){return e.map(i=>(0,mr.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 se=require("react"),hr=require("react-dom");function et(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");case"conflict":return n("error.conflict");case"revert-conflict":return n("error.revertConflict");case"revert-stuck":return n("error.revertStuck");case"revert-merge":return n("error.revertMerge");case"index-busy":return n("error.indexBusy");case"not-found":return n("error.notFound");case"invalid-name":case"invalid-index":return n("error.invalidName");default:return t??n("error.generic")}}function Ie(e){return(0,se.createElement)("div",{key:"aihint",className:"gp-modal__hint"},e("ops.aiHint"))}function Xe(e){return(0,se.createElement)("div",{key:"footer",className:"gp-modal__footer"},[(0,se.createElement)("button",{key:"cancel",type:"button",className:"gp-btn",onClick:e.onClose},e.t("common.cancel")),(0,se.createElement)("button",{key:"ok",type:"button",className:`gp-btn ${e.danger?"gp-btn--danger":"gp-btn--primary"}`,disabled:e.confirmDisabled,onClick:e.onConfirm},e.confirmLabel)])}function Ve(e){return typeof document>"u"?null:(0,se.createElement)(ha,e)}function ha({onClose:e,title:t,icon:n,hash:r,body:a,footer:i,portalKey:o,t:s}){(0,se.useEffect)(()=>{let c=p=>{p.key==="Escape"&&e()};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[e]);let l=(0,se.createElement)("div",{className:"gp-modal-backdrop",onClick:c=>{c.target===c.currentTarget&&e()}},(0,se.createElement)("div",{className:"gp-modal gp-modal--sm",role:"dialog","aria-modal":!0},[(0,se.createElement)("div",{key:"bar",className:"gp-modal__bar"},[n!==void 0?(0,se.createElement)("span",{key:"ic",className:"gp-modal__fileicon"},n):null,(0,se.createElement)("span",{key:"title",className:"gp-modal__path"},t),r!==void 0?(0,se.createElement)("span",{key:"hash",className:"gp-modal__hash"},r):null,(0,se.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:s("common.close"),onClick:e},(0,se.createElement)(He,{size:15}))]),(0,se.createElement)("div",{key:"body",className:"gp-modal__form"},a),i]));return(0,hr.createPortal)(l,document.body,o)}function tt(e){return Ve({onClose:e.onClose,title:e.title,portalKey:"confirm-modal",t:e.t,body:[(0,se.createElement)("div",{key:"txt",className:"gp-modal__confirmtext"},e.body),Ie(e.t),e.error!==null?(0,se.createElement)("div",{key:"err",className:"gp-feedback"},e.error):null],footer:Xe({onClose:e.onClose,onConfirm:e.onConfirm,confirmLabel:e.confirmLabel,confirmDisabled:e.confirmBusy===!0,danger:e.danger,t:e.t})})}var O=require("react");function yr(e,t){return typeof document>"u"?null:(0,O.createElement)(ya,{target:e,...t})}function ya({target:e,onClose:t,onCreate:n,error:r,t:a}){let[i,o]=(0,O.useState)(""),[s,l]=(0,O.useState)(!1),[c,p]=(0,O.useState)(""),g=()=>{i.trim()!==""&&n(i.trim(),s?c:"")};return Ve({onClose:t,title:a("tag.createTitle"),icon:(0,O.createElement)(Le,{size:15}),hash:e.shortHash,portalKey:"tag-create-modal",t:a,body:[(0,O.createElement)("input",{key:"name",className:"gp-input",placeholder:a("tag.namePlaceholder"),value:i,autoFocus:!0,onChange:m=>o(m.target.value),onKeyDown:m=>{m.key==="Enter"&&g()}}),(0,O.createElement)("label",{key:"ann",className:"gp-modal__check"},[(0,O.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:s,onChange:()=>l(m=>!m)}),a("tag.annotated")]),s?(0,O.createElement)("textarea",{key:"msg",className:"gp-input gp-input--area",placeholder:a("tag.messagePlaceholder"),value:c,onChange:m=>p(m.target.value)}):null,Ie(a),r!==null?(0,O.createElement)("div",{key:"err",className:"gp-feedback"},r):null],footer:Xe({onClose:t,onConfirm:g,confirmLabel:a("tag.create"),confirmDisabled:i.trim()==="",danger:!1,t:a})})}function br(e,t){return typeof document>"u"?null:(0,O.createElement)(ba,{target:e,...t})}function ba({target:e,from:t,dirty:n,lostFiles:r,lostTotal:a,lostTruncated:i,busy:o,error:s,onReset:l,onClose:c,t:p}){let[g,m]=(0,O.useState)("mixed"),[k,v]=(0,O.useState)(!1);(0,O.useEffect)(()=>{g!=="hard"&&v(!1)},[g]);let x=[{value:"mixed",label:"reset.modeMixed",hint:"reset.mixedHint"},{value:"soft",label:"reset.modeSoft",hint:"reset.softHint"},{value:"hard",label:"reset.modeHard",hint:"reset.hardHint"}],E=o||g==="hard"&&!k;return Ve({onClose:c,title:p("reset.title"),icon:(0,O.createElement)(yt,{size:15}),hash:e.shortHash,portalKey:"reset-modal",t:p,body:[(0,O.createElement)("div",{key:"txt",className:"gp-modal__confirmtext"},p("reset.body",{from:t,to:e.shortHash})),(0,O.createElement)("div",{key:"modes",className:"gp-reset__modes"},x.map(G=>(0,O.createElement)("label",{key:G.value,className:`gp-reset__mode${g===G.value?" gp-reset__mode--on":""}${G.value==="hard"?" gp-reset__mode--danger":""}`},[(0,O.createElement)("input",{key:"r",type:"radio",name:"gp-reset-mode",className:"gp-check",checked:g===G.value,onChange:()=>m(G.value)}),(0,O.createElement)("span",{key:"tx",className:"gp-reset__modetext"},[(0,O.createElement)("span",{key:"l",className:"gp-reset__modelabel"},p(G.label)),(0,O.createElement)("span",{key:"h",className:"gp-reset__modehint"},p(G.hint))])]))),g==="hard"?(0,O.createElement)("div",{key:"orphan",className:"gp-reset__dirtywarn"},p("reset.hardOrphan")):null,g==="hard"&&a>0?(0,O.createElement)("div",{key:"lost",className:"gp-reset__lost"},[(0,O.createElement)("div",{key:"w",className:"gp-reset__warn"},p("reset.hardWarn")),(0,O.createElement)("ul",{key:"ul",className:"gp-reset__lostlist"},[...r.map(G=>(0,O.createElement)("li",{key:G,title:G},G)),i?(0,O.createElement)("li",{key:"_more",className:"gp-reset__lostmore"},p("reset.lostMore")):null])]):null,g==="hard"?(0,O.createElement)("label",{key:"ack",className:"gp-modal__check gp-reset__ack"},[(0,O.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:k,onChange:()=>v(G=>!G)}),p(a>0?"reset.hardAck":"reset.hardAckClean")]):null,n?(0,O.createElement)("div",{key:"dirty",className:"gp-reset__dirtywarn"},p("ops.dirtyWarn")):null,Ie(p),s!==null?(0,O.createElement)("div",{key:"err",className:"gp-feedback"},s):null],footer:Xe({onClose:c,onConfirm:()=>void l(g),confirmLabel:p("reset.confirm"),confirmDisabled:E,danger:g==="hard",t:p})})}var Ke=14,vr=30;function va(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].kind!==t[n].kind||e[n].name!==t[n].name||e[n].head!==t[n].head)return!1;return!0}var wa=46,xa=260;function ka(e,t){let[n,r]=(0,d.useState)(!1);return(0,d.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 wr({remote:e,sessionId:t,refreshKey:n,defaultDiffView:r,snapshot:a,onAction:i,onResync:o,compact:s,t:l}){let[c,p]=(0,d.useState)({ref:null,search:"",author:"",since:""}),[g,m]=(0,d.useState)(""),[k,v]=(0,d.useState)(null),x=ka(k,xa),[E,G]=(0,d.useState)(new Set(["tags","remote"])),[X,V]=(0,d.useState)(0),b=n+X,_=()=>V(y=>y+1),[P,z]=(0,d.useState)(null),[U,C]=(0,d.useState)(null),[$,ne]=(0,d.useState)(null),[Q,re]=(0,d.useState)(null),[ae,q]=(0,d.useState)(null),[Y,N]=(0,d.useState)(!1),[le,A]=(0,d.useState)("list"),[S,L]=(0,d.useState)(!1);(0,d.useEffect)(()=>{if(!S)return;let y=I=>{I.key==="Escape"&&L(!1)};return document.addEventListener("keydown",y),()=>document.removeEventListener("keydown",y)},[S]),(0,d.useEffect)(()=>{!s&&S&&L(!1)},[s,S]);let{tree:K,treeError:ee,authors:ce,reload:D}=gr(e,t,b),M=fr(e,t,r),{commits:oe,loading:ke,listError:Z,hasMore:W,listRef:me,loadMore:Vt}=ur(e,t,c,b,M.clearSelection);(0,d.useEffect)(()=>{let y=setTimeout(()=>p(I=>I.search===g?I:{...I,search:g}),300);return()=>clearTimeout(y)},[g]);let ve=c.search!=="",we=(0,d.useMemo)(()=>ve?oe.map(y=>({commit:y,lane:0,color:0,edges:[],merge:!1})):Wn(oe,a.graphStyle),[oe,ve,a.graphStyle]),Be=(0,d.useMemo)(()=>ve?0:qn(we),[we,ve]),De=ve?12:Math.max(Ke,Be*Ke),rt=s?wa:vr,bn=s?`${De}px minmax(0,1fr)`:`${De}px minmax(120px,1fr) 72px 120px 96px`,Kt=()=>{let y=me.current;y===null||!W||y.scrollTop+y.clientHeight>=y.scrollHeight-240&&Vt()},Jt=y=>{M.select(y),s&&A("detail")},Oe=(0,d.useMemo)(()=>Date.now(),[oe]),Bt=(0,d.useMemo)(()=>M.detail===null?[]:jn(M.detail.stats.map(y=>({path:y.path,meta:y.status}))),[M.detail]),j=M.selected;(0,d.useEffect)(()=>{if(j===null)return;let y=oe.find(I=>I.hash===j.hash);y!==void 0&&y!==j&&!va(y.refs,j.refs)&&M.resyncSelected(y)},[oe,j]);let qe=Re({storageKey:"gp.overview.left",initial:200,min:130,reserve:360,edge:"end"}),at=Re({storageKey:"gp.overview.right",initial:340,min:190,reserve:360,edge:"start"}),Ae=y=>p(I=>({...I,ref:y})),Ot=async(y,I)=>{if(!(P===null||Y)){q(null),N(!0);try{let pe=await e.run({sessionId:t,action:{kind:"tag-create",name:y,commit:P.hash,...I.trim()!==""?{message:I}:{}}});pe.ok?(z(null),_()):q(et(pe.error.code,pe.error.message,l))}finally{N(!1)}}},ye=async y=>{if(!Y){q(null),N(!0);try{let I=await e.run({sessionId:t,action:{kind:"tag-delete",name:y}});I.ok?(C(null),_()):q(et(I.error.code,I.error.message,l))}finally{N(!1)}}},qt=async()=>{if(!($===null||Y)){q(null),N(!0);try{let y=await i({kind:"revert",commit:$.hash});y.ok?ne(null):q(y.error??l("error.generic"))}finally{N(!1)}}},Wt=async y=>{if(!(Q===null||Y)){q(null),N(!0);try{let I=await i({kind:"reset",commit:Q.hash,mode:y});I.ok?re(null):q(I.error??l("error.generic"))}finally{N(!1)}}},it=Ea(M.fileDiff,{text:M.fileDiffText,error:M.fileDiffError,mode:M.fileDiffMode,onMode:M.setFileDiffMode,expanded:M.fileDiffExpanded,onExpand:y=>{M.fileDiff!==null&&M.openFileDiff(M.fileDiff.path,M.fileDiff.hash,M.fileDiff.shortHash,y)},onClose:M.closeFileDiff,remote:e,sessionId:t,compact:s,t:l}),ot=(0,d.useMemo)(()=>[...new Set(a.changes.filter(y=>y.status!=="untracked").map(y=>y.path))],[a.changes]),st=[P!==null?yr(P,{onClose:()=>z(null),onCreate:Ot,error:ae,compact:s,t:l}):null,U!==null?tt({title:l("tag.deleteTitle"),body:l("tag.deleteConfirm",{name:U}),confirmLabel:l("tag.deleteTitle"),danger:!0,error:ae,confirmBusy:Y,onConfirm:()=>void ye(U),onClose:()=>C(null),t:l}):null,$!==null?tt({title:l("revert.title"),body:l("revert.body",{ref:`${$.shortHash} ${$.subject}`})+(a.dirty?`
531
+ `,tn=!1;function Tn(){if(tn||typeof document>"u")return;let e="dsh-git-panel/client.css";if(document.querySelector(`style[data-plugin-css="${e}"]`)!==null){tn=!0;return}let t=document.createElement("style");t.dataset.plugin="@xbzbing/dsh-git-panel",t.dataset.pluginCss=e,t.textContent=qr,document.head.appendChild(t),tn=!0}var En={"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","common.cancel":"\u53D6\u6D88","ops.aiHint":"\u63D0\u793A\uFF1A\u7ED9 AI \u591A\u4E00\u70B9\u4FE1\u4EFB\uFF0C\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u8BA9 AI \u76F4\u63A5\u6267\u884C Git \u64CD\u4F5C\u3002","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":"\u8BBF\u95EE Github \u67E5\u770B @xbzbing/dsh-git-panel \u9879\u76EE","overview.head":"\u5168\u90E8\u5206\u652F","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","overview.createTag":"\u521B\u5EFA\u6807\u7B7E","overview.revert":"\u8FD8\u539F\u6B64\u63D0\u4EA4","overview.reset":"\u91CD\u7F6E\u5230\u6B64","tag.createTitle":"\u5728\u6B64\u63D0\u4EA4\u521B\u5EFA\u6807\u7B7E","tag.namePlaceholder":"\u6807\u7B7E\u540D","tag.annotated":"\u9644\u6CE8\u6807\u7B7E\uFF08\u5E26\u8BF4\u660E\uFF09","tag.messagePlaceholder":"\u6807\u7B7E\u8BF4\u660E","tag.create":"\u521B\u5EFA\u6807\u7B7E","tag.deleteTitle":"\u5220\u9664\u6807\u7B7E","tag.deleteConfirm":"\u786E\u5B9A\u5220\u9664\u6807\u7B7E\u300C{name}\u300D\uFF1F","tag.deleteOne":"\u5220\u9664\u6807\u7B7E\u300C{name}\u300D","ops.dirtyWarn":"\u68C0\u6D4B\u5230\u672A\u63D0\u4EA4\u6539\u52A8\uFF0C\u8FD9\u4E9B\u6539\u52A8\u53EF\u80FD\u662F dsh AI \u6B63\u5728\u8FDB\u884C\u7684\u5DE5\u4F5C\u3002","revert.title":"\u8FD8\u539F\u63D0\u4EA4","revert.body":"\u5C06\u5728\u5F53\u524D HEAD \u8FFD\u52A0\u4E00\u4E2A\u53CD\u5411\u63D0\u4EA4\uFF0C\u8FD8\u539F {ref} \u7684\u6539\u52A8\u3002\u4E0D\u4F1A\u4E22\u5F03\u4F60\u7684\u5DE5\u4F5C\u533A\u6539\u52A8\u3002","revert.confirm":"\u8FD8\u539F","reset.title":"\u91CD\u7F6E\u5206\u652F","reset.body":"\u5C06\u628A\u5F53\u524D\u5206\u652F\u7684 HEAD \u4ECE {from} \u79FB\u52A8\u5230 {to}\u3002","reset.modeSoft":"\u8F6F\u91CD\u7F6E\uFF08--soft\uFF09","reset.softHint":"\u79FB\u52A8 HEAD\uFF0C\u6539\u52A8\u4FDD\u7559\u5728\u6682\u5B58\u533A\u3002","reset.modeMixed":"\u6DF7\u5408\u91CD\u7F6E\uFF08--mixed\uFF0C\u9ED8\u8BA4\uFF09","reset.mixedHint":"\u79FB\u52A8 HEAD\uFF0C\u6539\u52A8\u4FDD\u7559\u5728\u5DE5\u4F5C\u533A\u3002","reset.modeHard":"\u786C\u91CD\u7F6E\uFF08--hard\uFF09","reset.hardHint":"\u79FB\u52A8 HEAD \u5230\u6B64\u63D0\u4EA4\u5E76\u4E22\u5F03\u6240\u6709\u672A\u63D0\u4EA4\u6539\u52A8\uFF08\u672A\u63D0\u4EA4\u6539\u52A8\u65E0\u6CD5\u6062\u590D\uFF09\u3002","reset.hardOrphan":"\u5F53\u524D\u5206\u652F\u4E0A\u665A\u4E8E\u76EE\u6807\u7684\u63D0\u4EA4\u4F1A\u79BB\u5F00\u5206\u652F\uFF08\u4ECD\u53EF\u7528 git reflog \u627E\u56DE\uFF09\u3002","reset.hardWarn":"\u4EE5\u4E0B\u672A\u63D0\u4EA4\u6539\u52A8\u5C06\u88AB\u6C38\u4E45\u4E22\u5F03\uFF1A","reset.lostMore":"\u2026\u8FD8\u6709\u66F4\u591A\u672A\u63D0\u4EA4\u6539\u52A8\u672A\u663E\u793A\uFF08\u5217\u8868\u5DF2\u622A\u65AD\uFF09","reset.hardAck":"\u6211\u5DF2\u4E86\u89E3\uFF0C\u786E\u8BA4\u4E22\u5F03\u8FD9\u4E9B\u672A\u63D0\u4EA4\u6539\u52A8","reset.hardAckClean":"\u6211\u5DF2\u4E86\u89E3\u6B64\u64CD\u4F5C\u7684\u540E\u679C\uFF0C\u786E\u8BA4\u91CD\u7F6E","reset.confirm":"\u91CD\u7F6E","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","changes.stash":"\u8D2E\u85CF\u66F4\u6539","stash.title":"\u8D2E\u85CF\u5F53\u524D\u66F4\u6539","stash.messagePlaceholder":"\u8D2E\u85CF\u8BF4\u660E\uFF08\u53EF\u9009\uFF09","stash.save":"\u8D2E\u85CF","stash.section":"\u8D2E\u85CF","stash.onBranch":"\u4F4D\u4E8E {branch}","stash.apply":"\u5E94\u7528","stash.pop":"\u5F39\u51FA","stash.drop":"\u4E22\u5F03","stash.dropTitle":"\u4E22\u5F03\u8D2E\u85CF","stash.dropConfirm":"\u786E\u5B9A\u4E22\u5F03\u6B64\u8D2E\u85CF\u6761\u76EE\uFF1F\u4E22\u5F03\u540E\u65E0\u6CD5\u6062\u590D\uFF1A{name}","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}","stats.partial":"\u7EDF\u8BA1\u5DF2\u7B80\u5316","stats.partialHint":"\u53D8\u66F4\u6570\u91CF\u8F83\u591A\uFF0C\u5DF2\u8DF3\u8FC7\u672A\u8DDF\u8E2A\u6587\u4EF6\u884C\u6570\u4E0E\u6700\u8FD1\u53D8\u66F4\u65F6\u95F4\u7684\u7CBE\u786E\u7EDF\u8BA1\u4EE5\u4FDD\u6301\u9762\u677F\u6D41\u7545\u3002","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\u64CD\u4F5C\u88AB\u963B\u6B62","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","error.conflict":"\u8D2E\u85CF\u5E94\u7528\u4EA7\u751F\u51B2\u7A81\uFF0C\u8D2E\u85CF\u6761\u76EE\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u624B\u52A8\u89E3\u51B3\u51B2\u7A81\u540E\u518D\u8BD5","error.revertConflict":"\u8FD8\u539F\u4F1A\u4E0E\u5F53\u524D\u5185\u5BB9\u51B2\u7A81\uFF0C\u5DF2\u81EA\u52A8\u53D6\u6D88\u8FD8\u539F\uFF08\u672A\u6539\u52A8\u4F60\u7684\u5DE5\u4F5C\u533A\uFF09","error.revertStuck":"\u8FD8\u539F\u4EA7\u751F\u51B2\u7A81\u4E14\u81EA\u52A8\u53D6\u6D88\u5931\u8D25\uFF0C\u4ED3\u5E93\u4ECD\u5904\u4E8E\u8FD8\u539F\u4E2D\uFF0C\u8BF7\u624B\u52A8\u6267\u884C git revert --abort \u6216\u89E3\u51B3\u51B2\u7A81","error.revertMerge":"\u8FD9\u662F\u4E00\u4E2A\u5408\u5E76\u63D0\u4EA4\uFF0C\u9762\u677F\u6682\u4E0D\u652F\u6301\u8FD8\u539F\uFF08\u9700\u6307\u5B9A\u4E3B\u7EBF\u7236\u63D0\u4EA4\uFF09\uFF0C\u8BF7\u5728\u547D\u4EE4\u884C\u7528 git revert -m \u5904\u7406","error.indexBusy":"Git \u6B63\u5FD9\uFF08\u53E6\u4E00\u8FDB\u7A0B\u5360\u7528\u7D22\u5F15\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5","error.notFound":"\u76EE\u6807\u4E0D\u5B58\u5728\uFF08\u6807\u7B7E\u6216\u8D2E\u85CF\u53EF\u80FD\u5DF2\u88AB\u5220\u9664\uFF09","error.invalidName":"\u540D\u79F0\u4E0D\u5408\u6CD5","error.notFastForward":"\u672C\u5730\u4E0E\u8FDC\u7A0B\u5206\u652F\u5DF2\u5206\u53C9\uFF0C\u65E0\u6CD5\u5FEB\u8FDB\u62C9\u53D6\uFF0C\u8BF7\u624B\u52A8\u5408\u5E76\u6216\u53D8\u57FA","status.openRepo":"\u5728\u6D4F\u89C8\u5668\u6253\u5F00\u4ED3\u5E93\u4E3B\u9875","status.openRepoOn":"\u5728 {host} \u6253\u5F00\u4ED3\u5E93\u4E3B\u9875","status.synced":"\u5DF2\u4E0E\u8FDC\u7A0B\u540C\u6B65","status.ahead":"\u9886\u5148 {n}","status.behind":"\u843D\u540E {n}","status.diverged":"\u5DF2\u5206\u53C9\uFF08\u9886\u5148 {ahead} / \u843D\u540E {behind}\uFF09","status.noUpstream":"\u672A\u8DDF\u8E2A\u8FDC\u7A0B\u5206\u652F","status.detached":"\u6E38\u79BB HEAD\uFF0C\u65E0\u5206\u652F\u540C\u6B65\u72B6\u6001","status.check":"\u68C0\u67E5\u540C\u6B65\u72B6\u6001","status.pull":"\u62C9\u53D6\u540C\u6B65","status.pulling":"\u540C\u6B65\u4E2D\u2026","status.pullTitle":"\u5FEB\u8FDB\u62C9\u53D6\u8FDC\u7A0B\u66F4\u65B0","status.pullConfirmTitle":"\u62C9\u53D6\u8FDC\u7A0B\u66F4\u65B0","status.pullConfirmBody":"\u5C06\u4EE5\u5FEB\u8FDB\u65B9\u5F0F\u628A\u5F53\u524D\u5206\u652F {branch} \u66F4\u65B0\u5230\u8FDC\u7A0B\u6700\u65B0\u63D0\u4EA4\uFF08\u843D\u540E {behind} \u4E2A\u63D0\u4EA4\uFF09\u3002\u4EC5\u5728\u672A\u5206\u53C9\u65F6\u53EF\u884C\uFF0C\u4E0D\u4F1A\u4EA7\u751F\u5408\u5E76\u63D0\u4EA4\uFF0C\u4E5F\u4E0D\u4F1A\u6539\u52A8\u4F60\u7684\u672A\u63D0\u4EA4\u5185\u5BB9\u3002","status.pullConfirm":"\u62C9\u53D6","status.pullScope":"\u5C06\u5F15\u5165 {commits} \u4E2A\u63D0\u4EA4 \xB7 {files} \u4E2A\u6587\u4EF6 \xB7 +{ins} / \u2212{del} \u884C","status.pullScopeLoading":"\u6B63\u5728\u7EDF\u8BA1\u8FDC\u7A0B\u5DEE\u5F02\u2026","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.graphTitle":"\u63D0\u4EA4\u5386\u53F2\u56FE\u7EBF\u6761\u6837\u5F0F","cfg.graphHint":"\u9009\u62E9\u63D0\u4EA4\u5386\u53F2\u56FE\u7684\u8FDE\u7EBF\u753B\u6CD5\uFF1A\u5E73\u884C\u7EBF\u4E3A VSCode / \u56FE\u5F62\u754C\u9762\u98CE\u683C\uFF0C\u5206\u652F\u5404\u5360\u4E00\u5217\u3001\u5171\u4EAB\u7956\u5148\u4EE5\u5E76\u884C\u7EBF\u8868\u793A\uFF1B\u7D27\u51D1\u4E3A git log \u547D\u4EE4\u884C\u98CE\u683C\uFF0C\u5171\u4EAB\u7956\u5148\u5408\u5E76\u4E3A\u4E00\u5217\u3001\u7EBF\u66F4\u5C11\u3002\u4FDD\u5B58\u540E\u7ACB\u5373\u751F\u6548\u3002","cfg.graphParallel":"\u5E73\u884C\u7EBF\uFF08VSCode \u98CE\u683C\uFF09","cfg.graphCompact":"\u7D27\u51D1\uFF08git log \u98CE\u683C\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"},Rn={"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","common.cancel":"Cancel","ops.aiHint":"Tip: Trust AI more, try direct Git\u2011operation execution by AI.","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":"Visit @xbzbing/dsh-git-panel on GitHub","overview.head":"All branches","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","overview.createTag":"Create tag","overview.revert":"Revert this commit","overview.reset":"Reset to here","tag.createTitle":"Create a tag at this commit","tag.namePlaceholder":"Tag name","tag.annotated":"Annotated tag (with message)","tag.messagePlaceholder":"Tag message","tag.create":"Create tag","tag.deleteTitle":"Delete tag","tag.deleteConfirm":'Delete tag "{name}"?',"tag.deleteOne":'Delete tag "{name}"',"ops.dirtyWarn":"There are uncommitted changes \u2014 they may be work the dsh AI is doing.","revert.title":"Revert commit","revert.body":"Appends a reverse commit at the current HEAD that undoes the changes in {ref}. Your working-tree changes are kept.","revert.confirm":"Revert","reset.title":"Reset branch","reset.body":"Moves the current branch HEAD from {from} to {to}.","reset.modeSoft":"Soft (--soft)","reset.softHint":"Moves HEAD; changes stay staged.","reset.modeMixed":"Mixed (--mixed, default)","reset.mixedHint":"Moves HEAD; changes stay in the working tree.","reset.modeHard":"Hard (--hard)","reset.hardHint":"Moves HEAD to this commit and discards all uncommitted changes (uncommitted changes cannot be recovered).","reset.hardOrphan":"Commits after the target leave the branch (still recoverable via git reflog).","reset.hardWarn":"The following uncommitted changes will be permanently discarded:","reset.lostMore":"\u2026 more uncommitted changes not shown (list capped)","reset.hardAck":"I understand these uncommitted changes will be lost","reset.hardAckClean":"I understand the consequences and confirm the reset","reset.confirm":"Reset","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","changes.stash":"Stash changes","stash.title":"Stash current changes","stash.messagePlaceholder":"Stash message (optional)","stash.save":"Stash","stash.section":"Stashes","stash.onBranch":"on {branch}","stash.apply":"Apply","stash.pop":"Pop","stash.drop":"Drop","stash.dropTitle":"Drop stash","stash.dropConfirm":"Drop this stash? This cannot be undone: {name}","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","stats.partial":"simplified","stats.partialHint":"Large change set \u2014 untracked line counts and last-change time are omitted to keep the panel responsive.","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 this operation","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","error.conflict":"Applying the stash produced conflicts; the stash entry is kept \u2014 resolve them and retry","error.revertConflict":"The revert would conflict with the current content; it was cancelled automatically (your working tree is unchanged)","error.revertStuck":"The revert conflicted and could not be auto-cancelled; the repository is mid-revert \u2014 run `git revert --abort` or resolve it manually","error.revertMerge":"This is a merge commit; the panel cannot revert it (a mainline parent is required) \u2014 use `git revert -m` on the command line","error.indexBusy":"Git is busy (another process holds the index lock); try again shortly","error.notFound":"Target not found (the tag or stash may have been removed)","error.invalidName":"Invalid name","error.notFastForward":"Local and remote have diverged \u2014 a fast-forward pull is not possible; merge or rebase manually","status.openRepo":"Open the repository home in the browser","status.openRepoOn":"Open the repository home on {host}","status.synced":"Up to date with remote","status.ahead":"{n} ahead","status.behind":"{n} behind","status.diverged":"Diverged ({ahead} ahead / {behind} behind)","status.noUpstream":"No upstream branch","status.detached":"Detached HEAD \u2014 no branch sync state","status.check":"Check sync status","status.pull":"Pull","status.pulling":"Syncing\u2026","status.pullTitle":"Fast-forward pull of remote updates","status.pullConfirmTitle":"Pull remote updates","status.pullConfirmBody":"Fast-forwards the current branch {branch} to the latest remote commit ({behind} behind). Only possible when not diverged; it creates no merge commit and leaves your uncommitted work untouched.","status.pullConfirm":"Pull","status.pullScope":"Brings in {commits} commits \xB7 {files} files \xB7 +{ins} / \u2212{del} lines","status.pullScopeLoading":"Measuring incoming changes\u2026","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.graphTitle":"Commit graph line style","cfg.graphHint":"Choose how the commit graph draws its lines: parallel is the VSCode / GUI style \u2014 each branch keeps its own column and a shared ancestor shows as parallel lines; compact is the git log style \u2014 a shared ancestor merges into one column with fewer lines. Saved changes apply immediately.","cfg.graphParallel":"Parallel (VSCode style)","cfg.graphCompact":"Compact (git log style)","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 yt=require("react");var Wr=new Set(["cwd-unavailable"]),nn=3e4,Ur=6e4,mt=class{constructor(t,n){this.remote=t;this.sessionId=n}view={state:"cold"};listeners=new Set;timer;inflight;pendingRefresh=!1;disposed=!1;pollMs=nn;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||nn,this.setView({state:"ready",snapshot:t.value});else if(t.error.code!=="cancelled")if(Wr.has(t.error.code))this.pollMs=Ur,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||nn,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 jr="/api",Qr="gitPanel";function Yr(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,jr,r,a,i)}catch{}}function Zr(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 se(e,t){return!e.ok||e.value.kind!==t?null:e.value}function Ce(e){return e!==void 0&&e!==""}var Gn=new WeakMap;function Ye(e){let t=Gn.get(e);if(t!==void 0)return t;let n=async(a,i,o)=>{let s=Yr(e);if(s===void 0)return{ok:!1,error:{code:"git-unavailable",message:"no connection"}};try{let l=await s(`${Qr}/${a}`,{args:{request:i}},o);return Zr(l)}catch(l){return{ok:!1,error:{code:"git-unavailable",message:l instanceof Error?l.message:String(l)}}}},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 Gn.set(e,r),r}var Re=new Map,Mn,rn;function Dn(e){rn=e,Mn=Ye(e)}function Ze(e){let t=Re.get(e);if(t===void 0){let n=Mn??(rn?Ye(rn):void 0);t=new mt(n??ra(),e),Re.set(e,t)}return t}var ea=6e4,ht=new Map;function ta(e){let t=ht.get(e);t!==void 0&&(clearTimeout(t),ht.delete(e)),Le.set(e,(Le.get(e)??0)+1)}function na(e){let t=(Le.get(e)??1)-1;if(t>0){Le.set(e,t);return}Le.delete(e);let n=setTimeout(()=>{ht.delete(e),!((Le.get(e)??0)>0)&&(Re.get(e)?.dispose(),Re.delete(e))},ea);ht.set(e,n)}var Le=new Map;function et(){for(let e of Re.values())e.resync()}function Pn(){for(let e of Re.values())e.dispose();Re.clear()}function ra(){let e=async()=>({ok:!1,error:{code:"git-unavailable"}});return{snapshot:e,run:e,query:e,suggest:e,version:e}}function bt(e){let[,t]=(0,yt.useState)(0),n=e?Ze(e):void 0;return(0,yt.useEffect)(()=>{if(n===void 0||e===void 0)return;ta(e);let r=n.subscribe(()=>t(a=>a+1));return n.ensure(),()=>{r(),na(e)}},[n,e]),n?n.getSnapshot():{state:"cold"}}var E=require("react");var An="[data-conversation-tabs]",nt='[data-conversation-tabs] button[role="tab"]',an=new Map,tt=new Map;function Ln(e,t){let n=tt.get(e);if(n!==void 0&&n.size>0){for(let r of n)r(t);return}an.set(e,t)}function Hn(e){let t=an.get(e);return t===void 0?null:(an.delete(e),t)}function Fn(e,t){let n=tt.get(e);return n===void 0&&(n=new Set,tt.set(e,n)),n.add(t),()=>{let r=tt.get(e);r!==void 0&&(r.delete(t),r.size===0&&tt.delete(e))}}var aa=6e4,on=new Map;function zn(e,t){on.set(e,{tab:t,leftAt:Date.now()})}function $n(e){let t=on.get(e);return t===void 0?null:Date.now()-t.leftAt>aa?(on.delete(e),null):t.tab}function In(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(nt);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}function Xn(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(nt);for(let n of t)if((n.textContent??"").trim()===e)return n.getAttribute("aria-selected")==="true";return!1}function Bn(e){if(typeof document>"u")return!1;let t=document.querySelectorAll(nt);for(let n of t)if((n.textContent??"").trim()!==e)return n.getAttribute("aria-selected")!=="true"&&n.click(),!0;return!1}var d=require("react"),Ft=require("react-dom");var R=require("react");function le(e,t=15){return(0,R.createElement)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"},e)}function vt({size:e}){return le([(0,R.createElement)("circle",{key:"c",cx:8,cy:8,r:2.4}),(0,R.createElement)("line",{key:"l1",x1:8,y1:1.5,x2:8,y2:5.6}),(0,R.createElement)("line",{key:"l2",x1:8,y1:10.4,x2:8,y2:14.5})],e)}function Jn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M4 2v8"}),(0,R.createElement)("path",{key:"b",d:"M2 4h4"}),(0,R.createElement)("circle",{key:"c",cx:4,cy:12,r:1.6}),(0,R.createElement)("circle",{key:"d",cx:12,cy:4,r:1.6}),(0,R.createElement)("path",{key:"e",d:"M12 6v4"}),(0,R.createElement)("path",{key:"f",d:"M10 12h4"})],e)}function sn({size:e}){return le([(0,R.createElement)("circle",{key:"a",cx:4,cy:3,r:1.6}),(0,R.createElement)("circle",{key:"b",cx:4,cy:13,r:1.6}),(0,R.createElement)("circle",{key:"c",cx:12,cy:5,r:1.6}),(0,R.createElement)("path",{key:"d",d:"M4 4.6v6.8"}),(0,R.createElement)("path",{key:"e",d:"M12 6.6c0 3-4 2.4-8 4"})],e)}function He({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M2 7V3h4l8 8-4 4z"}),(0,R.createElement)("circle",{key:"b",cx:4.5,cy:5.5,r:.8,fill:"currentColor"})],e)}function Ne({size:e,open:t}){return le([(0,R.createElement)("path",{key:"a",d:t?"M3 6l5 5 5-5":"M6 3l5 5-5 5"})],e)}function Fe({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M4 4l8 8M12 4l-8 8"})],e)}function ze({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M10 3L5 8l5 5"}),(0,R.createElement)("path",{key:"b",d:"M5 8h8"})],e)}function Kn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M2 3h12l-4.5 5.5V13L6.5 11V8.5z"})],e)}function wt({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M13 8a5 5 0 1 1-1.5-3.5"}),(0,R.createElement)("path",{key:"b",d:"M13 2v3h-3"})],e)}function Vn({size:e}){return le([(0,R.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,R.createElement)("path",{key:"b",d:"M13 11.6v2.8M11.6 13h2.8"})],e)}function On({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M4 2h5l3 3v9H4z"}),(0,R.createElement)("path",{key:"b",d:"M9 2v3h3"})],e)}function ln({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M2 5.5h12V13H2z"}),(0,R.createElement)("path",{key:"b",d:"M1.5 3h13v2.5h-13z"}),(0,R.createElement)("path",{key:"c",d:"M6.5 8.5h3"})],e)}function qn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M3 4.5h10"}),(0,R.createElement)("path",{key:"b",d:"M5.5 4.5V3h5v1.5"}),(0,R.createElement)("path",{key:"c",d:"M4.5 4.5l.7 9h5.6l.7-9"})],e)}function Wn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M3 7a5 5 0 1 1 1.3 3.4"}),(0,R.createElement)("path",{key:"b",d:"M3 3.5V7h3.5"})],e)}function xt({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M13 3v10"}),(0,R.createElement)("path",{key:"b",d:"M10.5 8L3 3.5v9z",fill:"currentColor"})],e)}function Un({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M5 2.5h4l2.5 2.5v7.5h-6.5z"}),(0,R.createElement)("path",{key:"b",d:"M9 2.5V5h2.5"}),(0,R.createElement)("path",{key:"c",d:"M11 12.5v1.5h-6.5V6"})],e)}function jn({size:e=15}){return(0,R.createElement)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor"},(0,R.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 Qn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M8 2.5v7"}),(0,R.createElement)("path",{key:"b",d:"M4.5 7L8 10.5 11.5 7"}),(0,R.createElement)("path",{key:"c",d:"M3 13h10"})],e)}function Yn({size:e}){return le([(0,R.createElement)("path",{key:"a",d:"M12.5 7a4.5 4.5 0 0 0-8-2.3"}),(0,R.createElement)("path",{key:"b",d:"M3.5 9a4.5 4.5 0 0 0 8 2.3"}),(0,R.createElement)("path",{key:"c",d:"M4.3 2.2v2.5h2.5"}),(0,R.createElement)("path",{key:"d",d:"M11.7 13.8v-2.5H9.2"})],e)}function Zn({size:e=15,filled:t}){return(0,R.createElement)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:t?"currentColor":"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"},(0,R.createElement)("path",{d:"M8 1.8l1.76 3.57 3.94.57-2.85 2.78.67 3.92L8 10.78l-3.52 1.85.67-3.92L2.3 5.94l3.94-.57z"}))}function er(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 tr(e,t){let n=[],r=[],a=[],i=[],o=0,s=()=>{if(i.length===0)return o++;let c=Math.min(...i);return i.splice(i.indexOf(c),1),c},l=c=>{c!==null&&!i.includes(c)&&i.push(c)};for(let c of e){let p=b=>{let A=r.findIndex(M=>M===b);return A===-1&&(A=r.findIndex(M=>M===null),A===-1&&(A=r.length,r.push(null),a.push(null)),r[A]=b,a[A]=s()),A},u=r.some(b=>b===c.hash),f=p(c.hash),x=a[f],w=[...r],_=[...a],N=c.parents,P=N.length>=2;for(let b=0;b<r.length;b++)b!==f&&r[b]===c.hash&&(l(a[b]),r[b]=null,a[b]=null);let $=-1,V=[];if(N.length===0)l(a[f]),r[f]=null,a[f]=null;else{let b=N[0],A=t==="compact"?r.findIndex((M,q)=>M===b&&q!==f):-1;if(A===-1)r[f]=b,$=f;else{let M=Math.min(f,A),q=Math.max(f,A);r[M]=b,l(a[q]),r[q]=null,a[q]=null,$=M}for(let M=1;M<N.length;M++)V.push(p(N[M]))}let G=[];for(let b=0;b<w.length;b++){let A=w[b];if(A!==null)if(A===c.hash){if(b===f&&!u)continue;G.push({fromLane:b,toLane:f,color:_[b],kind:"into"})}else{let M=r[b]===A?b:r.findIndex(q=>q===A);M!==-1&&G.push({fromLane:b,toLane:M,color:_[b],kind:"pass"})}}$!==-1&&G.push({fromLane:f,toLane:$,color:a[$],kind:"out"});for(let b of V)G.push({fromLane:f,toLane:b,color:a[b],kind:"out"});for(n.push({commit:c,lane:f,color:x,edges:G,merge:P});r.length>0&&r[r.length-1]===null;)r=r.slice(0,-1),a=a.slice(0,-1)}return n}function nr(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 l=o===r.length-1,c=a.children.find(p=>p.name===s&&p.dir===!l);c===void 0&&(c={name:s,path:i,dir:!l,children:[],...l?{meta:n.meta}:{}},a.children.push(c)),a=c}}return rr(t),ar(t.children)}function rr(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)rr(t)}function ar(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:ar(n.children)}})}function $e(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 rt(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 dn(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 kt={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"!",typechange:"T"};function _t(e){return e==="added"||e==="untracked"?"gp-status--added":e==="deleted"?"gp-status--deleted":e==="renamed"?"gp-status--renamed":"gp-status--modified"}var k=require("react");var ia={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 cn(e){let t=e.lastIndexOf(".");return t<0?null:ia[e.slice(t+1).toLowerCase()]??null}function ir(e){return/^Binary files .* differ$/m.test(e)||/^GIT binary patch$/m.test(e)}function or(e){return cn(e)!==null}function sr(e){return/\.svg$/i.test(e)}function oa(e){let t=pn(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 sa(e){let t=pn(e);return t.length===0?!1:t.every(n=>n.startsWith("-")||n.startsWith(" "))&&t.some(n=>n.startsWith("-"))&&/^\+\+\+ \/dev\/null/m.test(e)}function pn(e){let t=e.split(`
532
+ `),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 lr(e){let t=0,n=0;for(let r of pn(e))r.startsWith("+")?t++:r.startsWith("-")&&n++;return{add:t,del:n}}var la=/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;function dr(e){let t=[],n=e.split(`
533
+ `),r=0,a=0,i=!0,o=!1,s=0;for(;s<n.length&&!n[s].startsWith("@@");s++);for(;s<n.length;s++){let l=n[s];if(l.startsWith("@@")){let u=la.exec(l);if(u){let f=Number(u[1]),x=Number(u[3]),w=f-x;if(i)x>1&&t.push(Ie({rightStart:1,count:x-1,delta:w,atStart:!0,atEnd:!1}));else{let _=x-a;_>0&&t.push(Ie({rightStart:a,count:_,delta:w,atStart:!1,atEnd:!1}))}r=f,a=x,i=!1}t.push({kind:"hunk",leftNo:null,rightNo:null,leftText:null,rightText:null,text:l});continue}if(l.startsWith("\\"))continue;let c=l[0],p=l.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&&!oa(e)&&!sa(e)&&t.push(Ie({rightStart:a,count:null,delta:r-a,atStart:!1,atEnd:!0})),da(t)}function Ie(e){return{kind:"gap",leftNo:null,rightNo:null,leftText:null,rightText:null,gap:e}}function da(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 l=0;l<s;l++){let c=a[l],p=o[l];if(c&&p){let u=ca(c.leftText??"",p.rightText??"");t.push({kind:"mod",leftNo:c.leftNo,rightNo:p.rightNo,leftText:c.leftText,rightText:p.rightText,...u!==null?{leftWord:u.left,rightWord:u.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 ca(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 pa(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 xe=20;function gn(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 cr(e,t,n,r,a,i){let o=e.findIndex(u=>u.kind==="gap"&&u.gap?.rightStart===t);if(o<0)return e.slice();let s=e[o].gap,l=pa(s.delta,r,a),c=[];if(s.atEnd)return c.push(...l),!i&&a.length>0&&c.push(Ie({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(...l);else if(n==="down"){c.push(...l);let u=p-a.length;c.push(Ie({rightStart:s.rightStart+a.length,count:u,delta:s.delta,atStart:!1,atEnd:!1}))}else{let u=p-a.length;c.push(Ie({rightStart:s.rightStart,count:u,delta:s.delta,atStart:s.atStart,atEnd:!1})),c.push(...l)}return[...e.slice(0,o),...c,...e.slice(o+1)]}var Pt=require("@deepseek-ai/dsh-client-ui-primitives");function pr(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 l=a.text.slice(o[s]-r,o[s+1]-r);l!==""&&n[s].push({text:l,style:a.style})}r=i}return n}var ue=require("react"),St=5e3,Ct=120;function Nt(e,t){let[n,r]=(0,ue.useState)(e);return(0,ue.useEffect)(()=>{let a=setTimeout(()=>r(e),t);return()=>clearTimeout(a)},[e,t]),n}function Tt(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 un(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 l of e){let c=o+l.text.length,p=Math.max(n,o),u=Math.min(r,c);if(u>p&&i.push((0,ue.createElement)("span",{key:`${a}-${s++}`,style:l.style},l.text.slice(p-o,u-o))),o=c,o>=r)break}return i}function Et(e,t,n,r,a,i){let o=[],s=0,l=[...t].sort((c,p)=>c[0]-p[0]);for(let[c,p]of l){if(c<s)continue;c>s&&o.push(...un(n,e,s,c,`${r}b${s}`));let u=a!==null&&a[0]===c&&a[1]===p;o.push((0,ue.createElement)("mark",{key:`mk${r}-${c}`,className:`gp-find-hit${u?" gp-find-hit--active":""}`,...u?{ref:i}:{}},un(n,e,c,p,`mk${r}-${c}`))),s=p}return s<e.length&&o.push(...un(n,e,s,e.length,`${r}e`)),o}function Rt(e){return(0,ue.createElement)("div",{key:"find",className:"gp-find"},[(0,ue.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,ue.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,ue.createElement)("span",{key:"cnt",className:"gp-find__count"},e.query===""?"":e.matches===0?e.t("files.findNoMatch"):`${e.active+1}/${e.matches}`),(0,ue.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,ue.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,ue.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 _e=require("react");function Gt(e,t,n){let r=n(`diff.${e}`);return(0,_e.createElement)("div",{className:`gp-imgcmp__pane gp-imgcmp__pane--${e}`},[(0,_e.createElement)("div",{key:"head",className:"gp-imgcmp__head"},r),t===void 0?(0,_e.createElement)("div",{key:"missing",className:"gp-imgcmp__missing"},n("diff.imageMissing")):(0,_e.createElement)("div",{key:"img",className:"gp-imgcmp__img"},(0,_e.createElement)("img",{src:t,alt:r}))])}function gr({oldUrl:e,newUrl:t,mode:n,t:r}){return n==="before"?(0,_e.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Gt("before",e,r)):n==="after"?(0,_e.createElement)("div",{className:"gp-imgcmp gp-imgcmp--single"},Gt("after",t,r)):(0,_e.createElement)("div",{className:"gp-imgcmp"},[Gt("before",e,r),Gt("after",t,r)])}var At=(0,k.memo)(function({text:t,mode:n,path:r,remote:a,sessionId:i,imageSpec:o,t:s}){let l=(0,k.useMemo)(()=>dr(t),[t]),c=ir(t),p=(0,Pt.useCodeHighlighter)(r===void 0?void 0:(0,Pt.languageForPath)(r)),[u,f]=(0,k.useState)(l);(0,k.useEffect)(()=>{f(l)},[l]);let x=fa(u,f,a,i,r,o),w=r!==void 0&&sr(r),[_,N]=(0,k.useState)("render");(0,k.useEffect)(()=>{N("render")},[r]);let $=(c||w)&&r!==void 0&&or(r)&&a!==void 0&&i!==void 0&&o!==void 0&&(!w||_==="render"),V=ha($?a:void 0,$?i:void 0,$?r:void 0,$?o:void 0),[G,b]=(0,k.useState)(!1),[A,M]=(0,k.useState)(""),[q,S]=(0,k.useState)(!1),[F,te]=(0,k.useState)(0),Y=(0,k.useRef)(null),ie=(0,k.useRef)(null),re=(0,k.useRef)(null);(0,k.useEffect)(()=>{b(!1),M(""),te(0)},[t,r]);let B=(0,k.useMemo)(()=>ga(n,u),[n,u]),Z=(0,k.useMemo)(()=>B.map(W=>({key:W.key,text:W.text.toLowerCase()})),[B]),T=Nt(A,Ct),oe=q?T:T.toLowerCase(),L=q?B:Z,C=(0,k.useMemo)(()=>ua(L,oe),[L,oe]);(0,k.useEffect)(()=>{te(0)},[oe]);let z=C.length===0?0:Math.min(F,C.length-1),X=C.length>0?C[z]:null,j=(0,k.useMemo)(()=>{let W=new Map;for(let U of C){let me=W.get(U.cellKey)??[];me.push([U.start,U.end]),W.set(U.cellKey,me)}return W},[C]);(0,k.useEffect)(()=>{let W=U=>{if(!((U.ctrlKey||U.metaKey)&&(U.key==="f"||U.key==="F")))return;let me=Y.current;me===null||me.offsetParent===null||(U.preventDefault(),b(!0),requestAnimationFrame(()=>ie.current?.select()))};return document.addEventListener("keydown",W),()=>document.removeEventListener("keydown",W)},[]),(0,k.useEffect)(()=>{re.current?.scrollIntoView({block:"center",inline:"nearest"})},[z,C]);let ce=(0,k.useCallback)(W=>{te(U=>C.length===0?0:(U+W+C.length)%C.length)},[C.length]),D=G&&oe!==""?{perCell:j,activeKey:X?.cellKey??null,activeRange:X?[X.start,X.end]:null,activeRef:re}:null;if($){let W=(()=>{if(V.kind==="idle"||V.kind==="loading")return(0,k.createElement)("div",{className:"gp-empty"},s("common.loading"));if(V.kind==="ready"){let U=V.res;if(U.tooLarge===!0)return(0,k.createElement)("div",{className:"gp-empty"},s("diff.tooLarge"));if(U.mime!==null&&(U.old!==void 0||U.new!==void 0))return(0,k.createElement)(gr,{oldUrl:U.old,newUrl:U.new,mode:n,t:s})}return(0,k.createElement)("div",{className:"gp-empty"},s("diff.binary"))})();return w?ur(_,N,W,s):W}if(c&&!w)return(0,k.createElement)("div",{className:"gp-empty"},s("diff.binary"));let ae=(()=>{if(t.trim()==="")return(0,k.createElement)("div",{className:"gp-empty"},s("diff.empty"));if(n==="before")return fr(hr(u),p,D);if(n==="after")return fr(yr(u),p,D);if(n==="unified"){let W=gn(u);return(0,k.createElement)("div",{className:"gp-diff__unified"},W.flatMap((U,me)=>ba(U,me,p,x,D,s)))}return(0,k.createElement)("div",{className:"gp-diff__side"},u.flatMap((W,U)=>ya(W,U,p,x,D,s)))})(),pe=G?(0,k.createElement)(Rt,{inputRef:ie,query:A,matches:C.length,active:z,caseSensitive:q,onChange:M,onToggleCase:()=>S(W=>!W),onStep:ce,onClose:()=>b(!1),t:s}):null,fe=(0,k.createElement)("div",{className:"gp-diff__wrap",ref:Y},[pe,ae]);return w?ur(_,N,fe,s):fe});function ga(e,t){let n=[];return e==="before"?(hr(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="after"?(yr(t).forEach((r,a)=>n.push({key:`c${a}`,text:r.text})),n):e==="unified"?(gn(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 ua(e,t){if(t==="")return[];let n=[];for(let r of e)for(let[a,i]of Tt(r.text,t))if(n.push({cellKey:r.key,start:a,end:i}),n.length>=St)return n;return n}function ur(e,t,n,r){let a=(i,o)=>(0,k.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,k.createElement)("div",{className:"gp-svgdiff"},[(0,k.createElement)("div",{key:"bar",className:"gp-svgdiff__bar"},(0,k.createElement)("div",{className:"gp-seg"},[a("render",r("diff.svgRender")),a("source",r("diff.svgSource"))])),(0,k.createElement)("div",{key:"body",className:"gp-svgdiff__body"},n)])}function fa(e,t,n,r,a,i){let[o,s]=(0,k.useState)(null),l=(0,k.useRef)(0);(0,k.useEffect)(()=>{l.current+=1,s(null)},[e]);let c=(0,k.useCallback)((p,u)=>{if(n===void 0||r===void 0||a===void 0||i===void 0)return;let f=`${p.rightStart}:${u}`;s(f);let x=++l.current,{start:w,end:_}=ma(p,u),N=i.base==="commit"&&i.commit!==void 0?{kind:"file-lines",path:a,base:"commit",commit:i.commit,start:w,end:_}:i.base==="staged"?{kind:"file-lines",path:a,base:"staged",start:w,end:_}:{kind:"file-lines",path:a,base:"worktree",start:w,end:_};n.query({sessionId:r,query:N}).then(P=>{if(x!==l.current)return;let $=se(P,"file-lines");s(null),$!==null&&t(V=>cr(V,p.rightStart,u,$.start,$.lines,$.eof))}).catch(()=>{x===l.current&&s(null)})},[n,r,a,i,t]);return{busy:o,run:c}}function ma(e,t){if(e.atEnd)return{start:e.rightStart,end:e.rightStart+xe-1};let n=e.count??xe;return t==="all"||n<=xe?{start:e.rightStart,end:e.rightStart+n-1}:t==="down"?{start:e.rightStart,end:e.rightStart+xe-1}:{start:e.rightStart+n-xe,end:e.rightStart+n-1}}function ha(e,t,n,r){let[a,i]=(0,k.useState)({kind:"idle"}),o=r?.base,s=r?.commit;return(0,k.useEffect)(()=>{if(e===void 0||t===void 0||n===void 0||o===void 0)return;let l=!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(!l)return;let u=se(p,"image-diff");i(u!==null?{kind:"ready",res:u}:{kind:"failed"})}).catch(()=>{l&&i({kind:"failed"})}),()=>{l=!1}},[e,t,n,o,s]),a}function Mt(e,t=""){return e.map((n,r)=>(0,k.createElement)("span",{key:`${t}${r}`,style:n.style},n.text))}function mr(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 Et(e,a,r,t,i,n.activeRef)}function Dt(e,t,n,r,a=null){if(n==="")return(0,k.createElement)("div",{key:t,className:e},"\xA0");let i=r(n)?.[0],o=mr(n,t,a,i);return o!==null?(0,k.createElement)("div",{key:t,className:e},o):(0,k.createElement)("div",{key:t,className:e},i===void 0?n:Mt(i))}function fn(e,t,n,r,a,i,o=null){let s=i(n)?.[0]??[{text:n,style:{}}],l=mr(n,t,o,s);if(l!==null)return(0,k.createElement)("div",{key:t,className:e},l);let[c,p,u]=pr(s,r);return(0,k.createElement)("div",{key:t,className:e},[...Mt(c,"p"),(0,k.createElement)("span",{key:"w",className:a},p.length===0?"\xA0":Mt(p)),...Mt(u,"s")])}function hr(e){return e.filter(t=>t.leftText!==null).map(t=>({no:t.leftNo,text:t.leftText}))}function yr(e){return e.filter(t=>t.rightText!==null).map(t=>({no:t.rightNo,text:t.rightText}))}function fr(e,t,n=null){return(0,k.createElement)("div",{className:"gp-diff__single"},e.flatMap((r,a)=>[(0,k.createElement)("div",{key:`n${a}`,className:"gp-diff-no"},r.no??""),Dt("gp-diff-cell",`c${a}`,r.text,t,n)]))}function ya(e,t,n,r,a,i){if(e.kind==="hunk")return[(0,k.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[br(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":"",l=e.leftText===null?(0,k.createElement)("div",{key:`l${t}`,className:`gp-diff-cell ${o}`}):e.kind==="mod"&&e.leftWord!==void 0?fn(`gp-diff-cell ${o}`,`l${t}`,e.leftText,e.leftWord,"gp-diff-word gp-diff-word--del",n,a):Dt(`gp-diff-cell ${o}`,`l${t}`,e.leftText,n,a),c=e.rightText===null?(0,k.createElement)("div",{key:`r${t}`,className:`gp-diff-cell ${s}`}):e.kind==="mod"&&e.rightWord!==void 0?fn(`gp-diff-cell ${s}`,`r${t}`,e.rightText,e.rightWord,"gp-diff-word gp-diff-word--add",n,a):Dt(`gp-diff-cell ${s}`,`r${t}`,e.rightText,n,a);return[(0,k.createElement)("div",{key:`ln${t}`,className:"gp-diff-no"},e.leftNo??""),l,(0,k.createElement)("div",{key:`rn${t}`,className:"gp-diff-no"},e.rightNo??""),c]}function ba(e,t,n,r,a,i){if(e.kind==="hunk")return[(0,k.createElement)("div",{key:`h${t}`,className:"gp-diff-row--hunk gp-diff-cell",style:{gridColumn:"1 / -1"}},e.text??"")];if(e.kind==="gap")return[br(e.gap,t,r,i)];let o=e.kind==="del",s=e.kind==="add",l=s?"gp-diff-row--add":o?"gp-diff-row--del":"",c=s?"+":o?"\u2212":"\xA0",p=e.rightText??e.leftText??"",u=s?e.rightWord:o?e.leftWord:void 0,f=s?"gp-diff-word gp-diff-word--add":"gp-diff-word gp-diff-word--del",x=`gp-diff-cell gp-diff-uni__code ${l}`,w=u!==void 0?fn(x,`c${t}`,p,u,f,n,a):Dt(x,`c${t}`,p,n,a);return[(0,k.createElement)("div",{key:`ol${t}`,className:"gp-diff-no"},e.leftNo??""),(0,k.createElement)("div",{key:`nl${t}`,className:"gp-diff-no"},e.rightNo??""),(0,k.createElement)("div",{key:`sg${t}`,className:`gp-diff-uni__sign ${l}`},c),w]}function br(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,u)=>(0,k.createElement)("button",{key:c,type:"button",className:"gp-gap__btn",disabled:n.busy!==null,onClick:f=>{f.stopPropagation(),n.run(e,c)}},u?r("common.loading"):p),l=[];if(e.atEnd)l.push(s("down",r("diff.expandDown",{n:xe}),o));else{let c=e.count??0;c>0&&c<=xe?l.push(s("all",r("diff.expandGap",{n:c}),a)):(e.atStart||l.push(s("up",r("diff.expandUp",{n:xe}),i)),l.push(s("all",r("diff.expandGap",{n:c}),a)),l.push(s("down",r("diff.expandDown",{n:xe}),o)))}return(0,k.createElement)("div",{key:`g${t}`,className:"gp-diff-row--gap",style:{gridColumn:"1 / -1"}},l)}function Lt(e){return lr(e)}var H=require("react");var va=100;function vr(e,t,n){let[r,a]=(0,H.useState)(null),[i,o]=(0,H.useState)(!1),[s,l]=(0,H.useState)([]),c=(0,H.useCallback)(()=>{o(!1),(async()=>{let[p,u]=await Promise.all([e.query({sessionId:t,query:{kind:"branches"}}),e.query({sessionId:t,query:{kind:"tags"}})]),f=se(p,"branches");if(f===null){o(!0);return}let x=se(u,"tags");a({current:f.current,defaultBranch:f.defaultBranch,local:f.local,remote:f.remote,tags:x?.tags??[]}),e.query({sessionId:t,query:{kind:"authors"}}).then(w=>{l(se(w,"authors")?.authors??[])})})()},[e,t]);return(0,H.useEffect)(()=>{c()},[n]),{tree:r,treeError:i,authors:s,reload:c}}function wr(e,t,n,r,a){let[i,o]=(0,H.useState)([]),[s,l]=(0,H.useState)(0),[c,p]=(0,H.useState)(!1),[u,f]=(0,H.useState)(!1),x=(0,H.useRef)(0),w=(0,H.useRef)(!1),_=(0,H.useRef)(null),N=(0,H.useCallback)(async(G,b)=>{if(w.current)return;w.current=!0;let A=x.current;p(!0),f(!1);let M=await e.query({sessionId:t,query:{kind:"history",limit:va,skip:G,...b.ref?{ref:b.ref}:{},...b.search?{search:b.search}:{},...b.author?{author:b.author}:{},...b.since?{since:b.since}:{}}});if(w.current=!1,A!==x.current)return;p(!1);let q=se(M,"history");if(q===null){f(!0);return}let S=q.commits;o(F=>G===0?S:[...F,...S]),l(q.total)},[e,t]),P=(0,H.useRef)(n);(0,H.useEffect)(()=>{x.current+=1,w.current=!1,P.current!==n&&(P.current=n,a(),_.current&&(_.current.scrollTop=0)),N(0,n)},[n,r]);let $=s<0?!0:i.length<s,V=(0,H.useCallback)(()=>{w.current||!$||N(i.length,n)},[N,i.length,n,$]);return{commits:i,total:s,loading:c,listError:u,hasMore:$,listRef:_,loadMore:V}}function xr(e,t,n){let[r,a]=(0,H.useState)(null),[i,o]=(0,H.useState)(null),[s,l]=(0,H.useState)(!1),[c,p]=(0,H.useState)(null),[u,f]=(0,H.useState)(null),[x,w]=(0,H.useState)(!1),[_,N]=(0,H.useState)(n),[P,$]=(0,H.useState)(!1),V=(0,H.useRef)(0),G=(0,H.useRef)(null),b=(0,H.useRef)(new Map),A=(0,H.useCallback)((C,z)=>{let X=b.current;for(X.set(C,z);X.size>50;){let j=X.keys().next().value;if(j===void 0)break;X.delete(j)}},[]),M=(0,H.useCallback)(()=>{a(null),o(null),G.current=null},[]),q=(0,H.useCallback)(C=>{G.current===C.hash&&a(C)},[]),S=(0,H.useCallback)(async C=>{G.current=C.hash,a(C),l(!1),V.current+=1,p(null),f(null),w(!1);let z=b.current.get(C.hash);if(z!==void 0){o(z);return}o(null);let X=await e.query({sessionId:t,query:{kind:"show",ref:C.hash}});if(G.current!==C.hash)return;let j=se(X,"show");if(j!==null){let ce={commit:j.commit,body:j.body,stats:j.stats};A(C.hash,ce),o(ce)}else l(!0)},[e,t,A]),F=(0,H.useCallback)(async(C,z,X,j=!1)=>{let ce=++V.current;p({path:C,hash:z,shortHash:X}),f(null),w(!1),$(j);let D=await e.query({sessionId:t,query:{kind:"diff",path:C,base:"commit",commit:z,...j?{context:1e5}:{}}});if(ce!==V.current)return;let ae=se(D,"diff");ae!==null?f(ae.text):w(!0)},[e,t]),te=(0,H.useCallback)(()=>{V.current+=1,p(null),f(null),w(!1),$(!1)},[]);(0,H.useEffect)(()=>{if(c===null)return;let C=z=>{z.key==="Escape"&&te()};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[c,te]);let[Y,ie]=(0,H.useState)(null),[re,B]=(0,H.useState)(null),Z=(0,H.useRef)(void 0),T=(0,H.useRef)(null),oe=(0,H.useCallback)((C,z,X)=>{Z.current!==void 0&&clearTimeout(Z.current),Z.current=setTimeout(()=>{T.current=C.hash,ie({commit:C,x:z,y:X});let j=b.current.get(C.hash);if(j!==void 0){B(j.body);return}B(null),e.query({sessionId:t,query:{kind:"show",ref:C.hash}}).then(ce=>{if(T.current!==C.hash)return;let D=se(ce,"show");D!==null?(A(C.hash,{commit:D.commit,body:D.body,stats:D.stats}),B(D.body)):B("")})},260)},[e,t,A]),L=(0,H.useCallback)(()=>{Z.current!==void 0&&clearTimeout(Z.current),T.current=null,ie(null),B(null)},[]);return(0,H.useEffect)(()=>()=>{Z.current!==void 0&&clearTimeout(Z.current)},[]),{selected:r,detail:i,detailError:s,select:S,resyncSelected:q,clearSelection:M,fileDiff:c,fileDiffText:u,fileDiffError:x,fileDiffMode:_,setFileDiffMode:N,fileDiffExpanded:P,openFileDiff:F,closeFileDiff:te,hover:Y,hoverBody:re,onHoverEnter:oe,onHoverLeave:L}}var be=require("react"),wa=(e,t,n)=>Math.max(t,Math.min(n,e));function xa(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 ka(e,t){try{typeof localStorage<"u"&&localStorage.setItem(e,String(Math.round(t)))}catch{}}function Ge(e){let{storageKey:t,initial:n,min:r,reserve:a,edge:i}=e,[o,s]=(0,be.useState)(()=>xa(t,n)),l=(0,be.useRef)(null),c=(0,be.useRef)(null),p=(0,be.useCallback)(f=>{let w=l.current?.parentElement?.clientWidth??Number.MAX_SAFE_INTEGER;c.current={x:f.clientX,w:o,max:Math.max(r,w-a)},f.preventDefault(),typeof document<"u"&&(document.body.style.cursor="col-resize",document.body.style.userSelect="none")},[o,r,a]);(0,be.useEffect)(()=>{if(typeof window>"u")return;let f=w=>{let _=c.current;if(_===null)return;let N=w.clientX-_.x;s(wa(_.w+(i==="end"?N:-N),r,_.max))},x=()=>{c.current!==null&&(c.current=null,typeof document<"u"&&(document.body.style.cursor="",document.body.style.userSelect=""),s(w=>(ka(t,w),w)))};return window.addEventListener("pointermove",f),window.addEventListener("pointerup",x),()=>{window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",x)}},[i,r,t]);let u=(0,be.createElement)("div",{key:`rz-${t}`,ref:l,className:"gp-resizer",role:"separator","aria-orientation":"vertical",onPointerDown:p});return{width:o,divider:u}}var kr=require("react");function Me(e,t,n,r,a=!1){return e.map(i=>(0,kr.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 ne=require("react"),_r=require("react-dom");function at(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");case"not-ff":return n("error.notFastForward");case"conflict":return n("error.conflict");case"revert-conflict":return n("error.revertConflict");case"revert-stuck":return n("error.revertStuck");case"revert-merge":return n("error.revertMerge");case"index-busy":return n("error.indexBusy");case"not-found":return n("error.notFound");case"invalid-name":case"invalid-index":return n("error.invalidName");default:return t??n("error.generic")}}function Xe(e){return(0,ne.createElement)("div",{key:"aihint",className:"gp-modal__hint"},e("ops.aiHint"))}function Be(e){return(0,ne.createElement)("div",{key:"footer",className:"gp-modal__footer"},[(0,ne.createElement)("button",{key:"cancel",type:"button",className:"gp-btn",onClick:e.onClose},e.t("common.cancel")),(0,ne.createElement)("button",{key:"ok",type:"button",className:`gp-btn ${e.danger?"gp-btn--danger":"gp-btn--primary"}`,disabled:e.confirmDisabled,onClick:e.onConfirm},e.confirmLabel)])}function Je(e){return typeof document>"u"?null:(0,ne.createElement)(_a,e)}function _a({onClose:e,title:t,icon:n,hash:r,body:a,footer:i,overlay:o,portalKey:s,t:l}){let c=o!=null;(0,ne.useEffect)(()=>{let u=f=>{f.key==="Escape"&&!c&&e()};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[e,c]);let p=(0,ne.createElement)("div",{className:"gp-modal-backdrop",onClick:u=>{!c&&u.target===u.currentTarget&&e()}},(0,ne.createElement)("div",{className:"gp-modal gp-modal--sm",role:"dialog","aria-modal":!0},[(0,ne.createElement)("div",{key:"bar",className:"gp-modal__bar"},[n!==void 0?(0,ne.createElement)("span",{key:"ic",className:"gp-modal__fileicon"},n):null,(0,ne.createElement)("span",{key:"title",className:"gp-modal__path"},t),r!==void 0?(0,ne.createElement)("span",{key:"hash",className:"gp-modal__hash"},r):null,(0,ne.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:l("common.close"),disabled:c,onClick:e},(0,ne.createElement)(Fe,{size:15}))]),(0,ne.createElement)("div",{key:"body",className:"gp-modal__form"},a),i,o??null]));return(0,_r.createPortal)(p,document.body,s)}function Sa(e){return(0,ne.createElement)("div",{key:"overlay",className:"gp-modal__overlay"},[(0,ne.createElement)("div",{key:"sp",className:"gp-spinner"}),(0,ne.createElement)("div",{key:"lb",className:"gp-modal__overlay-label"},e)])}function Ke(e){let t=e.confirmBusy===!0&&e.busyLabel!==void 0;return Je({onClose:e.onClose,title:e.title,portalKey:"confirm-modal",t:e.t,body:[(0,ne.createElement)("div",{key:"txt",className:"gp-modal__confirmtext"},e.body),e.extra??null,Xe(e.t),e.error!==null?(0,ne.createElement)("div",{key:"err",className:"gp-feedback"},e.error):null],footer:Be({onClose:e.onClose,onConfirm:e.onConfirm,confirmLabel:e.confirmLabel,confirmDisabled:e.confirmBusy===!0,danger:e.danger,t:e.t}),...t?{overlay:Sa(e.busyLabel)}:{}})}var O=require("react");function Sr(e,t){return typeof document>"u"?null:(0,O.createElement)(Ca,{target:e,...t})}function Ca({target:e,onClose:t,onCreate:n,error:r,t:a}){let[i,o]=(0,O.useState)(""),[s,l]=(0,O.useState)(!1),[c,p]=(0,O.useState)(""),u=()=>{i.trim()!==""&&n(i.trim(),s?c:"")};return Je({onClose:t,title:a("tag.createTitle"),icon:(0,O.createElement)(He,{size:15}),hash:e.shortHash,portalKey:"tag-create-modal",t:a,body:[(0,O.createElement)("input",{key:"name",className:"gp-input",placeholder:a("tag.namePlaceholder"),value:i,autoFocus:!0,onChange:f=>o(f.target.value),onKeyDown:f=>{f.key==="Enter"&&u()}}),(0,O.createElement)("label",{key:"ann",className:"gp-modal__check"},[(0,O.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:s,onChange:()=>l(f=>!f)}),a("tag.annotated")]),s?(0,O.createElement)("textarea",{key:"msg",className:"gp-input gp-input--area",placeholder:a("tag.messagePlaceholder"),value:c,onChange:f=>p(f.target.value)}):null,Xe(a),r!==null?(0,O.createElement)("div",{key:"err",className:"gp-feedback"},r):null],footer:Be({onClose:t,onConfirm:u,confirmLabel:a("tag.create"),confirmDisabled:i.trim()==="",danger:!1,t:a})})}function Cr(e,t){return typeof document>"u"?null:(0,O.createElement)(Na,{target:e,...t})}function Na({target:e,from:t,dirty:n,lostFiles:r,lostTotal:a,lostTruncated:i,busy:o,error:s,onReset:l,onClose:c,t:p}){let[u,f]=(0,O.useState)("mixed"),[x,w]=(0,O.useState)(!1);(0,O.useEffect)(()=>{u!=="hard"&&w(!1)},[u]);let _=[{value:"mixed",label:"reset.modeMixed",hint:"reset.mixedHint"},{value:"soft",label:"reset.modeSoft",hint:"reset.softHint"},{value:"hard",label:"reset.modeHard",hint:"reset.hardHint"}],N=o||u==="hard"&&!x;return Je({onClose:c,title:p("reset.title"),icon:(0,O.createElement)(xt,{size:15}),hash:e.shortHash,portalKey:"reset-modal",t:p,body:[(0,O.createElement)("div",{key:"txt",className:"gp-modal__confirmtext"},p("reset.body",{from:t,to:e.shortHash})),(0,O.createElement)("div",{key:"modes",className:"gp-reset__modes"},_.map(P=>(0,O.createElement)("label",{key:P.value,className:`gp-reset__mode${u===P.value?" gp-reset__mode--on":""}${P.value==="hard"?" gp-reset__mode--danger":""}`},[(0,O.createElement)("input",{key:"r",type:"radio",name:"gp-reset-mode",className:"gp-check",checked:u===P.value,onChange:()=>f(P.value)}),(0,O.createElement)("span",{key:"tx",className:"gp-reset__modetext"},[(0,O.createElement)("span",{key:"l",className:"gp-reset__modelabel"},p(P.label)),(0,O.createElement)("span",{key:"h",className:"gp-reset__modehint"},p(P.hint))])]))),u==="hard"?(0,O.createElement)("div",{key:"orphan",className:"gp-reset__dirtywarn"},p("reset.hardOrphan")):null,u==="hard"&&a>0?(0,O.createElement)("div",{key:"lost",className:"gp-reset__lost"},[(0,O.createElement)("div",{key:"w",className:"gp-reset__warn"},p("reset.hardWarn")),(0,O.createElement)("ul",{key:"ul",className:"gp-reset__lostlist"},[...r.map(P=>(0,O.createElement)("li",{key:P,title:P},P)),i?(0,O.createElement)("li",{key:"_more",className:"gp-reset__lostmore"},p("reset.lostMore")):null])]):null,u==="hard"?(0,O.createElement)("label",{key:"ack",className:"gp-modal__check gp-reset__ack"},[(0,O.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:x,onChange:()=>w(P=>!P)}),p(a>0?"reset.hardAck":"reset.hardAckClean")]):null,n?(0,O.createElement)("div",{key:"dirty",className:"gp-reset__dirtywarn"},p("ops.dirtyWarn")):null,Xe(p),s!==null?(0,O.createElement)("div",{key:"err",className:"gp-feedback"},s):null],footer:Be({onClose:c,onConfirm:()=>void l(u),confirmLabel:p("reset.confirm"),confirmDisabled:N,danger:u==="hard",t:p})})}var de=require("react");function Tr(e,t){if(e==="loading"||e===null)return(0,de.createElement)("div",{className:"gp-pullscope gp-pullscope--loading"},t("status.pullScopeLoading"));let n=t("status.pullScope",{commits:e.commits,files:e.files,ins:e.insertions,del:e.deletions}),r=n.match(/(\+\d+)\s*\/\s*([-−]\d+)/);if(r===null)return(0,de.createElement)("div",{className:"gp-pullscope"},n);let a=n.indexOf(r[0]);return(0,de.createElement)("div",{className:"gp-pullscope"},[n.slice(0,a),(0,de.createElement)("span",{key:"add",className:"gp-pullscope__add"},r[1])," / ",(0,de.createElement)("span",{key:"del",className:"gp-pullscope__del"},r[2]),n.slice(a+r[0].length)])}function Nr(e){let t=e.replace(/^https?:\/\/[^/]+\//,"").replace(/\/+$/,""),n=t.split("/");return n.length>=2?n.slice(-2).join("/"):t}function mn(e,t){let{t:n}=t,r=e.remote??null,a=e.hasUpstream===!0,i=(()=>{if(r===null||r.hostKind!=="github")return null;let f=(0,de.createElement)(jn,{size:14});if(r.webUrl===null)return(0,de.createElement)("span",{key:"r",className:"gp-statusbar__repo gp-statusbar__repo--none",title:r.url},(0,de.createElement)("span",{className:"gp-statusbar__ic"},f));let x=r.host!==null?n("status.openRepoOn",{host:r.host}):n("status.openRepo");return(0,de.createElement)("a",{key:"r",className:"gp-statusbar__repo",href:r.webUrl,target:"_blank",rel:"noreferrer",title:`${Nr(r.webUrl)} \xB7 ${x}`,"aria-label":`${Nr(r.webUrl)} \xB7 ${x}`},(0,de.createElement)("span",{className:"gp-statusbar__ic"},f))})(),{ahead:o,behind:s,branch:l}=e,c=a&&s>0&&o===0,p=(()=>{let f,x="";return l===null?f=n("status.detached"):a?o===0&&s===0?(f=n("status.synced"),x=" gp-statusbar__state--ok"):o>0&&s>0?(f=n("status.diverged",{ahead:o,behind:s}),x=" gp-statusbar__state--warn"):s>0?(f=n("status.behind",{n:s}),x=" gp-statusbar__state--warn"):f=n("status.ahead",{n:o}):f=n("status.noUpstream"),(0,de.createElement)("span",{key:"s",className:`gp-statusbar__state${x}`},f)})(),u=[r!==null?(0,de.createElement)("button",{key:"check",type:"button",className:"gp-icon-btn gp-statusbar__btn",disabled:t.syncBusy,title:n("status.check"),"aria-label":n("status.check"),onClick:t.onCheck},(0,de.createElement)(Yn,{size:13})):null,c?(0,de.createElement)("button",{key:"pull",type:"button",className:"gp-btn gp-btn--sm gp-statusbar__pull",disabled:t.pullBusy,title:n("status.pullTitle"),onClick:t.onPull},[(0,de.createElement)(Qn,{key:"i",size:12}),n("status.pull")]):null];return(0,de.createElement)("div",{key:"statusbar",className:`gp-statusbar${t.syncBusy?" gp-statusbar--busy":""}`},[i,(0,de.createElement)("div",{key:"sync",className:"gp-statusbar__sync"},[p,...u])])}var Ve=14,Er=30;function Ta(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].kind!==t[n].kind||e[n].name!==t[n].name||e[n].head!==t[n].head)return!1;return!0}var Ea=46,Ra=260;function Ga(e,t){let[n,r]=(0,d.useState)(!1);return(0,d.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 Rr({remote:e,sessionId:t,refreshKey:n,defaultDiffView:r,snapshot:a,onAction:i,onResync:o,compact:s,t:l}){let[c,p]=(0,d.useState)({ref:null,search:"",author:"",since:""}),[u,f]=(0,d.useState)(""),[x,w]=(0,d.useState)(null),_=Ga(x,Ra),[N,P]=(0,d.useState)(new Set(["tags","remote"])),[$,V]=(0,d.useState)(0),G=n+$,b=()=>V(g=>g+1),[A,M]=(0,d.useState)(null),[q,S]=(0,d.useState)(null),[F,te]=(0,d.useState)(null),[Y,ie]=(0,d.useState)(null),[re,B]=(0,d.useState)(null),[Z,T]=(0,d.useState)(!1),[oe,L]=(0,d.useState)(!1),[C,z]=(0,d.useState)(!1),[X,j]=(0,d.useState)(!1),[ce,D]=(0,d.useState)(null),[ae,pe]=(0,d.useState)("list"),[fe,W]=(0,d.useState)(!1);(0,d.useEffect)(()=>{if(!fe)return;let g=v=>{v.key==="Escape"&&W(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[fe]),(0,d.useEffect)(()=>{!s&&fe&&W(!1)},[s,fe]),(0,d.useEffect)(()=>{if(!X){D(null);return}let g=!0;return D("loading"),e.query({sessionId:t,query:{kind:"pull-preview"}}).then(v=>{if(!g)return;let I=se(v,"pull-preview");D(I!==null&&I.hasUpstream?{commits:I.commits,files:I.files,insertions:I.insertions,deletions:I.deletions}:null)}),()=>{g=!1}},[X,e,t]);let{tree:U,treeError:me,authors:Ot,reload:ke}=vr(e,t,G),J=xr(e,t,r),{commits:ve,loading:ot,listError:st,hasMore:Cn,listRef:lt,loadMore:qt}=wr(e,t,c,G,J.clearSelection);(0,d.useEffect)(()=>{let g=setTimeout(()=>p(v=>v.search===u?v:{...v,search:u}),300);return()=>clearTimeout(g)},[u]);let we=c.search!=="",qe=(0,d.useMemo)(()=>we?ve.map(g=>({commit:g,lane:0,color:0,edges:[],merge:!1})):tr(ve,a.graphStyle),[ve,we,a.graphStyle]),dt=(0,d.useMemo)(()=>we?0:er(qe),[qe,we]),Pe=we?12:Math.max(Ve,dt*Ve),Wt=s?Ea:Er,We=s?`${Pe}px minmax(0,1fr)`:`${Pe}px minmax(120px,1fr) 72px 120px 96px`,Ut=()=>{let g=lt.current;g===null||!Cn||g.scrollTop+g.clientHeight>=g.scrollHeight-240&&qt()},ye=g=>{J.select(g),s&&pe("detail")},jt=(0,d.useMemo)(()=>Date.now(),[ve]),Qt=(0,d.useMemo)(()=>J.detail===null?[]:nr(J.detail.stats.map(g=>({path:g.path,meta:g.status}))),[J.detail]),Q=J.selected;(0,d.useEffect)(()=>{if(Q===null)return;let g=ve.find(v=>v.hash===Q.hash);g!==void 0&&g!==Q&&!Ta(g.refs,Q.refs)&&J.resyncSelected(g)},[ve,Q]);let ct=Ge({storageKey:"gp.overview.left",initial:200,min:130,reserve:360,edge:"end"}),pt=Ge({storageKey:"gp.overview.right",initial:340,min:190,reserve:360,edge:"start"}),gt=g=>p(v=>({...v,ref:g})),Yt=async(g,v)=>{if(!(A===null||Z)){B(null),T(!0);try{let I=await e.run({sessionId:t,action:{kind:"tag-create",name:g,commit:A.hash,...v.trim()!==""?{message:v}:{}}});I.ok?(M(null),b()):B(at(I.error.code,I.error.message,l))}finally{T(!1)}}},Zt=async g=>{if(!Z){B(null),T(!0);try{let v=await e.run({sessionId:t,action:{kind:"tag-delete",name:g}});v.ok?(S(null),b()):B(at(v.error.code,v.error.message,l))}finally{T(!1)}}},Ae=async()=>{if(!(F===null||Z)){B(null),T(!0);try{let g=await i({kind:"revert",commit:F.hash});g.ok?te(null):B(g.error??l("error.generic"))}finally{T(!1)}}},ut=async g=>{if(!(Y===null||Z)){B(null),T(!0);try{let v=await i({kind:"reset",commit:Y.hash,mode:g});v.ok?ie(null):B(v.error??l("error.generic"))}finally{T(!1)}}},ft=async()=>{if(!oe){B(null),L(!0);try{let g=await i({kind:"fetch"});g.ok?ke():B(g.error??l("error.generic"))}finally{L(!1)}}},en=async()=>{if(!C){B(null),z(!0);try{let g=await i({kind:"pull-ff"});g.ok?(j(!1),ke()):B(g.error??l("error.generic"))}finally{z(!1)}}},Te=Ha(J.fileDiff,{text:J.fileDiffText,error:J.fileDiffError,mode:J.fileDiffMode,onMode:J.setFileDiffMode,expanded:J.fileDiffExpanded,onExpand:g=>{J.fileDiff!==null&&J.openFileDiff(J.fileDiff.path,J.fileDiff.hash,J.fileDiff.shortHash,g)},onClose:J.closeFileDiff,remote:e,sessionId:t,compact:s,t:l}),Ue=(0,d.useMemo)(()=>[...new Set(a.changes.filter(g=>g.status!=="untracked").map(g=>g.path))],[a.changes]),je=[A!==null?Sr(A,{onClose:()=>M(null),onCreate:Yt,error:re,compact:s,t:l}):null,q!==null?Ke({title:l("tag.deleteTitle"),body:l("tag.deleteConfirm",{name:q}),confirmLabel:l("tag.deleteTitle"),danger:!0,error:re,confirmBusy:Z,onConfirm:()=>void Zt(q),onClose:()=>S(null),t:l}):null,F!==null?Ke({title:l("revert.title"),body:l("revert.body",{ref:`${F.shortHash} ${F.subject}`})+(a.dirty?`
501
534
 
502
- ${l("ops.dirtyWarn")}`:""),confirmLabel:l("revert.confirm"),danger:!1,error:ae,confirmBusy:Y,onConfirm:()=>void qt(),onClose:()=>ne(null),t:l}):null,Q!==null?br(Q,{from:a.head??Q.shortHash,dirty:a.dirty,lostFiles:ot,lostTotal:ot.length,lostTruncated:a.truncated,busy:Y,error:ae,onReset:Wt,onClose:()=>re(null),t:l}):null],lt=(0,d.createElement)("div",{key:"mid",className:"gp-col gp-col--mid gp-history"},[(0,d.createElement)("div",{key:"tb",className:"gp-toolbar",ref:v},[s?(0,d.createElement)("button",{key:"filter",type:"button",className:`gp-btn${c.ref!==null?" gp-btn--primary":""}`,title:l("overview.filterBranch"),onClick:()=>L(!0)},[(0,d.createElement)(In,{key:"ic",size:13}),c.ref??l("overview.filterBranch")]):null,(0,d.createElement)("input",{key:"search",className:"gp-search",placeholder:l(x||s?"overview.searchShort":"overview.search"),value:g,onChange:y=>m(y.target.value)}),(0,d.createElement)("select",{key:"author",className:"gp-select",value:c.author,onChange:y=>p(I=>({...I,author:y.target.value}))},[(0,d.createElement)("option",{key:"",value:""},l("overview.allUsers")),...ce.map(y=>(0,d.createElement)("option",{key:y,value:y},y))]),(0,d.createElement)("select",{key:"since",className:"gp-select",value:c.since,onChange:y=>p(I=>({...I,since:y.target.value}))},[(0,d.createElement)("option",{key:"",value:""},l("overview.allTime")),(0,d.createElement)("option",{key:"today",value:"1 day ago"},l("overview.today")),(0,d.createElement)("option",{key:"7d",value:"7 days ago"},l("overview.last7d")),(0,d.createElement)("option",{key:"30d",value:"30 days ago"},l("overview.last30d"))]),(0,d.createElement)("button",{key:"fetch",type:"button",className:"gp-icon-btn",title:l("overview.fetch"),onClick:()=>{e.run({sessionId:t,action:{kind:"fetch"}}).then(()=>D())}},(0,d.createElement)(ht,{size:14}))]),(0,d.createElement)("div",{key:"list",className:"gp-history__list",ref:me,onScroll:Kt},oe.length===0?(0,d.createElement)("div",{className:"gp-empty"},l(ke?"common.loading":Z?"overview.loadFailed":"overview.noResults")):we.map(y=>Ca(y,{selected:j?.hash===y.commit.hash,gridTpl:bn,graphW:De,laneCount:Be,searching:ve,now:Oe,compact:s,rowH:rt,onSelect:()=>Jt(y.commit),onHoverEnter:M.onHoverEnter,onHoverLeave:M.onHoverLeave,t:l})))]),dt=j===null?[(0,d.createElement)("div",{key:"empty",className:"gp-empty"},[(0,d.createElement)(mt,{key:"i",size:20}),l("overview.selectCommit")])]:[(0,d.createElement)("div",{key:"files",className:"gp-detail__files"},M.detail===null?(0,d.createElement)("div",{className:"gp-empty"},M.detailError?l("overview.detailFailed"):l("common.loading")):Ta(Bt,{activePath:M.fileDiff?.path??null,openTitle:l("overview.openFileDiff"),onOpen:y=>{j!==null&&M.openFileDiff(y,j.hash,j.shortHash)}})),(0,d.createElement)("div",{key:"msg",className:"gp-detail__msg"},[(0,d.createElement)("div",{key:"subj",className:"gp-detail__subject"},j.subject),(0,d.createElement)("div",{key:"meta",className:"gp-detail__meta"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},j.shortHash),(0,d.createElement)("span",{key:"a"},j.author),(0,d.createElement)("span",{key:"t"},nn(j.dateIso))]),(0,d.createElement)("div",{key:"ops",className:"gp-detail__ops"},(()=>{let y=j.refs.filter(I=>I.kind==="tag");return[y.length>0?(0,d.createElement)("div",{key:"tags",className:"gp-detail__tags"},y.map(I=>(0,d.createElement)("span",{key:`tag-${I.name}`,className:"gp-ref-chip gp-ref-chip--tag gp-ref-chip--del",title:I.name},[(0,d.createElement)(Le,{key:"i",size:11}),(0,d.createElement)("span",{key:"n",className:"gp-detail__tagname"},I.name),(0,d.createElement)("button",{key:"x",type:"button",className:"gp-ref-chip__x",title:l("tag.deleteOne",{name:I.name}),onClick:()=>{q(null),C(I.name)}},(0,d.createElement)(He,{size:11}))]))):null,(0,d.createElement)("div",{key:"actions",className:"gp-detail__actions"},[(0,d.createElement)("button",{key:"revert",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.revert"),onClick:()=>{q(null),ne({hash:j.hash,shortHash:j.shortHash,subject:j.subject})}},[(0,d.createElement)(Jn,{key:"i",size:12}),l("overview.revert")]),(0,d.createElement)("button",{key:"reset",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.reset"),onClick:()=>{q(null),o(),re({hash:j.hash,shortHash:j.shortHash,subject:j.subject})}},[(0,d.createElement)(yt,{key:"i",size:12}),l("overview.reset")]),(0,d.createElement)("button",{key:"addtag",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.createTag"),onClick:()=>{q(null),z({hash:j.hash,shortHash:j.shortHash})}},[(0,d.createElement)(Le,{key:"i",size:12}),l("overview.createTag")])])]})()),M.detail!==null&&M.detail.body!==""?(0,d.createElement)("pre",{key:"body",className:"gp-detail__body"},M.detail.body):(0,d.createElement)("div",{key:"nb",className:"gp-empty"},l("overview.noMessage"))])];return s?(0,d.createElement)("div",{className:"gp-overview gp-overview--compact"},[it,...st,le==="detail"?(0,d.createElement)("div",{key:"detail",className:"gp-col gp-col--mid gp-detail"},[(0,d.createElement)("div",{key:"back",className:"gp-subhead"},[(0,d.createElement)("button",{key:"b",type:"button",className:"gp-subhead__back",onClick:()=>A("list")},[(0,d.createElement)(Fe,{key:"i",size:14}),l("overview.backToList")]),j!==null?(0,d.createElement)("span",{key:"h",className:"gp-subhead__title gp-commit-hash"},j.shortHash):null]),...dt]):lt,S?Sa(K,ee,c.ref,E,{onFilter:y=>{Ae(y),L(!1)},onToggle:y=>G(I=>{let pe=new Set(I);return pe.has(y)?pe.delete(y):pe.add(y),pe}),onRetry:D,onClose:()=>L(!1),t:l}):null]):(0,d.createElement)("div",{className:"gp-overview"},[it,...st,(0,d.createElement)("div",{key:"left",className:"gp-col gp-col--left",style:{flex:`0 0 ${qe.width}px`}},xr(K,ee,c.ref,E,{onFilter:y=>Ae(y),onToggle:y=>G(I=>{let pe=new Set(I);return pe.has(y)?pe.delete(y):pe.add(y),pe}),onRetry:D,t:l})),qe.divider,lt,at.divider,(0,d.createElement)("div",{key:"right",className:"gp-col gp-col--right gp-detail",style:{flex:`0 0 ${at.width}px`}},dt),_a(M.hover,M.hoverBody,l)])}function _a(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,d.createElement)("div",{className:"gp-hovercard",style:{left:a,top:i,maxWidth:r}},[(0,d.createElement)("div",{key:"subj",className:"gp-hovercard__subject"},e.commit.subject),(0,d.createElement)("div",{key:"meta",className:"gp-hovercard__meta"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},e.commit.shortHash),(0,d.createElement)("span",{key:"a"},e.commit.author),(0,d.createElement)("span",{key:"t"},nn(e.commit.dateIso))]),t===null?(0,d.createElement)("div",{key:"l",className:"gp-hovercard__loading"},n("common.loading")):t===""?(0,d.createElement)("div",{key:"e",className:"gp-hovercard__loading"},n("overview.noMessage")):(0,d.createElement)("pre",{key:"body",className:"gp-hovercard__body"},t)]);return(0,At.createPortal)(o,document.body,"commit-hovercard")}function xr(e,t,n,r,a){if(t)return(0,d.createElement)("div",{className:"gp-empty"},[(0,d.createElement)("span",{key:"m"},a.t("overview.branchesError")),(0,d.createElement)("button",{key:"r",type:"button",className:"gp-btn",style:{marginTop:8},onClick:a.onRetry},a.t("common.retry"))]);if(e===null)return(0,d.createElement)("div",{className:"gp-empty"},a.t("common.loading"));let i=(o,s,l,c,p="")=>(0,d.createElement)("div",{key:o,className:"gp-branch-group"},[(0,d.createElement)("div",{key:"head",className:"gp-branch-group__head",onClick:()=>a.onToggle(o)},[(0,d.createElement)(Ne,{key:"c",size:11,open:!r.has(o)}),`${a.t(s)} (${l.length})`]),r.has(o)?null:l.map(g=>{let m=p+g.name,k=e.current===g.name,v=`gp-branch-row${n===m?" gp-branch-row--active":""}${k?" gp-branch-row--current":""}`;return(0,d.createElement)("div",{key:g.name,className:v,title:g.name,onClick:()=>a.onFilter(n===m?null:m)},[(0,d.createElement)("span",{key:"i",style:{display:"inline-flex",width:14}},c),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},g.name),g.ahead||g.behind?(0,d.createElement)("span",{key:"t",className:"gp-branch-row__track"},`${g.ahead?`\u2191${g.ahead}`:""}${g.behind?`\u2193${g.behind}`:""}`):null])})]);return(0,d.createElement)("div",{},[(0,d.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,d.createElement)(en,{size:13})),i("remote","overview.remote",e.remote,(0,d.createElement)(en,{size:13})),i("tags","overview.tags",e.tags,(0,d.createElement)(Le,{size:13}))])}function Sa(e,t,n,r,a){if(typeof document>"u")return null;let i=(0,d.createElement)("div",{className:"gp-sheet-backdrop",onClick:o=>{o.target===o.currentTarget&&a.onClose()}},(0,d.createElement)("div",{className:"gp-sheet",role:"dialog","aria-modal":!0},[(0,d.createElement)("div",{key:"bar",className:"gp-sheet__bar"},[(0,d.createElement)("span",{key:"title",className:"gp-sheet__title"},a.t("overview.filterBranch")),(0,d.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-sheet__close",title:a.t("common.close"),onClick:a.onClose},(0,d.createElement)(He,{size:15}))]),(0,d.createElement)("div",{key:"body",className:"gp-sheet__body"},xr(e,t,n,r,a))]));return(0,At.createPortal)(i,document.body,"branch-filter-sheet")}function Ca(e,t){let n=e.commit,r=n.refs.map(i=>(0,d.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,d.createElement)("div",{key:"g",className:"gp-graph-cell"},t.searching?null:Na(e,t.laneCount,t.rowH));return t.compact?(0,d.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,d.createElement)("div",{key:"tx",className:"gp-commit-lines"},[(0,d.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,d.createElement)("div",{key:"m",className:"gp-commit-sub"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,d.createElement)("span",{key:"a",className:"gp-commit-author"},n.author),(0,d.createElement)("span",{key:"d",className:"gp-commit-date"},ze(n.dateIso,t.now,t.t))])])]):(0,d.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,d.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,d.createElement)("div",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,d.createElement)("div",{key:"a",className:"gp-commit-author"},n.author),(0,d.createElement)("div",{key:"d",className:"gp-commit-date",title:Ze(n.dateIso)},ze(n.dateIso,t.now,t.t))])}var Dt=["#4e9bff","#3fb950","#e0982e","#d05ce3","#e5534b","#2dc6c6","#d29922","#8b949e"];function Na(e,t,n=vr){let r=Math.max(Ke,t*Ke),a=s=>s*Ke+Ke/2,i=n/2,o=[];for(let s of e.edges){let l=Dt[s.color%Dt.length],c=s.kind==="out"?i:0,p=s.kind==="into"?i:n,g=(c+p)/2;o.push((0,d.createElement)("path",{key:`e${s.kind}-${s.fromLane}-${s.toLane}-${s.color}`,d:`M ${a(s.fromLane)} ${c} C ${a(s.fromLane)} ${g}, ${a(s.toLane)} ${g}, ${a(s.toLane)} ${p}`,stroke:l,strokeWidth:1.6,fill:"none"}))}return o.push((0,d.createElement)("circle",{key:"node",cx:a(e.lane),cy:i,r:e.merge?4:3.2,fill:Dt[e.color%Dt.length],stroke:"var(--dsw-alias-bg-layer-1)",strokeWidth:1})),(0,d.createElement)("svg",{className:"gp-graph-svg",width:r,height:n},o)}function Ta(e,t){let n=[],r=(a,i)=>{for(let o of a)if(o.dir)n.push((0,d.createElement)("div",{key:o.path,className:"gp-tree-row",style:{paddingLeft:10+i*14}},[(0,d.createElement)(Ne,{key:"c",size:11,open:!0}),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)])),r(o.children,i+1);else{let s=String(o.meta??"modified"),l=t.activePath===o.path;n.push((0,d.createElement)("div",{key:o.path,className:`gp-tree-row${l?" gp-tree-row--active":""}`,style:{paddingLeft:10+i*14},title:t.openTitle,onClick:()=>t.onOpen(o.path)},[(0,d.createElement)("span",{key:"st",className:`gp-status-badge ${vt(s)}`},(bt[s]??s[0]??"M").toUpperCase()),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)]))}};return r(e,0),(0,d.createElement)("div",{},n)}function Ea(e,t){if(e===null||typeof document>"u")return null;let{text:n,error:r,mode:a,onMode:i,expanded:o,onExpand:s,onClose:l,remote:c,sessionId:p,compact:g,t:m}=t,k=g?["unified","before","after"]:["unified","split","before","after"],v=g&&a==="split"?"unified":a,x=(0,d.createElement)("div",{className:"gp-modal-backdrop",onClick:E=>{E.target===E.currentTarget&&l()}},(0,d.createElement)("div",{className:"gp-modal",role:"dialog","aria-modal":!0},[(0,d.createElement)("div",{key:"bar",className:"gp-modal__bar"},[(0,d.createElement)("span",{key:"fileicon",className:"gp-modal__fileicon"},(0,d.createElement)(Vn,{size:15})),(0,d.createElement)("span",{key:"path",className:"gp-modal__path",title:e.path},Ra(e.path)),(0,d.createElement)("span",{key:"hash",className:"gp-modal__hash"},e.shortHash),n!==null&&n!==""?(()=>{let E=Mt(n);return(0,d.createElement)("span",{key:"sum",className:"gp-modal__sum"},[(0,d.createElement)("span",{key:"a",className:"gp-stats__add"},`+${E.add}`),(0,d.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${E.del}`)])})():null,(0,d.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${o?" gp-seg__btn--active":""}`,disabled:v!=="split"&&v!=="unified",title:m(o?"diff.collapse":"diff.expandAll"),onClick:()=>s(!o)},m(o?"diff.collapse":"diff.expandAll")),(0,d.createElement)("div",{key:"seg",className:"gp-seg"},Ge(k,v,i,E=>m(`diff.${E}`))),(0,d.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:m("common.close"),onClick:l},(0,d.createElement)(He,{size:15}))]),(0,d.createElement)("div",{key:"scroll",className:"gp-modal__scroll"},n===null?(0,d.createElement)("div",{className:"gp-empty"},m(r?"overview.diffFailed":"common.loading")):(0,d.createElement)(Gt,{text:n,mode:v,path:e.path,remote:c,sessionId:p,imageSpec:{base:"commit",commit:e.hash},t:m}))]));return(0,At.createPortal)(x,document.body,"file-diff-modal")}function Ra(e){let t=e.lastIndexOf("/");return t<0?[(0,d.createElement)("span",{key:"n",className:"gp-modal__name"},e)]:[(0,d.createElement)("span",{key:"d",className:"gp-modal__dir"},e.slice(0,t+1)),(0,d.createElement)("span",{key:"n",className:"gp-modal__name"},e.slice(t+1))]}var u=require("react");var he=require("react");function kr({stats:e,t}){let n=Date.now(),r=[(0,he.createElement)("span",{key:"files",className:"gp-stats__item"},t("stats.files",{n:e.fileCount})),(0,he.createElement)("span",{key:"lines",className:"gp-stats__item"},[(0,he.createElement)("span",{key:"a",className:"gp-stats__add"},`+${e.insertions}`)," ",(0,he.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${e.deletions}`)])];e.staged>0&&r.push((0,he.createElement)("span",{key:"st",className:"gp-stats__item"},t("stats.staged",{n:e.staged}))),e.modified>0&&r.push((0,he.createElement)("span",{key:"mo",className:"gp-stats__item"},t("stats.modified",{n:e.modified}))),e.untracked>0&&r.push((0,he.createElement)("span",{key:"un",className:"gp-stats__item"},t("stats.untracked",{n:e.untracked}))),e.partial&&r.push((0,he.createElement)("span",{key:"partial",className:"gp-stats__item gp-stats__partial",title:t("stats.partialHint")},t("stats.partial")));let a=[];return e.lastChangeAt!==null&&a.push((0,he.createElement)("span",{key:"lc",className:"gp-stats__item",title:Ze(e.lastChangeAt)},t("stats.lastChange",{time:ze(e.lastChangeAt,n,t)}))),e.headCommittedAt!==null&&a.push((0,he.createElement)("span",{key:"hc",className:"gp-stats__item",title:Ze(e.headCommittedAt)},t("stats.lastCommit",{time:ze(e.headCommittedAt,n,t)}))),a.length>0&&r.push((0,he.createElement)("span",{key:"times",className:"gp-stats__times"},a)),(0,he.createElement)("div",{className:"gp-stats"},r)}function Pt(e){let t=new Array(e.length+1);t[0]=0;for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t}function _r(e,t){let n=0,r=e.length-1;for(;n<r;){let a=n+r+1>>1;e[a]<=t?n=a:r=a-1}return n}function Lt(e,t,n,r){let a=e.length-1;if(a<=0)return{first:0,last:0};let i=_r(e,t-r),o=Math.min(a,_r(e,t+n+r)+1);return{first:i,last:o}}var Me=require("react");function Ht(){let[e,t]=(0,Me.useState)({top:0,height:0}),n=(0,Me.useRef)(null),r=(0,Me.useRef)(null);return{setEl:(0,Me.useCallback)(i=>{if(r.current!==null&&(r.current(),r.current=null),n.current=i,i===null)return;let o=()=>t(l=>{let c=i.scrollTop,p=i.clientHeight;return l.top===c&&l.height===p?l:{top:c,height:p}});o(),i.addEventListener("scroll",o,{passive:!0});let s=typeof ResizeObserver<"u"?new ResizeObserver(o):null;s?.observe(i),r.current=()=>{i.removeEventListener("scroll",o),s?.disconnect()}},[]),viewport:e,elRef:n}}var dn=28,Sr=26,Ga=8,Ma=600;function Cr({remote:e,sessionId:t,snapshot:n,onAction:r,compact:a,t:i}){let[o,s]=(0,u.useState)(new Set),[l,c]=(0,u.useState)(""),[p,g]=(0,u.useState)(!1),[m,k]=(0,u.useState)(!1),[v,x]=(0,u.useState)(null),[E,G]=(0,u.useState)(new Set),[X,V]=(0,u.useState)(null),[b,_]=(0,u.useState)(null),[P,z]=(0,u.useState)(null),[U,C]=(0,u.useState)(()=>n.defaultDiffView),[$,ne]=(0,u.useState)(!1),[Q,re]=(0,u.useState)(!1),[ae,q]=(0,u.useState)(!1),[Y,N]=(0,u.useState)(!1),[le,A]=(0,u.useState)(null),[S,L]=(0,u.useState)("list"),[K,ee]=(0,u.useState)([]),[ce,D]=(0,u.useState)(!0),[M,oe]=(0,u.useState)(!1),[ke,Z]=(0,u.useState)(null),W=(0,u.useRef)(null),me=(0,u.useRef)(0),{setEl:Vt,viewport:ve}=Ht(),we=(0,u.useCallback)(async()=>{let h=await e.query({sessionId:t,query:{kind:"stash-list"}}),R=de(h,"stash-list");ee(R?.entries??[])},[e,t]);(0,u.useEffect)(()=>{we()},[we,n.checkedAt]);let Be=(0,u.useMemo)(()=>n.changes.filter(h=>h.staged).sort(cn),[n]),De=(0,u.useMemo)(()=>n.changes.filter(h=>!h.staged&&h.status!=="untracked").sort(cn),[n]),rt=(0,u.useMemo)(()=>n.changes.filter(h=>h.status==="untracked").sort(cn),[n]),Kt=[{key:"staged",labelKey:"changes.groupStaged",items:Be},{key:"unstaged",labelKey:"changes.groupUnstaged",items:De},{key:"untracked",labelKey:"changes.groupUntracked",items:rt}].filter(h=>h.items.length>0),{items:Jt,tops:Oe,totalH:Bt}=(0,u.useMemo)(()=>{let h=[];for(let B of Kt)if(h.push({kind:"head",g:{key:B.key,labelKey:B.labelKey,count:B.items.length}}),!E.has(B.key))for(let ie of B.items)h.push({kind:"row",c:ie});let R=Pt(h.map(B=>B.kind==="head"?Sr:dn));return{items:h,tops:R,totalH:R[h.length]}},[Be,De,rt,E]),j=ve.height>0?ve.height:Ma,{first:qe,last:at}=Lt(Oe,ve.top,j,Ga*dn);(0,u.useEffect)(()=>{s(h=>{if(h.size===0)return h;let R=new Set(n.changes.map(ue=>ue.path+(ue.staged?":s":":w"))),B=new Set,ie=!1;for(let ue of h)R.has(ue)?B.add(ue):ie=!0;return ie?B:h})},[n]),(0,u.useEffect)(()=>{if(!p||Q||l.trim()!=="")return;let h=!0;return e.query({sessionId:t,query:{kind:"last-commit-message"}}).then(R=>{let B=de(R,"last-commit-message");h&&B!==null&&(c(B.message),re(!0))}),()=>{h=!1}},[p,Q,l,e,t]);let Ae=(0,u.useCallback)(async(h,R,B=!1,ie=!1)=>{let ue=++me.current;_({path:h,base:R}),ie||z(null),ne(B);let Te=await e.query({sessionId:t,query:{kind:"diff",path:h,base:R,...B?{context:1e5}:{}}});if(ue!==me.current)return;let kn=de(Te,"diff");z(kn!==null?kn.text:"")},[e,t]);(0,u.useEffect)(()=>{if(b===null)return;if(!n.changes.some(R=>R.path===b.path)){_(null),z(null),L("list");return}Ae(b.path,b.base,$,!0)},[n]),(0,u.useEffect)(()=>{V(null)},[n]),(0,u.useEffect)(()=>{N(!1)},[n]);let Ot=h=>{s(R=>{let B=new Set(R);return B.has(h)?B.delete(h):B.add(h),B})},ye=async h=>{if(m)return!1;k(!0),x(null),A(null);try{let R=await r(h);return R.ok?!0:(x(R.error??i("error.generic")),!1)}catch(R){return x(R instanceof Error?R.message:i("error.generic")),!1}finally{k(!1)}},qt=async()=>{let h=l.trim();if(h===""&&!p){x(i("error.emptyMessage"));return}let R=o.size>0?[...new Set([...o].map(ie=>ie.replace(/:[sw]$/,"")))]:void 0;await ye({kind:"commit",message:h,...R?{paths:R}:{},...p?{amend:!0}:{}})&&(c(""),s(new Set),g(!1),re(!1))},Wt=async h=>{await ye({kind:"stash-push",...h.trim()!==""?{message:h}:{}})&&(oe(!1),we())},it=(h,R)=>{ye({kind:"stash-apply",index:h,sha:R}).then(B=>{B&&we()})},ot=(h,R)=>{ye({kind:"stash-pop",index:h,sha:R}).then(B=>{B&&we()})},st=async(h,R)=>{await ye({kind:"stash-drop",index:h,sha:R})&&(Z(null),we())},lt=(h,R)=>{switch(h){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 R===void 0?i("error.llmFailed"):`${i("error.llmFailed")}: ${R}`;default:return R??i("error.generic")}},dt=async()=>{if(ae)return;if(p&&!Y&&l.trim()!==""){N(!0),x(null),A(i("commit.suggestOverwrite"));return}N(!1);let h=o.size>0?[...new Set([...o].map(R=>R.replace(/:[sw]$/,"")))]:void 0;q(!0),x(null),A(null);try{let R=await e.suggest({sessionId:t,...h&&h.length>0?{paths:h}:{}});R.ok?(c(R.value.message),R.value.truncated===!0&&A(i("commit.suggestTruncated")),W.current?.focus()):x(lt(R.error.code,R.error.message))}catch(R){x(R instanceof Error?R.message:i("error.generic"))}finally{q(!1)}},y=h=>{G(R=>{let B=new Set(R);return B.has(h)?B.delete(h):B.add(h),B})},I=P!==null&&P!==""?Mt(P):null,pe=Re({storageKey:"gp.changes.left",initial:380,min:220,reserve:200,edge:"end"}),zr=(h,R)=>{Ae(h,R),a&&L("diff")},$r=a?["unified","before","after"]:["unified","split","before","after"],ct=a&&U==="split"?"unified":U,vn=[(0,u.createElement)(kr,{key:"stats",stats:n.stats,t:i}),(0,u.createElement)("div",{key:"toolbar",className:"gp-toolbar"},[(0,u.createElement)("button",{key:"sa",type:"button",className:"gp-btn",disabled:m||n.changes.length===0,onClick:()=>void ye({kind:"stage-all"})},i("changes.stageAll")),(0,u.createElement)("button",{key:"ua",type:"button",className:"gp-btn",disabled:m||n.staged===0,onClick:()=>void ye({kind:"unstage-all"})},i("changes.unstageAll")),(0,u.createElement)("button",{key:"stash",type:"button",className:"gp-btn",disabled:m||n.staged===0&&n.modified===0,title:i("changes.stash"),onClick:()=>{x(null),oe(!0)}},[(0,u.createElement)(tn,{key:"ic",size:13}),i("changes.stash")])]),v!==null?(0,u.createElement)("div",{key:"err",className:"gp-feedback"},v):null,le!==null?(0,u.createElement)("div",{key:"notice",className:"gp-notice"},le):null,(0,u.createElement)("div",{key:"list",className:"gp-changes__list",ref:Vt},n.changes.length===0?(0,u.createElement)("div",{className:"gp-empty"},i("changes.noChanges")):(0,u.createElement)("div",{className:"gp-changes__vlist",style:{height:Bt}},Jt.slice(qe,at).map((h,R)=>{let B=qe+R;if(h.kind==="head"){let Te=h.g;return(0,u.createElement)("div",{key:`h:${Te.key}`,className:"gp-changes__vrow",style:{top:Oe[B],height:Sr}},(0,u.createElement)("div",{className:"gp-group-head",onClick:()=>y(Te.key)},[(0,u.createElement)(Ne,{key:"chev",size:12,open:!E.has(Te.key)}),`${i(Te.labelKey)} (${Te.count})`]))}let ie=h.c,ue=ie.path+(ie.staged?":s":":w");return(0,u.createElement)("div",{key:ue,className:"gp-changes__vrow",style:{top:Oe[B],height:dn}},Pa(ie,{selected:o.has(ue),active:b?.path===ie.path&&b.base===(ie.staged?"staged":"worktree"),busy:m,armed:X===ue,onToggle:()=>Ot(ue),onOpen:()=>zr(ie.path,ie.staged?"staged":"worktree"),onStage:()=>void ye(ie.staged?{kind:"unstage",paths:[ie.path]}:{kind:"stage",paths:[ie.path]}),onDiscard:()=>{X===ue?(ye({kind:"discard",paths:[ie.path]}),V(null)):V(ue)},t:i}))}))),K.length>0?(0,u.createElement)("div",{key:"stashes",className:"gp-stash"},[(0,u.createElement)("div",{key:"head",className:"gp-group-head",onClick:()=>D(h=>!h)},[(0,u.createElement)(Ne,{key:"chev",size:12,open:!ce}),`${i("stash.section")} (${K.length})`]),ce?null:(0,u.createElement)("div",{key:"items"},K.map(h=>Aa(h,{busy:m,onApply:()=>it(h.index,h.sha),onPop:()=>ot(h.index,h.sha),onDrop:()=>{x(null),Z(h)},t:i})))]):null,(0,u.createElement)("div",{key:"box",className:"gp-commitbox"},[(0,u.createElement)("textarea",{key:"msg",className:"gp-commitbox__msg",placeholder:i("commit.placeholder"),value:l,ref:W,onChange:h=>c(h.target.value)}),(0,u.createElement)("div",{key:"row",className:"gp-commitbox__row"},[(0,u.createElement)("label",{key:"amend",className:"gp-commitbox__amend"},[(0,u.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:p,onChange:()=>{g(h=>!h),re(!1)}}),i("commit.amend")]),(0,u.createElement)("div",{key:"actions",className:"gp-commitbox__actions"},[n.suggestEnabled!==!1?(0,u.createElement)("button",{key:"suggest",type:"button",className:"gp-btn",disabled:m||ae||n.changes.length===0,onClick:()=>void dt(),title:i("commit.suggest")},[(0,u.createElement)(Xn,{key:"ic",size:13}),i(ae?"commit.suggesting":"commit.suggest")]):null,(0,u.createElement)("button",{key:"commit",type:"button",className:"gp-btn gp-btn--primary",disabled:m||ae||l.trim()==="",onClick:()=>void qt()},i("commit.commit"))])])])],wn=b===null?(0,u.createElement)("div",{className:"gp-empty"},i("changes.selectFile")):(0,u.createElement)("div",{className:"gp-diff"},[(0,u.createElement)("div",{key:"tb",className:"gp-diff__toolbar"},[a?(0,u.createElement)("button",{key:"back",type:"button",className:"gp-subhead__back",onClick:()=>L("list")},[(0,u.createElement)(Fe,{key:"i",size:14}),i("changes.backToList")]):null,(0,u.createElement)("span",{key:"path",className:"gp-diff__path"},b.path),I?(0,u.createElement)("span",{key:"sum",className:"gp-stats__item",style:{marginLeft:"auto"}},[(0,u.createElement)("span",{key:"a",className:"gp-stats__add"},`+${I.add}`)," ",(0,u.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${I.del}`)]):null,(0,u.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${$?" gp-seg__btn--active":""}`,style:I?{}:{marginLeft:"auto"},disabled:ct!=="split"&&ct!=="unified",title:i($?"diff.collapse":"diff.expandAll"),onClick:()=>void Ae(b.path,b.base,!$)},i($?"diff.collapse":"diff.expandAll")),(0,u.createElement)("div",{key:"seg",className:"gp-seg"},Ge($r,ct,C,h=>i(`diff.${h}`)))]),(0,u.createElement)("div",{key:"scroll",className:"gp-diff__scroll"},P===null?(0,u.createElement)("div",{className:"gp-empty"},i("common.loading")):(0,u.createElement)(Gt,{text:P,mode:ct,path:b.path,remote:e,sessionId:t,imageSpec:{base:b.base},t:i}))]),xn=[M?(0,u.createElement)(Da,{key:"push",onClose:()=>oe(!1),onStash:Wt,error:v,t:i}):null,ke!==null?tt({title:i("stash.dropTitle"),body:i("stash.dropConfirm",{name:ke.message}),confirmLabel:i("stash.drop"),danger:!0,error:v,onConfirm:()=>void st(ke.index,ke.sha),onClose:()=>Z(null),t:i}):null];return a?(0,u.createElement)("div",{className:"gp-changes gp-changes--compact"},[...xn,S==="diff"?(0,u.createElement)("div",{key:"right",className:"gp-changes__right"},wn):(0,u.createElement)("div",{key:"left",className:"gp-changes__left"},vn)]):(0,u.createElement)("div",{className:"gp-changes"},[...xn,(0,u.createElement)("div",{key:"left",className:"gp-changes__left",style:{flex:`0 0 ${pe.width}px`}},vn),pe.divider,(0,u.createElement)("div",{key:"right",className:"gp-changes__right"},wn)])}function Da({onClose:e,onStash:t,error:n,t:r}){let[a,i]=(0,u.useState)("");return Ve({onClose:e,title:r("stash.title"),icon:(0,u.createElement)(tn,{size:15}),portalKey:"stash-push-modal",t:r,body:[(0,u.createElement)("input",{key:"msg",className:"gp-input",placeholder:r("stash.messagePlaceholder"),value:a,autoFocus:!0,onChange:o=>i(o.target.value),onKeyDown:o=>{o.key==="Enter"&&t(a)}}),Ie(r),n!==null?(0,u.createElement)("div",{key:"err",className:"gp-feedback"},n):null],footer:Xe({onClose:e,onConfirm:()=>void t(a),confirmLabel:r("stash.save"),confirmDisabled:!1,danger:!1,t:r})})}function Aa(e,t){return(0,u.createElement)("div",{key:e.index,className:"gp-stash-row"},[(0,u.createElement)("div",{key:"info",className:"gp-stash-row__info"},[(0,u.createElement)("span",{key:"m",className:"gp-stash-row__msg",title:e.message},e.message),(0,u.createElement)("span",{key:"meta",className:"gp-stash-row__meta"},[e.branch!==null?(0,u.createElement)("span",{key:"b"},t.t("stash.onBranch",{branch:e.branch})):null,e.relTime!==""?(0,u.createElement)("span",{key:"t"},e.relTime):null])]),(0,u.createElement)("div",{key:"act",className:"gp-stash-row__actions"},[(0,u.createElement)("button",{key:"apply",type:"button",className:"gp-btn gp-btn--sm",disabled:t.busy,onClick:t.onApply},t.t("stash.apply")),(0,u.createElement)("button",{key:"pop",type:"button",className:"gp-btn gp-btn--sm",disabled:t.busy,onClick:t.onPop},t.t("stash.pop")),(0,u.createElement)("button",{key:"drop",type:"button",className:"gp-icon-btn",disabled:t.busy,title:t.t("stash.drop"),onClick:t.onDrop},(0,u.createElement)(Kn,{size:14}))])])}function cn(e,t){return e.path.localeCompare(t.path)}function Pa(e,t){let n=e.path.split("/").pop()??e.path,r=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"";return(0,u.createElement)("div",{key:e.path+(e.staged?":s":":w"),className:`gp-file-row${t.active?" gp-file-row--active":""}`,onClick:t.onOpen},[(0,u.createElement)("input",{key:"cb",type:"checkbox",className:"gp-check",checked:t.selected,onClick:a=>a.stopPropagation(),onChange:t.onToggle}),(0,u.createElement)("span",{key:"st",className:`gp-status-badge ${vt(e.status)}`},bt[e.status]??"?"),(0,u.createElement)("span",{key:"nm",className:"gp-tree-name",title:e.path},[n,r?(0,u.createElement)("span",{key:"d",style:{color:"var(--dsw-alias-label-tertiary)",marginLeft:6,fontSize:11}},r):null]),(0,u.createElement)("span",{key:"act",className:"gp-file-row__actions"},[(0,u.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,u.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 f=require("react");var Se=require("@deepseek-ai/dsh-client-ui-primitives");function Tr(e){return/\.(?:md|markdown)$/i.test(e)}function un(e){return/\.(?:html?|xhtml)$/i.test(e)}function La(e){return Tr(e)||un(e)}var Ha=256*1024,Fa=5e3,Nr=5e3,Ft=20,pn=12,za=600,$a=6e4,gn=new Map;function Ia(e,t){let n=t.file.kind==="loading"?{kind:"idle"}:t.file;gn.set(e,{state:{...t,file:n},leftAt:Date.now()})}function Xa(e){let t=gn.get(e);return t===void 0?null:Date.now()-t.leftAt>$a?(gn.delete(e),null):t.state}function fn({remote:e,sessionId:t,compact:n,t:r}){let a=(0,f.useRef)(void 0);a.current===void 0&&(a.current=Xa(t));let i=a.current,[o,s]=(0,f.useState)(()=>i?.dirs??new Map),[l,c]=(0,f.useState)(()=>i?.open??new Set([""])),[p,g]=(0,f.useState)(()=>i?.selected??null),[m,k]=(0,f.useState)(()=>i?.file??{kind:"idle"}),[v,x]=(0,f.useState)(()=>i?.renderMarkdown??!0),[E,G]=(0,f.useState)("idle"),[X,V]=(0,f.useState)("idle"),[b,_]=(0,f.useState)(()=>i?.pane??"tree"),P=(0,f.useMemo)(()=>({code:{copyLabel:r("files.copy"),copiedLabel:r("files.copied")},footnotes:r("files.footnotes")}),[r]),z=(0,f.useRef)(0),U=Re({storageKey:"gp.files.left",initial:300,min:180,reserve:220,edge:"end"}),C=(0,f.useCallback)(A=>{s(S=>{let L=S.get(A);if(L!==void 0&&L.status!=="error")return S;let K=new Map(S);return K.set(A,{status:"loading"}),K}),e.query({sessionId:t,query:{kind:"dir-list",path:A}}).then(S=>{let L=de(S,"dir-list");s(K=>{let ee=new Map(K);return ee.set(A,L===null?{status:"error"}:{status:"ready",entries:L.entries,truncated:L.truncated}),ee})}).catch(()=>{s(S=>{let L=new Map(S);return L.set(A,{status:"error"}),L})})},[e,t]);(0,f.useEffect)(()=>{C("")},[C]);let $=(0,f.useCallback)(A=>{c(S=>{let L=new Set(S);return L.has(A)?(L.delete(A),L):(L.add(A),o.get(A)===void 0&&C(A),L)})},[o,C]),ne=(0,f.useCallback)(A=>{g(A),n&&_("preview"),x(!un(A)),G("idle"),V("idle");let S=++z.current;k({kind:"loading",path:A}),e.query({sessionId:t,query:{kind:"file-content",path:A}}).then(L=>{if(S!==z.current)return;let K=de(L,"file-content");if(K===null){k({kind:"error",path:A});return}if(K.tooLarge===!0){k({kind:"tooLarge",path:A});return}if(K.variant==="image"&&K.dataUrl!==void 0){k({kind:"image",path:A,dataUrl:K.dataUrl});return}if(K.variant==="text"){k({kind:"text",path:A,content:K.content??"",lines:K.lines??0});return}k({kind:"binary",path:A})}).catch(()=>{S===z.current&&k({kind:"error",path:A})})},[e,t,n]),Q=(0,f.useRef)({dirs:o,open:l,selected:p,file:m,renderMarkdown:v,pane:b});Q.current={dirs:o,open:l,selected:p,file:m,renderMarkdown:v,pane:b},(0,f.useEffect)(()=>()=>{Ia(t,Q.current)},[t]);let re=(0,f.useRef)(!1);(0,f.useEffect)(()=>{re.current||(re.current=!0,i!==null&&i.selected!==null&&m.kind==="idle"&&ne(i.selected))},[i,m.kind,ne]);let ae=(0,f.useMemo)(()=>Er("",0,{dirs:o,open:l,selected:p,toggleDir:$,selectFile:ne,t:r}),[o,l,p,$,ne,r]),q=async()=>{if(p===null)return;let A=z.current;try{await navigator.clipboard.writeText(p),A===z.current&&G("copied")}catch{A===z.current&&G("error")}},Y=async()=>{if(m.kind!=="text")return;let A=z.current;try{await navigator.clipboard.writeText(m.content),A===z.current&&V("copied")}catch{A===z.current&&V("error")}},N=(0,f.createElement)("div",{key:"left",className:"gp-files__tree",style:n?void 0:{flex:`0 0 ${U.width}px`}},ae),le=(0,f.createElement)("div",{key:"right",className:"gp-files__preview"},[p!==null?(0,f.createElement)("div",{key:"bar",className:"gp-files__bar"},[n?(0,f.createElement)("button",{key:"back",type:"button",className:"gp-subhead__back",onClick:()=>_("tree")},[(0,f.createElement)(Fe,{key:"i",size:14}),r("files.backToTree")]):null,(0,f.createElement)("code",{key:"path",className:"gp-files__path",title:p},p),m.kind==="text"&&La(m.path)?(0,f.createElement)("div",{key:"mode",className:"gp-files__mode",role:"group","aria-label":r("files.previewMode")},[(0,f.createElement)("button",{key:"source",type:"button",className:`gp-files__mode-btn${v?"":" gp-files__mode-btn--active"}`,"aria-pressed":!v,onClick:()=>x(!1)},r("files.source")),(0,f.createElement)("button",{key:"render",type:"button",className:`gp-files__mode-btn${v?" gp-files__mode-btn--active":""}`,"aria-pressed":v,onClick:()=>x(!0)},r("files.render"))]):null,(0,f.createElement)("button",{key:"copy",type:"button",className:`gp-files__copy-path${E==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{q()}},r(E==="copied"?"files.pathCopied":E==="error"?"files.pathCopyFailed":"files.copyPath")),m.kind==="text"?(0,f.createElement)("button",{key:"copy-content",type:"button",className:`gp-files__copy-path${X==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{Y()}},r(X==="copied"?"files.contentCopied":X==="error"?"files.contentCopyFailed":"files.copyContent")):null]):null,(0,f.createElement)("div",{key:"content",className:"gp-files__preview-content"},Va(m,v,P,r))]);return n?(0,f.createElement)("div",{className:"gp-files gp-files--compact"},b==="preview"?le:N):(0,f.createElement)("div",{className:"gp-files"},[N,U.divider,le])}function Va(e,t,n,r){return e.kind==="text"&&t&&Tr(e.path)?(0,f.createElement)("div",{className:"gp-files__markdown"},(0,f.createElement)(Se.MarkdownText,{text:e.content,labels:n,variant:"body"})):e.kind==="text"&&t&&un(e.path)?(0,f.createElement)("iframe",{className:"gp-files__html",title:e.path,srcDoc:e.content,sandbox:"allow-scripts",referrerPolicy:"no-referrer"}):Ka(e,r)}function Er(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 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,f.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,f.createElement)("span",{key:"c",className:"gp-tree-chev"},(0,f.createElement)(Ne,{size:11,open:s})),(0,f.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,f.createElement)(Se.FileTypeIcon,{kind:"folder",size:18})),(0,f.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)])),s&&a.push(...Er(o,t+1,n))}else{let s=n.selected===o;a.push((0,f.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,f.createElement)("span",{key:"c",className:"gp-tree-chev"}),(0,f.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,f.createElement)(Se.FileTypeIcon,{path:o,size:18})),(0,f.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)]))}}return r.truncated&&a.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"))),a}function Ka(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)(Ba,{content:e.content,path:e.path,t})}}function Ja(e,t){if(t==="")return[];let n=[];for(let r=0;r<e.length;r++)for(let[a,i]of _t(e[r],t))if(n.push({line:r,start:a,end:i}),n.length>=wt)return n;return n}function Ba({content:e,path:t,t:n}){let r=(0,f.useMemo)(()=>{let D=e.split(`
503
- `);return D.length>0&&D[D.length-1]===""&&D.pop(),D},[e]),a=e.length>Ha||r.length>Fa,i=a?void 0:(0,Se.languageForPath)(t),o=(0,Se.useCodeHighlighter)(i),s=(0,f.useMemo)(()=>a?void 0:o(r.join(`
504
- `)),[a,o,r]),[l,c]=(0,f.useState)(!1),[p,g]=(0,f.useState)(""),[m,k]=(0,f.useState)(!1),[v,x]=(0,f.useState)(0),{setEl:E,viewport:G,elRef:X}=Ht(),V=(0,f.useRef)(null),b=(0,f.useRef)(null);(0,f.useEffect)(()=>{c(!1),g(""),x(0)},[t]);let _=kt(p,xt),P=(0,f.useMemo)(()=>r.map(D=>D.toLowerCase()),[r]),z=m?_:_.toLowerCase(),U=m?r:P,C=(0,f.useMemo)(()=>Ja(U,z),[U,z]);(0,f.useEffect)(()=>{x(0)},[z]);let $=C.length===0?0:Math.min(v,C.length-1),ne=(0,f.useMemo)(()=>{let D=new Map;for(let M of C){let oe=D.get(M.line)??[];oe.push([M.start,M.end]),D.set(M.line,oe)}return D},[C]);(0,f.useEffect)(()=>{let D=M=>{if(!((M.ctrlKey||M.metaKey)&&(M.key==="f"||M.key==="F")))return;let oe=X.current;oe===null||oe.offsetParent===null||(M.preventDefault(),c(!0),requestAnimationFrame(()=>V.current?.select()))};return document.addEventListener("keydown",D),()=>document.removeEventListener("keydown",D)},[]);let Q=r.length,re=(0,f.useMemo)(()=>Pt(new Array(Q).fill(Ft)),[Q]),ae=G.height>0?G.height:za,{first:q,last:Y}=Lt(re,G.top,ae,pn*Ft),N=C.length>0?C[$].line:-1,le=N>=0?Math.min(q,Math.max(0,N-pn)):q,A=N>=0?Math.max(Y,Math.min(Q,N+pn)):Y;(0,f.useEffect)(()=>{if(N<0)return;let D=requestAnimationFrame(()=>b.current?.scrollIntoView({block:"center",inline:"nearest"}));return()=>cancelAnimationFrame(D)},[$,C,N]);let S=(0,f.useCallback)(D=>{x(M=>C.length===0?0:(M+D+C.length)%C.length)},[C.length]),L=C.length>0?C[$]:null,K=l?(0,f.createElement)(Ct,{inputRef:V,query:p,matches:C.length,active:$,caseSensitive:m,onChange:g,onToggleCase:()=>k(D=>!D),onStep:S,onClose:()=>c(!1),t:n}):null,ee=a||l?(0,f.createElement)("div",{key:"hd",className:"gp-files__header"},[a?(0,f.createElement)("div",{key:"note",className:"gp-files__note"},n("files.highlightOff")):null,K]):null,ce=[];for(let D=le;D<A;D++)ce.push((0,f.createElement)("div",{key:D,className:"gp-files__row",style:{top:D*Ft}},[(0,f.createElement)("div",{key:"n",className:"gp-diff-no"},D+1),Oa(r[D],D,s?.[D],ne.get(D),L,b,n)]));return(0,f.createElement)("div",{className:"gp-files__code gp-diff__scroll",ref:E},[ee,(0,f.createElement)("div",{key:"grid",className:"gp-files__single gp-files__single--virt",style:{height:Q*Ft}},ce)])}function Oa(e,t,n,r,a,i,o){if(e==="")return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},"\xA0");if(e.length>Nr)return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},[e.slice(0,Nr),(0,f.createElement)("span",{key:"trunc",className:"gp-files__trunc"},o("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,c)=>(0,f.createElement)("span",{key:c,style:l.style},l.text)):e);let s=a!==null&&a.line===t?[a.start,a.end]:null;return(0,f.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},St(e,r,n,`c${t}`,s,i))}var zt=require("react"),qa=620;function Rr(e){let[t,n]=(0,zt.useState)(!1);return(0,zt.useLayoutEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let r=()=>n(e.clientWidth>0&&e.clientWidth<=qa);r();let a=new ResizeObserver(r);return a.observe(e),()=>a.disconnect()},[e]),t}var Gr="gp.panel.fontDelta";function Wa(){if(typeof localStorage>"u")return 0;let e=Number(localStorage.getItem(Gr));return e===-1||e===1?e:0}function Mr({ctx:e,sessionId:t,t:n}){let[r,a]=(0,T.useState)(Wa),[i,o]=(0,T.useState)(null),[s,l]=(0,T.useState)(null),c=Rr(s),p=ft(t),g=We(e),m=p.state==="error"&&p.error.code==="git-unavailable",k=p.state==="error"&&(p.error.code==="not-a-git-repo"||p.error.code==="git-unavailable"),v=m&&p.state==="error"&&p.error.isGitRepo===!0,x=k?"files":i!==null&&i.sessionId===t?i.tab:null,E=(0,T.useRef)({tabs:new Set});E.current.sessionId!==t&&(E.current={sessionId:t,tabs:new Set}),x!==null&&E.current.tabs.add(x);let G=E.current.tabs.has("files");(0,T.useEffect)(()=>{if(!Ce(t))return;if(k){o(null);return}if(i?.sessionId===t)return;let C=Dn(t);if(C!==null){o({sessionId:t,tab:C});return}let $=Ln(t);if($!==null){o({sessionId:t,tab:$});return}p.state==="ready"&&o({sessionId:t,tab:p.snapshot.dirty?"changes":"overview"})},[t,p,k,i?.sessionId]),(0,T.useEffect)(()=>{if(Ce(t))return An(t,C=>o({sessionId:t,tab:C}))},[t]);let X=(0,T.useRef)({tab:null});X.current={sessionId:t,tab:x},(0,T.useEffect)(()=>()=>{let{sessionId:C,tab:$}=X.current;C!==void 0&&$!==null&&Pn(C,$)},[]);let V=p.state==="ready"?p.snapshot.checkedAt:0,b=async C=>{if(!Ce(t))return{ok:!1,error:n("error.noCwd")};let $=await g.run({sessionId:t,action:C});return $.ok?(je(t).accept($.snapshot),{ok:!0}):(je(t).resync(),{ok:!1,error:et($.error.code,$.error.message,n)})},_=C=>{a(C),typeof localStorage<"u"&&localStorage.setItem(Gr,String(C))},P=[{key:"overview",label:n("tab.overview"),icon:(0,T.createElement)(mt,{size:14})},{key:"changes",label:n("tab.changes"),icon:(0,T.createElement)($n,{size:14})},{key:"files",label:n("tab.files"),icon:(0,T.createElement)(Bn,{size:14})}],z=k?P.filter(C=>C.key==="files"):P,U=(()=>{if(!Ce(t))return(0,T.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(p.state==="no-cwd")return(0,T.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(k){let $=G?(0,T.createElement)(fn,{key:t,remote:g,sessionId:t,compact:c,t:n}):null;return v?(0,T.createElement)("div",{className:"gp-files-wrap"},[(0,T.createElement)("div",{key:"notice",className:"gp-notice"},n("files.gitNotInstalled")),$]):(0,T.createElement)("div",{style:{display:"contents"}},$)}if(p.state==="error")return(0,T.createElement)("div",{className:"gp-empty"},n("pill.unavailable"));if(p.state==="cold"||p.state==="loading"||x===null)return(0,T.createElement)("div",{className:"gp-empty"},n("common.loading"));let C=p.snapshot;return(0,T.createElement)("div",{style:{display:"contents"}},[E.current.tabs.has("overview")?(0,T.createElement)("div",{key:"overview",style:x==="overview"?{display:"contents"}:{display:"none"}},(0,T.createElement)(wr,{key:t,remote:g,sessionId:t,refreshKey:V,defaultDiffView:C.defaultDiffView,snapshot:C,onAction:b,onResync:()=>je(t).resync(),compact:c,t:n})):null,E.current.tabs.has("changes")?(0,T.createElement)("div",{key:"changes",style:x==="changes"?{display:"contents"}:{display:"none"}},(0,T.createElement)(Cr,{key:t,remote:g,sessionId:t,snapshot:C,onAction:b,compact:c,t:n})):null,G?(0,T.createElement)("div",{key:"files",style:x==="files"?{display:"contents"}:{display:"none"}},(0,T.createElement)(fn,{key:t,remote:g,sessionId:t,compact:c,t:n})):null])})();return(0,T.createElement)("div",{className:"gp-panel",ref:l,"data-conversation-composer-overlay":"","data-font-delta":r,"data-layout":c?"compact":"wide"},[(0,T.createElement)("div",{key:"tabs",className:"gp-tabbar",role:"tablist"},[...z.map(C=>(0,T.createElement)("button",{key:C.key,type:"button",role:"tab","aria-selected":x===C.key,className:`gp-tab${x===C.key?" gp-tab--active":""}`,onClick:()=>{Ce(t)&&o({sessionId:t,tab:C.key})}},[(0,T.createElement)("span",{key:"i",className:"gp-tab__icon"},C.icon),(0,T.createElement)("span",{key:"l",className:"gp-tab__label"},C.label)])),(0,T.createElement)("div",{key:"trailing",className:"gp-tabbar__trailing"},[(0,T.createElement)("div",{key:"font",className:"gp-font"},[(0,T.createElement)("button",{key:"dec",type:"button",className:"gp-font__decrease",onClick:()=>_(-1),"aria-label":n("panel.fontDecrease")},"A\u2212"),(0,T.createElement)("button",{key:"reset",type:"button",className:"gp-font__reset",onClick:()=>_(0),"aria-label":n("panel.fontReset")},"A"),(0,T.createElement)("button",{key:"inc",type:"button",className:"gp-font__increase",onClick:()=>_(1),"aria-label":n("panel.fontIncrease")},"A+")]),(0,T.createElement)(ja,{key:"ver",remote:g,t:n})])]),(0,T.createElement)("div",{key:"body",className:"gp-body"},U)])}function ja({remote:e,t}){let[n,r]=(0,T.useState)({kind:"idle"});(0,T.useEffect)(()=>{let s=!0;return e.version({}).then(l=>{s&&"current"in l&&r(c=>({...c,info:l}))}),()=>{s=!1}},[e]);let a=async()=>{r(l=>({kind:"checking",info:l.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,T.createElement)("span",{className:"gp-verbar__status"},t("version.checking")):i===void 0||!i.checkedRemote?null:i.error!==void 0?(0,T.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,T.createElement)("span",{},[(0,T.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,T.createElement)("a",{key:"l",className:"gp-verbar__link",href:i.releaseUrl,target:"_blank",rel:"noreferrer",style:{marginLeft:8}},t("version.viewRelease")):null]):(0,T.createElement)("span",{className:"gp-verbar__status gp-verbar__status--ok"},t("version.upToDate",{current:i.current}));return(0,T.createElement)("div",{className:"gp-verbar"},[i!==void 0?(0,T.createElement)("span",{key:"tag",className:"gp-verbar__tag"},`v${i.current}`):null,o,(0,T.createElement)("button",{key:"btn",type:"button",className:"gp-verbar__btn",disabled:n.kind==="checking",onClick:()=>void a()},[(0,T.createElement)("span",{key:"i",className:"gp-tab__icon"},(0,T.createElement)(ht,{size:12})),t("version.check")]),i?.repositoryUrl!==void 0?(0,T.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,T.createElement)(On,{size:15})):null])}var te=require("react"),Lr=require("react-dom");var Dr="data-gp-tab-dot",Je,mn=null,Ar="",It=null,$t;function Ua(e){if(typeof document>"u")return null;let t=document.querySelectorAll(Ye);for(let n of t)if((n.textContent??"").trim()===e)return n;return null}function hn(){let e=Ua(Ar);if(e===null)return;let t=e.querySelector(`[${Dr}]`);if(It===null){t?.remove();return}let n=`gp-tab-dot gp-tab-dot--${It}`;if(t!==null){t.className!==n&&(t.className=n);return}let r=document.createElement("span");r.className=n,r.setAttribute(Dr,""),r.setAttribute("aria-hidden","true"),e.appendChild(r)}function Qa(){if(typeof document>"u"||typeof MutationObserver>"u")return;let e=document.querySelector(Gn);if(e!==mn){if(Je?.disconnect(),mn=e,e===null){Je=void 0;return}Je=new MutationObserver(()=>hn()),Je.observe(e,{childList:!0,subtree:!0})}}function Ya(){Je?.disconnect(),Je=void 0,mn=null}function Pr(e,t,n){if(!(typeof document>"u")){if(n===null){yn(e);return}$t=e,Ar=t,It=n,Qa(),hn()}}function yn(e){$t!==void 0&&$t!==e||($t=void 0,It=null,hn(),Ya())}function Za(e){let t=e.replace(/[/\\]+$/,"").split(/[/\\]/);return t[t.length-1]||e}function ei(){let[e,t]=(0,te.useState)(!1),[n,r]=(0,te.useState)(null),a=(0,te.useRef)(null);return(0,te.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,Lr.createPortal)((0,te.createElement)("div",{className:"gp-tip",style:{left:n.left,bottom:n.bottom}},s.map((l,c)=>(0,te.createElement)("div",{key:c,className:c===0?"gp-tip__path":"gp-tip__note"},l))),document.body)}}function ti(e){let[t,n]=(0,te.useState)(!1);return(0,te.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let a=e.closest("[data-conversation-region]")??document.body,i=()=>n(a.clientWidth>0&&a.clientWidth<ni);i();let o=new ResizeObserver(i);return o.observe(a),()=>o.disconnect()},[e]),t}var ni=620;function Hr({sessionId:e,t}){let n=ft(e),r=ei(),[a,i]=(0,te.useState)(null),o=ti(a),s=(0,te.useRef)(Symbol("gp-tab-dot")),l=n.state==="ready"&&n.snapshot.showInputPill===!1?n.snapshot.dirty?"dirty":"synced":null,c=t("panel.tab");if((0,te.useEffect)(()=>{Pr(s.current,c,l);let E=s.current;return()=>{yn(E)}},[c,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,te.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 g=Za(p.root),m=p.branch??`(${t("pill.detached")})`,k=p.dirty,v=k?"gp-pill--dirty":"gp-pill--synced",x=()=>{if(Fn(c)){zn(c);return}Ce(e)&&Mn(e,k?"changes":"overview"),Hn(c)};return(0,te.createElement)("span",{className:"gp-pill-wrap",ref:i},[(0,te.createElement)("button",{key:"btn",type:"button",className:`gp-pill ${v}${o?" gp-pill--compact":""}`,onClick:x,ref:r.bind.ref,onMouseEnter:r.bind.onMouseEnter,onMouseLeave:r.bind.onMouseLeave},[(0,te.createElement)("span",{key:"dot",className:"gp-pill__dot","aria-hidden":"true"}),(0,te.createElement)("span",{key:"repo",className:"gp-pill__repo"},g),(0,te.createElement)("span",{key:"git",className:"gp-pill__git"},["(",(0,te.createElement)("span",{key:"b",className:"gp-pill__branch"},m),")"])]),r.render([p.root,t(k?"pill.dirty":"pill.synced")])])}var J=require("react");function ri(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 Fr({ctx:e,t}){let[,n]=(0,J.useState)(0),[r,a]=(0,J.useState)(!1),[i,o]=(0,J.useState)(!1),[s,l]=(0,J.useState)(null),[c,p]=(0,J.useState)(null),[g,m]=(0,J.useState)(null),[k,v]=(0,J.useState)(null),x=()=>{n(N=>N+1)},E=e.get("configForms"),G=(0,J.useMemo)(()=>E?.describe(),[E]);(0,J.useEffect)(()=>{if(G!==void 0)return G.ensure(),G.subscribe(x)},[G]);let X=G?.getSnapshot().view,V=(0,J.useMemo)(()=>X===void 0?void 0:ri(X.namespaces),[X]),b=(0,J.useMemo)(()=>E!==void 0&&V!==void 0?E.get(V):void 0,[E,V]);(0,J.useEffect)(()=>{if(b!==void 0)return b.subscribe(x)},[b]);let _=b?.getSnapshot(),P=b!==void 0&&_!==void 0&&_.status==="ready",z=G?.getSnapshot().status,U=s??(typeof _?.value?.showInputPill=="boolean"?_.value.showInputPill:!0),C=c??(_?.value?.defaultDiffView==="split"?"split":"unified"),$=g??(_?.value?.graphStyle==="compact"?"compact":"parallel"),ne=k??(typeof _?.value?.suggestEnabled=="boolean"?_.value.suggestEnabled:!0),Q=async(N,le,A)=>{if(b!==void 0){o(!1),a(!0);try{let S=await b.set(N,le);A(),S?(Ue(),setTimeout(()=>Ue(),1e3)):o(!0)}catch{A(),o(!0)}finally{a(!1)}}},re=N=>(l(N),Q("showInputPill",N,()=>l(null))),ae=N=>N===C?Promise.resolve():(p(N),Q("defaultDiffView",N,()=>p(null))),q=N=>N===$?Promise.resolve():(m(N),Q("graphStyle",N,()=>m(null))),Y=N=>(v(N),Q("suggestEnabled",N,()=>v(null)));return E===void 0?(0,J.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded")):P?(0,J.createElement)("div",{className:"gp-cfg"},[(0,J.createElement)("h3",{key:"title",className:"gp-cfg__title"},t("cfg.title")),(0,J.createElement)("label",{key:"row",className:"gp-cfg__row"},[(0,J.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:U,disabled:r||_?.writable===!1,onChange:N=>{re(N.currentTarget.checked)}}),(0,J.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.toggle"))]),(0,J.createElement)("p",{key:"hint",className:"gp-cfg__hint"},t("cfg.hint")),(0,J.createElement)("h3",{key:"difftitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.diffTitle")),(0,J.createElement)("div",{key:"diffseg",className:"gp-seg gp-cfg__seg"},Ge(["unified","split"],C,N=>{ae(N)},N=>t(N==="unified"?"cfg.diffUnified":"cfg.diffSplit"),r||_?.writable===!1)),(0,J.createElement)("p",{key:"diffhint",className:"gp-cfg__hint"},t("cfg.diffHint")),(0,J.createElement)("h3",{key:"graphtitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.graphTitle")),(0,J.createElement)("div",{key:"graphseg",className:"gp-seg gp-cfg__seg"},Ge(["parallel","compact"],$,N=>{q(N)},N=>t(N==="parallel"?"cfg.graphParallel":"cfg.graphCompact"),r||_?.writable===!1)),(0,J.createElement)("p",{key:"graphhint",className:"gp-cfg__hint"},t("cfg.graphHint")),(0,J.createElement)("h3",{key:"sgtitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.suggestTitle")),(0,J.createElement)("label",{key:"sgrow",className:"gp-cfg__row"},[(0,J.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:ne,disabled:r||_?.writable===!1,onChange:N=>{Y(N.currentTarget.checked)}}),(0,J.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.suggestToggle"))]),(0,J.createElement)("p",{key:"sghint",className:"gp-cfg__hint"},t("cfg.suggestHint")),i?(0,J.createElement)("p",{key:"error",className:"gp-cfg__err",role:"alert"},t("cfg.saveFailed")):null]):z==="idle"||z==="loading"?(0,J.createElement)("p",{className:"gp-cfg__hint"},t("common.loading")):(0,J.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded"))}var nt="gitPanel",ai=["dsh-git-panel","@xbzbing/dsh-git-panel"],ii=["slots","locale","connection"],oi="dsh-git-panel";function si(e){_n(),En(e),e.effect(()=>e.locale.register(nt,{zh:Sn,en:Cn})??void 0,"dsh-git-panel: dictionaries");let t=e.locale.bind(nt),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:nt,label:()=>t("panel.tab")},a=>(0,Xt.createElement)(Mr,{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:nt},a=>(0,Xt.createElement)(Hr,{sessionId:a.sessionId,t}))));for(let a of ai)r(e.slots.inject("plugins.bundle.config",()=>e.slots.register({name:"plugins.bundle.config",key:a,locale:nt},i=>i.view==="summary"?t("cfg.title"):(0,Xt.createElement)(Fr,{ctx:e,t}))));e.effect(()=>{let a=e.on("connection/reset",()=>Ue());return()=>{typeof a=="function"&&a();for(let i of n.splice(0))try{i()}catch{}Rn()}},"dsh-git-panel: lifecycle")}module.exports={name:oi,inject:ii,apply:si};
535
+ ${l("ops.dirtyWarn")}`:""),confirmLabel:l("revert.confirm"),danger:!1,error:re,confirmBusy:Z,onConfirm:()=>void Ae(),onClose:()=>te(null),t:l}):null,Y!==null?Cr(Y,{from:a.head??Y.shortHash,dirty:a.dirty,lostFiles:Ue,lostTotal:Ue.length,lostTruncated:a.truncated,busy:Z,error:re,onReset:ut,onClose:()=>ie(null),t:l}):null,X?Ke({title:l("status.pullConfirmTitle"),body:l("status.pullConfirmBody",{branch:a.branch??"HEAD",behind:a.behind}),extra:Tr(ce,l),confirmLabel:l("status.pullConfirm"),danger:!1,error:re,confirmBusy:C,busyLabel:l("status.pulling"),onConfirm:()=>void en(),onClose:()=>j(!1),t:l}):null],Qe=(0,d.createElement)("div",{key:"mid",className:"gp-col gp-col--mid gp-history"},[(0,d.createElement)("div",{key:"tb",className:"gp-toolbar",ref:w},[s?(0,d.createElement)("button",{key:"filter",type:"button",className:`gp-btn${c.ref!==null?" gp-btn--primary":""}`,title:l("overview.filterBranch"),onClick:()=>W(!0)},[(0,d.createElement)(Kn,{key:"ic",size:13}),c.ref??l("overview.filterBranch")]):null,(0,d.createElement)("input",{key:"search",className:"gp-search",placeholder:l(_||s?"overview.searchShort":"overview.search"),value:u,onChange:g=>f(g.target.value)}),(0,d.createElement)("select",{key:"author",className:"gp-select",value:c.author,onChange:g=>p(v=>({...v,author:g.target.value}))},[(0,d.createElement)("option",{key:"",value:""},l("overview.allUsers")),...Ot.map(g=>(0,d.createElement)("option",{key:g,value:g},g))]),(0,d.createElement)("select",{key:"since",className:"gp-select",value:c.since,onChange:g=>p(v=>({...v,since:g.target.value}))},[(0,d.createElement)("option",{key:"",value:""},l("overview.allTime")),(0,d.createElement)("option",{key:"today",value:"1 day ago"},l("overview.today")),(0,d.createElement)("option",{key:"7d",value:"7 days ago"},l("overview.last7d")),(0,d.createElement)("option",{key:"30d",value:"30 days ago"},l("overview.last30d"))]),(0,d.createElement)("button",{key:"fetch",type:"button",className:"gp-icon-btn",title:l("overview.fetch"),onClick:()=>{e.run({sessionId:t,action:{kind:"fetch"}}).then(()=>ke())}},(0,d.createElement)(wt,{size:14}))]),(0,d.createElement)("div",{key:"list",className:"gp-history__list",ref:lt,onScroll:Ut},ve.length===0?(0,d.createElement)("div",{className:"gp-empty"},l(ot?"common.loading":st?"overview.loadFailed":"overview.noResults")):qe.map(g=>Pa(g,{selected:Q?.hash===g.commit.hash,gridTpl:We,graphW:Pe,laneCount:dt,searching:we,now:jt,compact:s,rowH:Wt,onSelect:()=>ye(g.commit),onHoverEnter:J.onHoverEnter,onHoverLeave:J.onHoverLeave,t:l})))]),y=Q===null?[(0,d.createElement)("div",{key:"empty",className:"gp-empty"},[(0,d.createElement)(vt,{key:"i",size:20}),l("overview.selectCommit")])]:[(0,d.createElement)("div",{key:"files",className:"gp-detail__files"},J.detail===null?(0,d.createElement)("div",{className:"gp-empty"},J.detailError?l("overview.detailFailed"):l("common.loading")):La(Qt,{activePath:J.fileDiff?.path??null,openTitle:l("overview.openFileDiff"),onOpen:g=>{Q!==null&&J.openFileDiff(g,Q.hash,Q.shortHash)}})),(0,d.createElement)("div",{key:"msg",className:"gp-detail__msg"},[(0,d.createElement)("div",{key:"subj",className:"gp-detail__subject"},Q.subject),(0,d.createElement)("div",{key:"meta",className:"gp-detail__meta"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},Q.shortHash),(0,d.createElement)("span",{key:"a"},Q.author),(0,d.createElement)("span",{key:"t"},dn(Q.dateIso))]),(0,d.createElement)("div",{key:"ops",className:"gp-detail__ops"},(()=>{let g=Q.refs.filter(v=>v.kind==="tag");return[g.length>0?(0,d.createElement)("div",{key:"tags",className:"gp-detail__tags"},g.map(v=>(0,d.createElement)("span",{key:`tag-${v.name}`,className:"gp-ref-chip gp-ref-chip--tag gp-ref-chip--del",title:v.name},[(0,d.createElement)(He,{key:"i",size:11}),(0,d.createElement)("span",{key:"n",className:"gp-detail__tagname"},v.name),(0,d.createElement)("button",{key:"x",type:"button",className:"gp-ref-chip__x",title:l("tag.deleteOne",{name:v.name}),onClick:()=>{B(null),S(v.name)}},(0,d.createElement)(Fe,{size:11}))]))):null,(0,d.createElement)("div",{key:"actions",className:"gp-detail__actions"},[(0,d.createElement)("button",{key:"revert",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.revert"),onClick:()=>{B(null),te({hash:Q.hash,shortHash:Q.shortHash,subject:Q.subject})}},[(0,d.createElement)(Wn,{key:"i",size:12}),l("overview.revert")]),(0,d.createElement)("button",{key:"reset",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.reset"),onClick:()=>{B(null),o(),ie({hash:Q.hash,shortHash:Q.shortHash,subject:Q.subject})}},[(0,d.createElement)(xt,{key:"i",size:12}),l("overview.reset")]),(0,d.createElement)("button",{key:"addtag",type:"button",className:"gp-btn gp-btn--sm",title:l("overview.createTag"),onClick:()=>{B(null),M({hash:Q.hash,shortHash:Q.shortHash})}},[(0,d.createElement)(He,{key:"i",size:12}),l("overview.createTag")])])]})()),J.detail!==null&&J.detail.body!==""?(0,d.createElement)("pre",{key:"body",className:"gp-detail__body"},J.detail.body):(0,d.createElement)("div",{key:"nb",className:"gp-empty"},l("overview.noMessage"))])];return s?(0,d.createElement)("div",{className:"gp-overview gp-overview--compact"},[Te,...je,ae==="detail"?(0,d.createElement)("div",{key:"detail",className:"gp-col gp-col--mid gp-detail"},[(0,d.createElement)("div",{key:"back",className:"gp-subhead"},[(0,d.createElement)("button",{key:"b",type:"button",className:"gp-subhead__back",onClick:()=>pe("list")},[(0,d.createElement)(ze,{key:"i",size:14}),l("overview.backToList")]),Q!==null?(0,d.createElement)("span",{key:"h",className:"gp-subhead__title gp-commit-hash"},Q.shortHash):null]),...y]):Qe,mn(a,{syncBusy:oe,pullBusy:C,onCheck:()=>void ft(),onPull:()=>{B(null),j(!0)},t:l}),fe?Da(U,me,c.ref,N,{onFilter:g=>{gt(g),W(!1)},onToggle:g=>P(v=>{let I=new Set(v);return I.has(g)?I.delete(g):I.add(g),I}),onRetry:ke,onClose:()=>W(!1),t:l}):null]):(0,d.createElement)("div",{className:"gp-overview"},[Te,...je,(0,d.createElement)("div",{key:"left",className:"gp-col gp-col--left",style:{flex:`0 0 ${ct.width}px`}},[(0,d.createElement)("div",{key:"scroll",className:"gp-col-left__scroll"},Gr(U,me,c.ref,N,{onFilter:g=>gt(g),onToggle:g=>P(v=>{let I=new Set(v);return I.has(g)?I.delete(g):I.add(g),I}),onRetry:ke,t:l})),mn(a,{syncBusy:oe,pullBusy:C,onCheck:()=>void ft(),onPull:()=>{B(null),j(!0)},t:l})]),ct.divider,Qe,pt.divider,(0,d.createElement)("div",{key:"right",className:"gp-col gp-col--right gp-detail",style:{flex:`0 0 ${pt.width}px`}},y),Ma(J.hover,J.hoverBody,l)])}function Ma(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,d.createElement)("div",{className:"gp-hovercard",style:{left:a,top:i,maxWidth:r}},[(0,d.createElement)("div",{key:"subj",className:"gp-hovercard__subject"},e.commit.subject),(0,d.createElement)("div",{key:"meta",className:"gp-hovercard__meta"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},e.commit.shortHash),(0,d.createElement)("span",{key:"a"},e.commit.author),(0,d.createElement)("span",{key:"t"},dn(e.commit.dateIso))]),t===null?(0,d.createElement)("div",{key:"l",className:"gp-hovercard__loading"},n("common.loading")):t===""?(0,d.createElement)("div",{key:"e",className:"gp-hovercard__loading"},n("overview.noMessage")):(0,d.createElement)("pre",{key:"body",className:"gp-hovercard__body"},t)]);return(0,Ft.createPortal)(o,document.body,"commit-hovercard")}function Gr(e,t,n,r,a){if(t)return(0,d.createElement)("div",{className:"gp-empty"},[(0,d.createElement)("span",{key:"m"},a.t("overview.branchesError")),(0,d.createElement)("button",{key:"r",type:"button",className:"gp-btn",style:{marginTop:8},onClick:a.onRetry},a.t("common.retry"))]);if(e===null)return(0,d.createElement)("div",{className:"gp-empty"},a.t("common.loading"));let i=(o,s,l,c,p="")=>(0,d.createElement)("div",{key:o,className:"gp-branch-group"},[(0,d.createElement)("div",{key:"head",className:"gp-branch-group__head",onClick:()=>a.onToggle(o)},[(0,d.createElement)(Ne,{key:"c",size:11,open:!r.has(o)}),`${a.t(s)} (${l.length})`]),r.has(o)?null:l.map(u=>{let f=p+u.name,x=e.current===u.name,w=`gp-branch-row${n===f?" gp-branch-row--active":""}${x?" gp-branch-row--current":""}`;return(0,d.createElement)("div",{key:u.name,className:w,title:u.name,onClick:()=>a.onFilter(n===f?null:f)},[(0,d.createElement)("span",{key:"i",style:{display:"inline-flex",width:14}},c),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},u.name),u.ahead||u.behind?(0,d.createElement)("span",{key:"t",className:"gp-branch-row__track"},`${u.ahead?`\u2191${u.ahead}`:""}${u.behind?`\u2193${u.behind}`:""}`):null])})]);return(0,d.createElement)("div",{},[(0,d.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,d.createElement)(sn,{size:13})),i("remote","overview.remote",e.remote,(0,d.createElement)(sn,{size:13})),i("tags","overview.tags",e.tags,(0,d.createElement)(He,{size:13}))])}function Da(e,t,n,r,a){if(typeof document>"u")return null;let i=(0,d.createElement)("div",{className:"gp-sheet-backdrop",onClick:o=>{o.target===o.currentTarget&&a.onClose()}},(0,d.createElement)("div",{className:"gp-sheet",role:"dialog","aria-modal":!0},[(0,d.createElement)("div",{key:"bar",className:"gp-sheet__bar"},[(0,d.createElement)("span",{key:"title",className:"gp-sheet__title"},a.t("overview.filterBranch")),(0,d.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-sheet__close",title:a.t("common.close"),onClick:a.onClose},(0,d.createElement)(Fe,{size:15}))]),(0,d.createElement)("div",{key:"body",className:"gp-sheet__body"},Gr(e,t,n,r,a))]));return(0,Ft.createPortal)(i,document.body,"branch-filter-sheet")}function Pa(e,t){let n=e.commit,r=n.refs.map(i=>(0,d.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,d.createElement)("div",{key:"g",className:"gp-graph-cell"},t.searching?null:Aa(e,t.laneCount,t.rowH));return t.compact?(0,d.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,d.createElement)("div",{key:"tx",className:"gp-commit-lines"},[(0,d.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,d.createElement)("div",{key:"m",className:"gp-commit-sub"},[(0,d.createElement)("span",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,d.createElement)("span",{key:"a",className:"gp-commit-author"},n.author),(0,d.createElement)("span",{key:"d",className:"gp-commit-date"},$e(n.dateIso,t.now,t.t))])])]):(0,d.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,d.createElement)("div",{key:"s",className:"gp-commit-subject"},[...r,n.subject]),(0,d.createElement)("div",{key:"h",className:"gp-commit-hash"},n.shortHash),(0,d.createElement)("div",{key:"a",className:"gp-commit-author"},n.author),(0,d.createElement)("div",{key:"d",className:"gp-commit-date",title:rt(n.dateIso)},$e(n.dateIso,t.now,t.t))])}var Ht=["#4e9bff","#3fb950","#e0982e","#d05ce3","#e5534b","#2dc6c6","#d29922","#8b949e"];function Aa(e,t,n=Er){let r=Math.max(Ve,t*Ve),a=s=>s*Ve+Ve/2,i=n/2,o=[];for(let s of e.edges){let l=Ht[s.color%Ht.length],c=s.kind==="out"?i:0,p=s.kind==="into"?i:n,u=(c+p)/2;o.push((0,d.createElement)("path",{key:`e${s.kind}-${s.fromLane}-${s.toLane}-${s.color}`,d:`M ${a(s.fromLane)} ${c} C ${a(s.fromLane)} ${u}, ${a(s.toLane)} ${u}, ${a(s.toLane)} ${p}`,stroke:l,strokeWidth:1.6,fill:"none"}))}return o.push((0,d.createElement)("circle",{key:"node",cx:a(e.lane),cy:i,r:e.merge?4:3.2,fill:Ht[e.color%Ht.length],stroke:"var(--dsw-alias-bg-layer-1)",strokeWidth:1})),(0,d.createElement)("svg",{className:"gp-graph-svg",width:r,height:n},o)}function La(e,t){let n=[],r=(a,i)=>{for(let o of a)if(o.dir)n.push((0,d.createElement)("div",{key:o.path,className:"gp-tree-row",style:{paddingLeft:10+i*14}},[(0,d.createElement)(Ne,{key:"c",size:11,open:!0}),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)])),r(o.children,i+1);else{let s=String(o.meta??"modified"),l=t.activePath===o.path;n.push((0,d.createElement)("div",{key:o.path,className:`gp-tree-row${l?" gp-tree-row--active":""}`,style:{paddingLeft:10+i*14},title:t.openTitle,onClick:()=>t.onOpen(o.path)},[(0,d.createElement)("span",{key:"st",className:`gp-status-badge ${_t(s)}`},(kt[s]??s[0]??"M").toUpperCase()),(0,d.createElement)("span",{key:"n",className:"gp-tree-name"},o.name)]))}};return r(e,0),(0,d.createElement)("div",{},n)}function Ha(e,t){if(e===null||typeof document>"u")return null;let{text:n,error:r,mode:a,onMode:i,expanded:o,onExpand:s,onClose:l,remote:c,sessionId:p,compact:u,t:f}=t,x=u?["unified","before","after"]:["unified","split","before","after"],w=u&&a==="split"?"unified":a,_=(0,d.createElement)("div",{className:"gp-modal-backdrop",onClick:N=>{N.target===N.currentTarget&&l()}},(0,d.createElement)("div",{className:"gp-modal",role:"dialog","aria-modal":!0},[(0,d.createElement)("div",{key:"bar",className:"gp-modal__bar"},[(0,d.createElement)("span",{key:"fileicon",className:"gp-modal__fileicon"},(0,d.createElement)(On,{size:15})),(0,d.createElement)("span",{key:"path",className:"gp-modal__path",title:e.path},Fa(e.path)),(0,d.createElement)("span",{key:"hash",className:"gp-modal__hash"},e.shortHash),n!==null&&n!==""?(()=>{let N=Lt(n);return(0,d.createElement)("span",{key:"sum",className:"gp-modal__sum"},[(0,d.createElement)("span",{key:"a",className:"gp-stats__add"},`+${N.add}`),(0,d.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${N.del}`)])})():null,(0,d.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${o?" gp-seg__btn--active":""}`,disabled:w!=="split"&&w!=="unified",title:f(o?"diff.collapse":"diff.expandAll"),onClick:()=>s(!o)},f(o?"diff.collapse":"diff.expandAll")),(0,d.createElement)("div",{key:"seg",className:"gp-seg"},Me(x,w,i,N=>f(`diff.${N}`))),(0,d.createElement)("button",{key:"close",type:"button",className:"gp-icon-btn gp-modal__close",title:f("common.close"),onClick:l},(0,d.createElement)(Fe,{size:15}))]),(0,d.createElement)("div",{key:"scroll",className:"gp-modal__scroll"},n===null?(0,d.createElement)("div",{className:"gp-empty"},f(r?"overview.diffFailed":"common.loading")):(0,d.createElement)(At,{text:n,mode:w,path:e.path,remote:c,sessionId:p,imageSpec:{base:"commit",commit:e.hash},t:f}))]));return(0,Ft.createPortal)(_,document.body,"file-diff-modal")}function Fa(e){let t=e.lastIndexOf("/");return t<0?[(0,d.createElement)("span",{key:"n",className:"gp-modal__name"},e)]:[(0,d.createElement)("span",{key:"d",className:"gp-modal__dir"},e.slice(0,t+1)),(0,d.createElement)("span",{key:"n",className:"gp-modal__name"},e.slice(t+1))]}var m=require("react");var he=require("react");function Mr({stats:e,t}){let n=Date.now(),r=[(0,he.createElement)("span",{key:"files",className:"gp-stats__item"},t("stats.files",{n:e.fileCount})),(0,he.createElement)("span",{key:"lines",className:"gp-stats__item"},[(0,he.createElement)("span",{key:"a",className:"gp-stats__add"},`+${e.insertions}`)," ",(0,he.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${e.deletions}`)])];e.staged>0&&r.push((0,he.createElement)("span",{key:"st",className:"gp-stats__item"},t("stats.staged",{n:e.staged}))),e.modified>0&&r.push((0,he.createElement)("span",{key:"mo",className:"gp-stats__item"},t("stats.modified",{n:e.modified}))),e.untracked>0&&r.push((0,he.createElement)("span",{key:"un",className:"gp-stats__item"},t("stats.untracked",{n:e.untracked}))),e.partial&&r.push((0,he.createElement)("span",{key:"partial",className:"gp-stats__item gp-stats__partial",title:t("stats.partialHint")},t("stats.partial")));let a=[];return e.lastChangeAt!==null&&a.push((0,he.createElement)("span",{key:"lc",className:"gp-stats__item",title:rt(e.lastChangeAt)},t("stats.lastChange",{time:$e(e.lastChangeAt,n,t)}))),e.headCommittedAt!==null&&a.push((0,he.createElement)("span",{key:"hc",className:"gp-stats__item",title:rt(e.headCommittedAt)},t("stats.lastCommit",{time:$e(e.headCommittedAt,n,t)}))),a.length>0&&r.push((0,he.createElement)("span",{key:"times",className:"gp-stats__times"},a)),(0,he.createElement)("div",{className:"gp-stats"},r)}function zt(e){let t=new Array(e.length+1);t[0]=0;for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t}function Dr(e,t){let n=0,r=e.length-1;for(;n<r;){let a=n+r+1>>1;e[a]<=t?n=a:r=a-1}return n}function $t(e,t,n,r){let a=e.length-1;if(a<=0)return{first:0,last:0};let i=Dr(e,t-r),o=Math.min(a,Dr(e,t+n+r)+1);return{first:i,last:o}}var De=require("react");function It(){let[e,t]=(0,De.useState)({top:0,height:0}),n=(0,De.useRef)(null),r=(0,De.useRef)(null);return{setEl:(0,De.useCallback)(i=>{if(r.current!==null&&(r.current(),r.current=null),n.current=i,i===null)return;let o=()=>t(l=>{let c=i.scrollTop,p=i.clientHeight;return l.top===c&&l.height===p?l:{top:c,height:p}});o(),i.addEventListener("scroll",o,{passive:!0});let s=typeof ResizeObserver<"u"?new ResizeObserver(o):null;s?.observe(i),r.current=()=>{i.removeEventListener("scroll",o),s?.disconnect()}},[]),viewport:e,elRef:n}}var hn=28,Pr=26,za=8,$a=600;function Ar({remote:e,sessionId:t,snapshot:n,onAction:r,compact:a,t:i}){let[o,s]=(0,m.useState)(new Set),[l,c]=(0,m.useState)(""),[p,u]=(0,m.useState)(!1),[f,x]=(0,m.useState)(!1),[w,_]=(0,m.useState)(null),[N,P]=(0,m.useState)(new Set),[$,V]=(0,m.useState)(null),[G,b]=(0,m.useState)(null),[A,M]=(0,m.useState)(null),[q,S]=(0,m.useState)(()=>n.defaultDiffView),[F,te]=(0,m.useState)(!1),[Y,ie]=(0,m.useState)(!1),[re,B]=(0,m.useState)(!1),[Z,T]=(0,m.useState)(!1),[oe,L]=(0,m.useState)(null),[C,z]=(0,m.useState)("list"),[X,j]=(0,m.useState)([]),[ce,D]=(0,m.useState)(!0),[ae,pe]=(0,m.useState)(!1),[fe,W]=(0,m.useState)(null),U=(0,m.useRef)(null),me=(0,m.useRef)(0),{setEl:Ot,viewport:ke}=It(),J=(0,m.useCallback)(async()=>{let y=await e.query({sessionId:t,query:{kind:"stash-list"}}),g=se(y,"stash-list");j(g?.entries??[])},[e,t]);(0,m.useEffect)(()=>{J()},[J,n.checkedAt]);let ve=(0,m.useMemo)(()=>n.changes.filter(y=>y.staged).sort(yn),[n]),ot=(0,m.useMemo)(()=>n.changes.filter(y=>!y.staged&&y.status!=="untracked").sort(yn),[n]),st=(0,m.useMemo)(()=>n.changes.filter(y=>y.status==="untracked").sort(yn),[n]),lt=[{key:"staged",labelKey:"changes.groupStaged",items:ve},{key:"unstaged",labelKey:"changes.groupUnstaged",items:ot},{key:"untracked",labelKey:"changes.groupUntracked",items:st}].filter(y=>y.items.length>0),{items:qt,tops:we,totalH:qe}=(0,m.useMemo)(()=>{let y=[];for(let v of lt)if(y.push({kind:"head",g:{key:v.key,labelKey:v.labelKey,count:v.items.length}}),!N.has(v.key))for(let I of v.items)y.push({kind:"row",c:I});let g=zt(y.map(v=>v.kind==="head"?Pr:hn));return{items:y,tops:g,totalH:g[y.length]}},[ve,ot,st,N]),dt=ke.height>0?ke.height:$a,{first:Pe,last:Wt}=$t(we,ke.top,dt,za*hn);(0,m.useEffect)(()=>{s(y=>{if(y.size===0)return y;let g=new Set(n.changes.map(ge=>ge.path+(ge.staged?":s":":w"))),v=new Set,I=!1;for(let ge of y)g.has(ge)?v.add(ge):I=!0;return I?v:y})},[n]),(0,m.useEffect)(()=>{if(!p||Y||l.trim()!=="")return;let y=!0;return e.query({sessionId:t,query:{kind:"last-commit-message"}}).then(g=>{let v=se(g,"last-commit-message");y&&v!==null&&(c(v.message),ie(!0))}),()=>{y=!1}},[p,Y,l,e,t]);let We=(0,m.useCallback)(async(y,g,v=!1,I=!1)=>{let ge=++me.current;b({path:y,base:g}),I||M(null),te(v);let Ee=await e.query({sessionId:t,query:{kind:"diff",path:y,base:g,...v?{context:1e5}:{}}});if(ge!==me.current)return;let Nn=se(Ee,"diff");M(Nn!==null?Nn.text:"")},[e,t]);(0,m.useEffect)(()=>{if(G===null)return;if(!n.changes.some(g=>g.path===G.path)){b(null),M(null),z("list");return}We(G.path,G.base,F,!0)},[n]),(0,m.useEffect)(()=>{V(null)},[n]),(0,m.useEffect)(()=>{T(!1)},[n]);let Ut=y=>{s(g=>{let v=new Set(g);return v.has(y)?v.delete(y):v.add(y),v})},ye=async y=>{if(f)return!1;x(!0),_(null),L(null);try{let g=await r(y);return g.ok?!0:(_(g.error??i("error.generic")),!1)}catch(g){return _(g instanceof Error?g.message:i("error.generic")),!1}finally{x(!1)}},jt=async()=>{let y=l.trim();if(y===""&&!p){_(i("error.emptyMessage"));return}let g=o.size>0?[...new Set([...o].map(I=>I.replace(/:[sw]$/,"")))]:void 0;await ye({kind:"commit",message:y,...g?{paths:g}:{},...p?{amend:!0}:{}})&&(c(""),s(new Set),u(!1),ie(!1))},Qt=async y=>{await ye({kind:"stash-push",...y.trim()!==""?{message:y}:{}})&&(pe(!1),J())},Q=(y,g)=>{ye({kind:"stash-apply",index:y,sha:g}).then(v=>{v&&J()})},ct=(y,g)=>{ye({kind:"stash-pop",index:y,sha:g}).then(v=>{v&&J()})},pt=async(y,g)=>{await ye({kind:"stash-drop",index:y,sha:g})&&(W(null),J())},gt=(y,g)=>{switch(y){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 g===void 0?i("error.llmFailed"):`${i("error.llmFailed")}: ${g}`;default:return g??i("error.generic")}},Yt=async()=>{if(re)return;if(p&&!Z&&l.trim()!==""){T(!0),_(null),L(i("commit.suggestOverwrite"));return}T(!1);let y=o.size>0?[...new Set([...o].map(g=>g.replace(/:[sw]$/,"")))]:void 0;B(!0),_(null),L(null);try{let g=await e.suggest({sessionId:t,...y&&y.length>0?{paths:y}:{}});g.ok?(c(g.value.message),g.value.truncated===!0&&L(i("commit.suggestTruncated")),U.current?.focus()):_(gt(g.error.code,g.error.message))}catch(g){_(g instanceof Error?g.message:i("error.generic"))}finally{B(!1)}},Zt=y=>{P(g=>{let v=new Set(g);return v.has(y)?v.delete(y):v.add(y),v})},Ae=A!==null&&A!==""?Lt(A):null,ut=Ge({storageKey:"gp.changes.left",initial:380,min:220,reserve:200,edge:"end"}),ft=(y,g)=>{We(y,g),a&&z("diff")},en=a?["unified","before","after"]:["unified","split","before","after"],Te=a&&q==="split"?"unified":q,Ue=[(0,m.createElement)(Mr,{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:f||n.changes.length===0,onClick:()=>void ye({kind:"stage-all"})},i("changes.stageAll")),(0,m.createElement)("button",{key:"ua",type:"button",className:"gp-btn",disabled:f||n.staged===0,onClick:()=>void ye({kind:"unstage-all"})},i("changes.unstageAll")),(0,m.createElement)("button",{key:"stash",type:"button",className:"gp-btn",disabled:f||n.staged===0&&n.modified===0,title:i("changes.stash"),onClick:()=>{_(null),pe(!0)}},[(0,m.createElement)(ln,{key:"ic",size:13}),i("changes.stash")])]),w!==null?(0,m.createElement)("div",{key:"err",className:"gp-feedback"},w):null,oe!==null?(0,m.createElement)("div",{key:"notice",className:"gp-notice"},oe):null,(0,m.createElement)("div",{key:"list",className:"gp-changes__list",ref:Ot},n.changes.length===0?(0,m.createElement)("div",{className:"gp-empty"},i("changes.noChanges")):(0,m.createElement)("div",{className:"gp-changes__vlist",style:{height:qe}},qt.slice(Pe,Wt).map((y,g)=>{let v=Pe+g;if(y.kind==="head"){let Ee=y.g;return(0,m.createElement)("div",{key:`h:${Ee.key}`,className:"gp-changes__vrow",style:{top:we[v],height:Pr}},(0,m.createElement)("div",{className:"gp-group-head",onClick:()=>Zt(Ee.key)},[(0,m.createElement)(Ne,{key:"chev",size:12,open:!N.has(Ee.key)}),`${i(Ee.labelKey)} (${Ee.count})`]))}let I=y.c,ge=I.path+(I.staged?":s":":w");return(0,m.createElement)("div",{key:ge,className:"gp-changes__vrow",style:{top:we[v],height:hn}},Ba(I,{selected:o.has(ge),active:G?.path===I.path&&G.base===(I.staged?"staged":"worktree"),busy:f,armed:$===ge,onToggle:()=>Ut(ge),onOpen:()=>ft(I.path,I.staged?"staged":"worktree"),onStage:()=>void ye(I.staged?{kind:"unstage",paths:[I.path]}:{kind:"stage",paths:[I.path]}),onDiscard:()=>{$===ge?(ye({kind:"discard",paths:[I.path]}),V(null)):V(ge)},t:i}))}))),X.length>0?(0,m.createElement)("div",{key:"stashes",className:"gp-stash"},[(0,m.createElement)("div",{key:"head",className:"gp-group-head",onClick:()=>D(y=>!y)},[(0,m.createElement)(Ne,{key:"chev",size:12,open:!ce}),`${i("stash.section")} (${X.length})`]),ce?null:(0,m.createElement)("div",{key:"items"},X.map(y=>Xa(y,{busy:f,onApply:()=>Q(y.index,y.sha),onPop:()=>ct(y.index,y.sha),onDrop:()=>{_(null),W(y)},t:i})))]):null,(0,m.createElement)("div",{key:"box",className:"gp-commitbox"},[(0,m.createElement)("textarea",{key:"msg",className:"gp-commitbox__msg",placeholder:i("commit.placeholder"),value:l,ref:U,onChange:y=>c(y.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:()=>{u(y=>!y),ie(!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:f||re||n.changes.length===0,onClick:()=>void Yt(),title:i("commit.suggest")},[(0,m.createElement)(Vn,{key:"ic",size:13}),i(re?"commit.suggesting":"commit.suggest")]):null,(0,m.createElement)("button",{key:"commit",type:"button",className:"gp-btn gp-btn--primary",disabled:f||re||l.trim()==="",onClick:()=>void jt()},i("commit.commit"))])])])],je=G===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:()=>z("list")},[(0,m.createElement)(ze,{key:"i",size:14}),i("changes.backToList")]):null,(0,m.createElement)("span",{key:"path",className:"gp-diff__path"},G.path),Ae?(0,m.createElement)("span",{key:"sum",className:"gp-stats__item",style:{marginLeft:"auto"}},[(0,m.createElement)("span",{key:"a",className:"gp-stats__add"},`+${Ae.add}`)," ",(0,m.createElement)("span",{key:"d",className:"gp-stats__del"},`\u2212${Ae.del}`)]):null,(0,m.createElement)("button",{key:"expand",type:"button",className:`gp-seg__btn gp-diff__expand${F?" gp-seg__btn--active":""}`,style:Ae?{}:{marginLeft:"auto"},disabled:Te!=="split"&&Te!=="unified",title:i(F?"diff.collapse":"diff.expandAll"),onClick:()=>void We(G.path,G.base,!F)},i(F?"diff.collapse":"diff.expandAll")),(0,m.createElement)("div",{key:"seg",className:"gp-seg"},Me(en,Te,S,y=>i(`diff.${y}`)))]),(0,m.createElement)("div",{key:"scroll",className:"gp-diff__scroll"},A===null?(0,m.createElement)("div",{className:"gp-empty"},i("common.loading")):(0,m.createElement)(At,{text:A,mode:Te,path:G.path,remote:e,sessionId:t,imageSpec:{base:G.base},t:i}))]),Qe=[ae?(0,m.createElement)(Ia,{key:"push",onClose:()=>pe(!1),onStash:Qt,error:w,t:i}):null,fe!==null?Ke({title:i("stash.dropTitle"),body:i("stash.dropConfirm",{name:fe.message}),confirmLabel:i("stash.drop"),danger:!0,error:w,onConfirm:()=>void pt(fe.index,fe.sha),onClose:()=>W(null),t:i}):null];return a?(0,m.createElement)("div",{className:"gp-changes gp-changes--compact"},[...Qe,C==="diff"?(0,m.createElement)("div",{key:"right",className:"gp-changes__right"},je):(0,m.createElement)("div",{key:"left",className:"gp-changes__left"},Ue)]):(0,m.createElement)("div",{className:"gp-changes"},[...Qe,(0,m.createElement)("div",{key:"left",className:"gp-changes__left",style:{flex:`0 0 ${ut.width}px`}},Ue),ut.divider,(0,m.createElement)("div",{key:"right",className:"gp-changes__right"},je)])}function Ia({onClose:e,onStash:t,error:n,t:r}){let[a,i]=(0,m.useState)("");return Je({onClose:e,title:r("stash.title"),icon:(0,m.createElement)(ln,{size:15}),portalKey:"stash-push-modal",t:r,body:[(0,m.createElement)("input",{key:"msg",className:"gp-input",placeholder:r("stash.messagePlaceholder"),value:a,autoFocus:!0,onChange:o=>i(o.target.value),onKeyDown:o=>{o.key==="Enter"&&t(a)}}),Xe(r),n!==null?(0,m.createElement)("div",{key:"err",className:"gp-feedback"},n):null],footer:Be({onClose:e,onConfirm:()=>void t(a),confirmLabel:r("stash.save"),confirmDisabled:!1,danger:!1,t:r})})}function Xa(e,t){return(0,m.createElement)("div",{key:e.index,className:"gp-stash-row"},[(0,m.createElement)("div",{key:"info",className:"gp-stash-row__info"},[(0,m.createElement)("span",{key:"m",className:"gp-stash-row__msg",title:e.message},e.message),(0,m.createElement)("span",{key:"meta",className:"gp-stash-row__meta"},[e.branch!==null?(0,m.createElement)("span",{key:"b"},t.t("stash.onBranch",{branch:e.branch})):null,e.relTime!==""?(0,m.createElement)("span",{key:"t"},e.relTime):null])]),(0,m.createElement)("div",{key:"act",className:"gp-stash-row__actions"},[(0,m.createElement)("button",{key:"apply",type:"button",className:"gp-btn gp-btn--sm",disabled:t.busy,onClick:t.onApply},t.t("stash.apply")),(0,m.createElement)("button",{key:"pop",type:"button",className:"gp-btn gp-btn--sm",disabled:t.busy,onClick:t.onPop},t.t("stash.pop")),(0,m.createElement)("button",{key:"drop",type:"button",className:"gp-icon-btn",disabled:t.busy,title:t.t("stash.drop"),onClick:t.onDrop},(0,m.createElement)(qn,{size:14}))])])}function yn(e,t){return e.path.localeCompare(t.path)}function Ba(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 ${_t(e.status)}`},kt[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 h=require("react");var Se=require("@deepseek-ai/dsh-client-ui-primitives");function Hr(e){return/\.(?:md|markdown)$/i.test(e)}function wn(e){return/\.(?:html?|xhtml)$/i.test(e)}function Ja(e){return Hr(e)||wn(e)}var Ka=256*1024,Va=5e3,Lr=5e3,Xt=20,bn=12,Oa=600,qa=6e4,vn=new Map;function Wa(e,t){let n=t.file.kind==="loading"?{kind:"idle"}:t.file;vn.set(e,{state:{...t,file:n},leftAt:Date.now()})}function Ua(e){let t=vn.get(e);return t===void 0?null:Date.now()-t.leftAt>qa?(vn.delete(e),null):t.state}function xn({remote:e,sessionId:t,compact:n,t:r}){let a=(0,h.useRef)(void 0);a.current===void 0&&(a.current=Ua(t));let i=a.current,[o,s]=(0,h.useState)(()=>i?.dirs??new Map),[l,c]=(0,h.useState)(()=>i?.open??new Set([""])),[p,u]=(0,h.useState)(()=>i?.selected??null),[f,x]=(0,h.useState)(()=>i?.file??{kind:"idle"}),[w,_]=(0,h.useState)(()=>i?.renderMarkdown??!0),[N,P]=(0,h.useState)("idle"),[$,V]=(0,h.useState)("idle"),[G,b]=(0,h.useState)(()=>i?.pane??"tree"),A=(0,h.useMemo)(()=>({code:{copyLabel:r("files.copy"),copiedLabel:r("files.copied")},footnotes:r("files.footnotes")}),[r]),M=(0,h.useRef)(0),q=Ge({storageKey:"gp.files.left",initial:300,min:180,reserve:220,edge:"end"}),S=(0,h.useCallback)(L=>{s(C=>{let z=C.get(L);if(z!==void 0&&z.status!=="error")return C;let X=new Map(C);return X.set(L,{status:"loading"}),X}),e.query({sessionId:t,query:{kind:"dir-list",path:L}}).then(C=>{let z=se(C,"dir-list");s(X=>{let j=new Map(X);return j.set(L,z===null?{status:"error"}:{status:"ready",entries:z.entries,truncated:z.truncated}),j})}).catch(()=>{s(C=>{let z=new Map(C);return z.set(L,{status:"error"}),z})})},[e,t]);(0,h.useEffect)(()=>{S("")},[S]);let F=(0,h.useCallback)(L=>{c(C=>{let z=new Set(C);return z.has(L)?(z.delete(L),z):(z.add(L),o.get(L)===void 0&&S(L),z)})},[o,S]),te=(0,h.useCallback)(L=>{u(L),n&&b("preview"),_(!wn(L)),P("idle"),V("idle");let C=++M.current;x({kind:"loading",path:L}),e.query({sessionId:t,query:{kind:"file-content",path:L}}).then(z=>{if(C!==M.current)return;let X=se(z,"file-content");if(X===null){x({kind:"error",path:L});return}if(X.tooLarge===!0){x({kind:"tooLarge",path:L});return}if(X.variant==="image"&&X.dataUrl!==void 0){x({kind:"image",path:L,dataUrl:X.dataUrl});return}if(X.variant==="text"){x({kind:"text",path:L,content:X.content??"",lines:X.lines??0});return}x({kind:"binary",path:L})}).catch(()=>{C===M.current&&x({kind:"error",path:L})})},[e,t,n]),Y=(0,h.useRef)({dirs:o,open:l,selected:p,file:f,renderMarkdown:w,pane:G});Y.current={dirs:o,open:l,selected:p,file:f,renderMarkdown:w,pane:G},(0,h.useEffect)(()=>()=>{Wa(t,Y.current)},[t]);let ie=(0,h.useRef)(!1);(0,h.useEffect)(()=>{ie.current||(ie.current=!0,i!==null&&i.selected!==null&&f.kind==="idle"&&te(i.selected))},[i,f.kind,te]);let re=(0,h.useMemo)(()=>Fr("",0,{dirs:o,open:l,selected:p,toggleDir:F,selectFile:te,t:r}),[o,l,p,F,te,r]),B=async()=>{if(p===null)return;let L=M.current;try{await navigator.clipboard.writeText(p),L===M.current&&P("copied")}catch{L===M.current&&P("error")}},Z=async()=>{if(f.kind!=="text")return;let L=M.current;try{await navigator.clipboard.writeText(f.content),L===M.current&&V("copied")}catch{L===M.current&&V("error")}},T=(0,h.createElement)("div",{key:"left",className:"gp-files__tree",style:n?void 0:{flex:`0 0 ${q.width}px`}},re),oe=(0,h.createElement)("div",{key:"right",className:"gp-files__preview"},[p!==null?(0,h.createElement)("div",{key:"bar",className:"gp-files__bar"},[n?(0,h.createElement)("button",{key:"back",type:"button",className:"gp-subhead__back",onClick:()=>b("tree")},[(0,h.createElement)(ze,{key:"i",size:14}),r("files.backToTree")]):null,(0,h.createElement)("code",{key:"path",className:"gp-files__path",title:p},p),f.kind==="text"&&Ja(f.path)?(0,h.createElement)("div",{key:"mode",className:"gp-files__mode",role:"group","aria-label":r("files.previewMode")},[(0,h.createElement)("button",{key:"source",type:"button",className:`gp-files__mode-btn${w?"":" gp-files__mode-btn--active"}`,"aria-pressed":!w,onClick:()=>_(!1)},r("files.source")),(0,h.createElement)("button",{key:"render",type:"button",className:`gp-files__mode-btn${w?" gp-files__mode-btn--active":""}`,"aria-pressed":w,onClick:()=>_(!0)},r("files.render"))]):null,(0,h.createElement)("button",{key:"copy",type:"button",className:`gp-files__copy-path${N==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{B()}},r(N==="copied"?"files.pathCopied":N==="error"?"files.pathCopyFailed":"files.copyPath")),f.kind==="text"?(0,h.createElement)("button",{key:"copy-content",type:"button",className:`gp-files__copy-path${$==="error"?" gp-files__copy-path--error":""}`,"aria-live":"polite",onClick:()=>{Z()}},r($==="copied"?"files.contentCopied":$==="error"?"files.contentCopyFailed":"files.copyContent")):null]):null,(0,h.createElement)("div",{key:"content",className:"gp-files__preview-content"},ja(f,w,A,r))]);return n?(0,h.createElement)("div",{className:"gp-files gp-files--compact"},G==="preview"?oe:T):(0,h.createElement)("div",{className:"gp-files"},[T,q.divider,oe])}function ja(e,t,n,r){return e.kind==="text"&&t&&Hr(e.path)?(0,h.createElement)("div",{className:"gp-files__markdown"},(0,h.createElement)(Se.MarkdownText,{text:e.content,labels:n,variant:"body"})):e.kind==="text"&&t&&wn(e.path)?(0,h.createElement)("iframe",{className:"gp-files__html",title:e.path,srcDoc:e.content,sandbox:"allow-scripts",referrerPolicy:"no-referrer"}):Qa(e,r)}function Fr(e,t,n){let r=n.dirs.get(e);if(r===void 0||r.status==="loading")return t===0?[(0,h.createElement)("div",{key:"l",className:"gp-empty"},n.t("common.loading"))]:[(0,h.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,h.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,h.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,h.createElement)("span",{key:"c",className:"gp-tree-chev"},(0,h.createElement)(Ne,{size:11,open:s})),(0,h.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,h.createElement)(Se.FileTypeIcon,{kind:"folder",size:18})),(0,h.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)])),s&&a.push(...Fr(o,t+1,n))}else{let s=n.selected===o;a.push((0,h.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,h.createElement)("span",{key:"c",className:"gp-tree-chev"}),(0,h.createElement)("span",{key:"i",className:"gp-tree-ic"},(0,h.createElement)(Se.FileTypeIcon,{path:o,size:18})),(0,h.createElement)("span",{key:"n",className:"gp-tree-name"},i.name)]))}}return r.truncated&&a.push((0,h.createElement)("div",{key:`t${e}`,className:"gp-tree-row gp-tree-row--muted",style:{paddingLeft:10+t*14}},n.t("files.truncated"))),a}function Qa(e,t){switch(e.kind){case"idle":return(0,h.createElement)("div",{className:"gp-empty"},t("files.selectFile"));case"loading":return(0,h.createElement)("div",{className:"gp-empty"},t("common.loading"));case"error":return(0,h.createElement)("div",{className:"gp-empty"},t("files.loadFailed"));case"tooLarge":return(0,h.createElement)("div",{className:"gp-empty"},t("files.tooLarge"));case"binary":return(0,h.createElement)("div",{className:"gp-empty"},t("files.binary"));case"image":return(0,h.createElement)("div",{className:"gp-files__image"},(0,h.createElement)("img",{src:e.dataUrl,alt:e.path}));case"text":return(0,h.createElement)(Za,{content:e.content,path:e.path,t})}}function Ya(e,t){if(t==="")return[];let n=[];for(let r=0;r<e.length;r++)for(let[a,i]of Tt(e[r],t))if(n.push({line:r,start:a,end:i}),n.length>=St)return n;return n}function Za({content:e,path:t,t:n}){let r=(0,h.useMemo)(()=>{let D=e.split(`
536
+ `);return D.length>0&&D[D.length-1]===""&&D.pop(),D},[e]),a=e.length>Ka||r.length>Va,i=a?void 0:(0,Se.languageForPath)(t),o=(0,Se.useCodeHighlighter)(i),s=(0,h.useMemo)(()=>a?void 0:o(r.join(`
537
+ `)),[a,o,r]),[l,c]=(0,h.useState)(!1),[p,u]=(0,h.useState)(""),[f,x]=(0,h.useState)(!1),[w,_]=(0,h.useState)(0),{setEl:N,viewport:P,elRef:$}=It(),V=(0,h.useRef)(null),G=(0,h.useRef)(null);(0,h.useEffect)(()=>{c(!1),u(""),_(0)},[t]);let b=Nt(p,Ct),A=(0,h.useMemo)(()=>r.map(D=>D.toLowerCase()),[r]),M=f?b:b.toLowerCase(),q=f?r:A,S=(0,h.useMemo)(()=>Ya(q,M),[q,M]);(0,h.useEffect)(()=>{_(0)},[M]);let F=S.length===0?0:Math.min(w,S.length-1),te=(0,h.useMemo)(()=>{let D=new Map;for(let ae of S){let pe=D.get(ae.line)??[];pe.push([ae.start,ae.end]),D.set(ae.line,pe)}return D},[S]);(0,h.useEffect)(()=>{let D=ae=>{if(!((ae.ctrlKey||ae.metaKey)&&(ae.key==="f"||ae.key==="F")))return;let pe=$.current;pe===null||pe.offsetParent===null||(ae.preventDefault(),c(!0),requestAnimationFrame(()=>V.current?.select()))};return document.addEventListener("keydown",D),()=>document.removeEventListener("keydown",D)},[]);let Y=r.length,ie=(0,h.useMemo)(()=>zt(new Array(Y).fill(Xt)),[Y]),re=P.height>0?P.height:Oa,{first:B,last:Z}=$t(ie,P.top,re,bn*Xt),T=S.length>0?S[F].line:-1,oe=T>=0?Math.min(B,Math.max(0,T-bn)):B,L=T>=0?Math.max(Z,Math.min(Y,T+bn)):Z;(0,h.useEffect)(()=>{if(T<0)return;let D=requestAnimationFrame(()=>G.current?.scrollIntoView({block:"center",inline:"nearest"}));return()=>cancelAnimationFrame(D)},[F,S,T]);let C=(0,h.useCallback)(D=>{_(ae=>S.length===0?0:(ae+D+S.length)%S.length)},[S.length]),z=S.length>0?S[F]:null,X=l?(0,h.createElement)(Rt,{inputRef:V,query:p,matches:S.length,active:F,caseSensitive:f,onChange:u,onToggleCase:()=>x(D=>!D),onStep:C,onClose:()=>c(!1),t:n}):null,j=a||l?(0,h.createElement)("div",{key:"hd",className:"gp-files__header"},[a?(0,h.createElement)("div",{key:"note",className:"gp-files__note"},n("files.highlightOff")):null,X]):null,ce=[];for(let D=oe;D<L;D++)ce.push((0,h.createElement)("div",{key:D,className:"gp-files__row",style:{top:D*Xt}},[(0,h.createElement)("div",{key:"n",className:"gp-diff-no"},D+1),ei(r[D],D,s?.[D],te.get(D),z,G,n)]));return(0,h.createElement)("div",{className:"gp-files__code gp-diff__scroll",ref:N},[j,(0,h.createElement)("div",{key:"grid",className:"gp-files__single gp-files__single--virt",style:{height:Y*Xt}},ce)])}function ei(e,t,n,r,a,i,o){if(e==="")return(0,h.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},"\xA0");if(e.length>Lr)return(0,h.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},[e.slice(0,Lr),(0,h.createElement)("span",{key:"trunc",className:"gp-files__trunc"},o("files.lineTruncated"))]);if(r===void 0||r.length===0)return(0,h.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},n!==void 0?n.map((l,c)=>(0,h.createElement)("span",{key:c,style:l.style},l.text)):e);let s=a!==null&&a.line===t?[a.start,a.end]:null;return(0,h.createElement)("div",{key:`c${t}`,className:"gp-diff-cell"},Et(e,r,n,`c${t}`,s,i))}var Bt=require("react"),ti=620;function zr(e){let[t,n]=(0,Bt.useState)(!1);return(0,Bt.useLayoutEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let r=()=>n(e.clientWidth>0&&e.clientWidth<=ti);r();let a=new ResizeObserver(r);return a.observe(e),()=>a.disconnect()},[e]),t}var $r="gp.panel.fontDelta";function ni(){if(typeof localStorage>"u")return 0;let e=Number(localStorage.getItem($r));return e===-1||e===1?e:0}function Ir({ctx:e,sessionId:t,t:n}){let[r,a]=(0,E.useState)(ni),[i,o]=(0,E.useState)(null),[s,l]=(0,E.useState)(null),c=zr(s),p=bt(t),u=Ye(e),f=p.state==="error"&&p.error.code==="git-unavailable",x=p.state==="error"&&(p.error.code==="not-a-git-repo"||p.error.code==="git-unavailable"),w=f&&p.state==="error"&&p.error.isGitRepo===!0,_=x?"files":i!==null&&i.sessionId===t?i.tab:null,N=(0,E.useRef)({tabs:new Set});N.current.sessionId!==t&&(N.current={sessionId:t,tabs:new Set}),_!==null&&N.current.tabs.add(_);let P=N.current.tabs.has("files");(0,E.useEffect)(()=>{if(!Ce(t))return;if(x){o(null);return}if(i?.sessionId===t)return;let S=Hn(t);if(S!==null){o({sessionId:t,tab:S});return}let F=$n(t);if(F!==null){o({sessionId:t,tab:F});return}p.state==="ready"&&o({sessionId:t,tab:p.snapshot.dirty?"changes":"overview"})},[t,p,x,i?.sessionId]),(0,E.useEffect)(()=>{if(Ce(t))return Fn(t,S=>o({sessionId:t,tab:S}))},[t]);let $=(0,E.useRef)({tab:null});$.current={sessionId:t,tab:_},(0,E.useEffect)(()=>()=>{let{sessionId:S,tab:F}=$.current;S!==void 0&&F!==null&&zn(S,F)},[]);let V=p.state==="ready"?p.snapshot.checkedAt:0,G=async S=>{if(!Ce(t))return{ok:!1,error:n("error.noCwd")};let F=await u.run({sessionId:t,action:S});return F.ok?(Ze(t).accept(F.snapshot),{ok:!0}):(Ze(t).resync(),{ok:!1,error:at(F.error.code,F.error.message,n)})},b=S=>{a(S),typeof localStorage<"u"&&localStorage.setItem($r,String(S))},A=[{key:"overview",label:n("tab.overview"),icon:(0,E.createElement)(vt,{size:14})},{key:"changes",label:n("tab.changes"),icon:(0,E.createElement)(Jn,{size:14})},{key:"files",label:n("tab.files"),icon:(0,E.createElement)(Un,{size:14})}],M=x?A.filter(S=>S.key==="files"):A,q=(()=>{if(!Ce(t))return(0,E.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(p.state==="no-cwd")return(0,E.createElement)("div",{className:"gp-empty"},n("error.noCwd"));if(x){let F=P?(0,E.createElement)(xn,{key:t,remote:u,sessionId:t,compact:c,t:n}):null;return w?(0,E.createElement)("div",{className:"gp-files-wrap"},[(0,E.createElement)("div",{key:"notice",className:"gp-notice"},n("files.gitNotInstalled")),F]):(0,E.createElement)("div",{style:{display:"contents"}},F)}if(p.state==="error")return(0,E.createElement)("div",{className:"gp-empty"},n("pill.unavailable"));if(p.state==="cold"||p.state==="loading"||_===null)return(0,E.createElement)("div",{className:"gp-empty"},n("common.loading"));let S=p.snapshot;return(0,E.createElement)("div",{style:{display:"contents"}},[N.current.tabs.has("overview")?(0,E.createElement)("div",{key:"overview",style:_==="overview"?{display:"contents"}:{display:"none"}},(0,E.createElement)(Rr,{key:t,remote:u,sessionId:t,refreshKey:V,defaultDiffView:S.defaultDiffView,snapshot:S,onAction:G,onResync:()=>Ze(t).resync(),compact:c,t:n})):null,N.current.tabs.has("changes")?(0,E.createElement)("div",{key:"changes",style:_==="changes"?{display:"contents"}:{display:"none"}},(0,E.createElement)(Ar,{key:t,remote:u,sessionId:t,snapshot:S,onAction:G,compact:c,t:n})):null,P?(0,E.createElement)("div",{key:"files",style:_==="files"?{display:"contents"}:{display:"none"}},(0,E.createElement)(xn,{key:t,remote:u,sessionId:t,compact:c,t:n})):null])})();return(0,E.createElement)("div",{className:"gp-panel",ref:l,"data-conversation-composer-overlay":"","data-font-delta":r,"data-layout":c?"compact":"wide"},[(0,E.createElement)("div",{key:"tabs",className:"gp-tabbar",role:"tablist"},[...M.map(S=>(0,E.createElement)("button",{key:S.key,type:"button",role:"tab","aria-selected":_===S.key,className:`gp-tab${_===S.key?" gp-tab--active":""}`,onClick:()=>{Ce(t)&&o({sessionId:t,tab:S.key})}},[(0,E.createElement)("span",{key:"i",className:"gp-tab__icon"},S.icon),(0,E.createElement)("span",{key:"l",className:"gp-tab__label"},S.label)])),(0,E.createElement)("div",{key:"trailing",className:"gp-tabbar__trailing"},[(0,E.createElement)("div",{key:"font",className:"gp-font"},[(0,E.createElement)("button",{key:"dec",type:"button",className:"gp-font__decrease",onClick:()=>b(-1),"aria-label":n("panel.fontDecrease")},"A\u2212"),(0,E.createElement)("button",{key:"reset",type:"button",className:"gp-font__reset",onClick:()=>b(0),"aria-label":n("panel.fontReset")},"A"),(0,E.createElement)("button",{key:"inc",type:"button",className:"gp-font__increase",onClick:()=>b(1),"aria-label":n("panel.fontIncrease")},"A+")]),(0,E.createElement)(ri,{key:"ver",remote:u,t:n})])]),(0,E.createElement)("div",{key:"body",className:"gp-body"},q)])}function ri({remote:e,t}){let[n,r]=(0,E.useState)({kind:"idle"});(0,E.useEffect)(()=>{let s=!0;return e.version({}).then(l=>{s&&"current"in l&&r(c=>({...c,info:l}))}),()=>{s=!1}},[e]);let a=async()=>{r(l=>({kind:"checking",info:l.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,E.createElement)("span",{className:"gp-verbar__status"},t("version.checking")):i===void 0||!i.checkedRemote?null:i.error!==void 0?(0,E.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,E.createElement)("span",{},[(0,E.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,E.createElement)("a",{key:"l",className:"gp-verbar__link",href:i.releaseUrl,target:"_blank",rel:"noreferrer",style:{marginLeft:8}},t("version.viewRelease")):null]):(0,E.createElement)("span",{className:"gp-verbar__status gp-verbar__status--ok"},t("version.upToDate",{current:i.current}));return(0,E.createElement)("div",{className:"gp-verbar"},[i!==void 0?(0,E.createElement)("span",{key:"tag",className:"gp-verbar__tag"},`v${i.current}`):null,o,(0,E.createElement)("button",{key:"btn",type:"button",className:"gp-verbar__btn",disabled:n.kind==="checking",onClick:()=>void a()},[(0,E.createElement)("span",{key:"i",className:"gp-tab__icon"},(0,E.createElement)(wt,{size:12})),t("version.check")]),i?.repositoryUrl!==void 0?(0,E.createElement)("a",{key:"gh",className:"gp-icon-btn gp-verbar__gh gp-verbar__gh--starred",href:i.repositoryUrl,target:"_blank",rel:"noreferrer",title:t("version.openRepo"),"aria-label":t("version.openRepo")},(0,E.createElement)(Zn,{size:15})):null])}var ee=require("react"),Kr=require("react-dom");var Xr="data-gp-tab-dot",Oe,kn=null,Br="",Kt=null,Jt;function ai(e){if(typeof document>"u")return null;let t=document.querySelectorAll(nt);for(let n of t)if((n.textContent??"").trim()===e)return n;return null}function _n(){let e=ai(Br);if(e===null)return;let t=e.querySelector(`[${Xr}]`);if(Kt===null){t?.remove();return}let n=`gp-tab-dot gp-tab-dot--${Kt}`;if(t!==null){t.className!==n&&(t.className=n);return}let r=document.createElement("span");r.className=n,r.setAttribute(Xr,""),r.setAttribute("aria-hidden","true"),e.appendChild(r)}function ii(){if(typeof document>"u"||typeof MutationObserver>"u")return;let e=document.querySelector(An);if(e!==kn){if(Oe?.disconnect(),kn=e,e===null){Oe=void 0;return}Oe=new MutationObserver(()=>_n()),Oe.observe(e,{childList:!0,subtree:!0})}}function oi(){Oe?.disconnect(),Oe=void 0,kn=null}function Jr(e,t,n){if(!(typeof document>"u")){if(n===null){Sn(e);return}Jt=e,Br=t,Kt=n,ii(),_n()}}function Sn(e){Jt!==void 0&&Jt!==e||(Jt=void 0,Kt=null,_n(),oi())}function si(e){let t=e.replace(/[/\\]+$/,"").split(/[/\\]/);return t[t.length-1]||e}function li(){let[e,t]=(0,ee.useState)(!1),[n,r]=(0,ee.useState)(null),a=(0,ee.useRef)(null);return(0,ee.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,Kr.createPortal)((0,ee.createElement)("div",{className:"gp-tip",style:{left:n.left,bottom:n.bottom}},s.map((l,c)=>(0,ee.createElement)("div",{key:c,className:c===0?"gp-tip__path":"gp-tip__note"},l))),document.body)}}function di(e){let[t,n]=(0,ee.useState)(!1);return(0,ee.useEffect)(()=>{if(e===null||typeof ResizeObserver>"u")return;let a=e.closest("[data-conversation-region]")??document.body,i=()=>n(a.clientWidth>0&&a.clientWidth<ci);i();let o=new ResizeObserver(i);return o.observe(a),()=>o.disconnect()},[e]),t}var ci=620;function Vr({sessionId:e,t}){let n=bt(e),r=li(),[a,i]=(0,ee.useState)(null),o=di(a),s=(0,ee.useRef)(Symbol("gp-tab-dot")),l=n.state==="ready"&&n.snapshot.showInputPill===!1?n.snapshot.dirty?"dirty":"synced":null,c=t("panel.tab");if((0,ee.useEffect)(()=>{Jr(s.current,c,l);let N=s.current;return()=>{Sn(N)}},[c,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,ee.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 u=si(p.root),f=p.branch??`(${t("pill.detached")})`,x=p.dirty,w=x?"gp-pill--dirty":"gp-pill--synced",_=()=>{if(Xn(c)){Bn(c);return}Ce(e)&&Ln(e,x?"changes":"overview"),In(c)};return(0,ee.createElement)("span",{className:"gp-pill-wrap",ref:i},[(0,ee.createElement)("button",{key:"btn",type:"button",className:`gp-pill ${w}${o?" gp-pill--compact":""}`,onClick:_,ref:r.bind.ref,onMouseEnter:r.bind.onMouseEnter,onMouseLeave:r.bind.onMouseLeave},[(0,ee.createElement)("span",{key:"dot",className:"gp-pill__dot","aria-hidden":"true"}),(0,ee.createElement)("span",{key:"repo",className:"gp-pill__repo"},u),(0,ee.createElement)("span",{key:"git",className:"gp-pill__git"},["(",(0,ee.createElement)("span",{key:"b",className:"gp-pill__branch"},f),")"])]),r.render([p.root,t(x?"pill.dirty":"pill.synced")])])}var K=require("react");function pi(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 Or({ctx:e,t}){let[,n]=(0,K.useState)(0),[r,a]=(0,K.useState)(!1),[i,o]=(0,K.useState)(!1),[s,l]=(0,K.useState)(null),[c,p]=(0,K.useState)(null),[u,f]=(0,K.useState)(null),[x,w]=(0,K.useState)(null),_=()=>{n(T=>T+1)},N=e.get("configForms"),P=(0,K.useMemo)(()=>N?.describe(),[N]);(0,K.useEffect)(()=>{if(P!==void 0)return P.ensure(),P.subscribe(_)},[P]);let $=P?.getSnapshot().view,V=(0,K.useMemo)(()=>$===void 0?void 0:pi($.namespaces),[$]),G=(0,K.useMemo)(()=>N!==void 0&&V!==void 0?N.get(V):void 0,[N,V]);(0,K.useEffect)(()=>{if(G!==void 0)return G.subscribe(_)},[G]);let b=G?.getSnapshot(),A=G!==void 0&&b!==void 0&&b.status==="ready",M=P?.getSnapshot().status,q=s??(typeof b?.value?.showInputPill=="boolean"?b.value.showInputPill:!0),S=c??(b?.value?.defaultDiffView==="split"?"split":"unified"),F=u??(b?.value?.graphStyle==="compact"?"compact":"parallel"),te=x??(typeof b?.value?.suggestEnabled=="boolean"?b.value.suggestEnabled:!0),Y=async(T,oe,L)=>{if(G!==void 0){o(!1),a(!0);try{let C=await G.set(T,oe);L(),C?(et(),setTimeout(()=>et(),1e3)):o(!0)}catch{L(),o(!0)}finally{a(!1)}}},ie=T=>(l(T),Y("showInputPill",T,()=>l(null))),re=T=>T===S?Promise.resolve():(p(T),Y("defaultDiffView",T,()=>p(null))),B=T=>T===F?Promise.resolve():(f(T),Y("graphStyle",T,()=>f(null))),Z=T=>(w(T),Y("suggestEnabled",T,()=>w(null)));return N===void 0?(0,K.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded")):A?(0,K.createElement)("div",{className:"gp-cfg"},[(0,K.createElement)("h3",{key:"title",className:"gp-cfg__title"},t("cfg.title")),(0,K.createElement)("label",{key:"row",className:"gp-cfg__row"},[(0,K.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:q,disabled:r||b?.writable===!1,onChange:T=>{ie(T.currentTarget.checked)}}),(0,K.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.toggle"))]),(0,K.createElement)("p",{key:"hint",className:"gp-cfg__hint"},t("cfg.hint")),(0,K.createElement)("h3",{key:"difftitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.diffTitle")),(0,K.createElement)("div",{key:"diffseg",className:"gp-seg gp-cfg__seg"},Me(["unified","split"],S,T=>{re(T)},T=>t(T==="unified"?"cfg.diffUnified":"cfg.diffSplit"),r||b?.writable===!1)),(0,K.createElement)("p",{key:"diffhint",className:"gp-cfg__hint"},t("cfg.diffHint")),(0,K.createElement)("h3",{key:"graphtitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.graphTitle")),(0,K.createElement)("div",{key:"graphseg",className:"gp-seg gp-cfg__seg"},Me(["parallel","compact"],F,T=>{B(T)},T=>t(T==="parallel"?"cfg.graphParallel":"cfg.graphCompact"),r||b?.writable===!1)),(0,K.createElement)("p",{key:"graphhint",className:"gp-cfg__hint"},t("cfg.graphHint")),(0,K.createElement)("h3",{key:"sgtitle",className:"gp-cfg__title",style:{marginTop:6}},t("cfg.suggestTitle")),(0,K.createElement)("label",{key:"sgrow",className:"gp-cfg__row"},[(0,K.createElement)("input",{key:"switch",type:"checkbox",role:"switch",className:"gp-cfg__switch",checked:te,disabled:r||b?.writable===!1,onChange:T=>{Z(T.currentTarget.checked)}}),(0,K.createElement)("span",{key:"text",className:"gp-cfg__text"},t("cfg.suggestToggle"))]),(0,K.createElement)("p",{key:"sghint",className:"gp-cfg__hint"},t("cfg.suggestHint")),i?(0,K.createElement)("p",{key:"error",className:"gp-cfg__err",role:"alert"},t("cfg.saveFailed")):null]):M==="idle"||M==="loading"?(0,K.createElement)("p",{className:"gp-cfg__hint"},t("common.loading")):(0,K.createElement)("p",{className:"gp-cfg__hint"},t("cfg.notLoaded"))}var it="gitPanel",gi=["dsh-git-panel","@xbzbing/dsh-git-panel"],ui=["slots","locale","connection"],fi="dsh-git-panel";function mi(e){Tn(),Dn(e),e.effect(()=>e.locale.register(it,{zh:En,en:Rn})??void 0,"dsh-git-panel: dictionaries");let t=e.locale.bind(it),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:it,label:()=>t("panel.tab")},a=>(0,Vt.createElement)(Ir,{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:it},a=>(0,Vt.createElement)(Vr,{sessionId:a.sessionId,t}))));for(let a of gi)r(e.slots.inject("plugins.bundle.config",()=>e.slots.register({name:"plugins.bundle.config",key:a,locale:it},i=>i.view==="summary"?t("cfg.title"):(0,Vt.createElement)(Or,{ctx:e,t}))));e.effect(()=>{let a=e.on("connection/reset",()=>et());return()=>{typeof a=="function"&&a();for(let i of n.splice(0))try{i()}catch{}Pn()}},"dsh-git-panel: lifecycle")}module.exports={name:fi,inject:ui,apply:mi};
505
538
  return module.exports;
506
539
  } });