@feng0531/dsh-vcs 0.3.12 → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/client.js +26 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DSH VCS
|
|
2
2
|
|
|
3
|
-
DeepSeek Harness(DSH)Web 的只读 Git / SVN 变更预览插件。当前版本 **0.3.
|
|
3
|
+
DeepSeek Harness(DSH)Web 的只读 Git / SVN 变更预览插件。当前版本 **0.3.20**,包名 **@feng0531/dsh-vcs**,已配置 npm 公共发布(配置完成不代表已上架)。非商业许可证不变。
|
|
4
4
|
|
|
5
5
|
> 项目仓库:https://github.com/f-e-n-g-0531/dsh-vcs 。采用 [DSH VCS 非商业源码公开许可证 1.0](<LICENSE>):允许非商业使用、修改与分发,禁止商业使用(包括公司内部用于商业项目的开发、测试与维护),商业用途须另行书面授权。分发须保留许可证和版权,修改版须注明修改。第三方组件保持原许可。这是源码公开项目,不是 OSI 认可的开源软件。
|
|
6
6
|
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
window.__ModuleLoader__.load({ id: "@feng0531/dsh-vcs", factory(require) { var module = { exports: {} }; var exports = module.exports;
|
|
2
|
-
var
|
|
2
|
+
var Mt=Object.create;var le=Object.defineProperty;var Tt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Bt=Object.getPrototypeOf,Ut=Object.prototype.hasOwnProperty;var Ot=(r,s)=>{for(var i in s)le(r,i,{get:s[i],enumerable:!0})},tt=(r,s,i,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of zt(s))!Ut.call(r,o)&&o!==i&&le(r,o,{get:()=>s[o],enumerable:!(n=Tt(s,o))||n.enumerable});return r};var st=(r,s,i)=>(i=r!=null?Mt(Bt(r)):{},tt(s||!r||!r.__esModule?le(i,"default",{value:r,enumerable:!0}):i,r)),Wt=r=>tt(le({},"__esModule",{value:!0}),r);var $t={};Ot($t,{apply:()=>Zt,inject:()=>Qt});module.exports=Wt($t);var e=st(require("react"),1);var Ae=`.vcs-root .vcs-discovery{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}
|
|
3
3
|
.vcs-root .vcs-discovery input{min-width:160px;max-width:100%;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-base);padding:6px 9px}
|
|
4
4
|
.vcs-root .vcs-discovery span{font-size:12px;color:var(--dsw-alias-label-secondary)}
|
|
5
5
|
.vcs-root .vcs-mode{display:flex;align-items:center;gap:6px}
|
|
@@ -31,21 +31,41 @@ var ot=Object.create;var R=Object.defineProperty;var rt=Object.getOwnPropertyDes
|
|
|
31
31
|
.vcs-root .vcs-files{width:260px;min-width:180px;max-width:45%;resize:horizontal;overflow:auto;display:flex;flex-direction:column;border-right:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform)}
|
|
32
32
|
.vcs-root .vcs-filter{display:flex;gap:5px;padding:10px}
|
|
33
33
|
.vcs-root .vcs-filter input{min-width:0;width:100%;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-base);padding:7px 9px}
|
|
34
|
-
.vcs-root .vcs-
|
|
34
|
+
.vcs-root .vcs-clear-filter{font-size:11px;white-space:nowrap;padding:4px 6px}
|
|
35
|
+
.vcs-root .vcs-status-filter{display:flex;gap:4px;overflow:auto;padding:0 10px 8px}
|
|
36
|
+
.vcs-root .vcs-status-filter button{font-size:11px;white-space:nowrap;padding:3px 6px}
|
|
37
|
+
.vcs-root .vcs-status-filter button[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}
|
|
38
|
+
.vcs-root .vcs-status-filter small{font-size:10px;color:var(--dsw-alias-label-tertiary)}
|
|
39
|
+
.vcs-root .vcs-count{display:flex;align-items:center;gap:8px;padding:0 10px 8px;color:var(--dsw-alias-label-secondary)}
|
|
40
|
+
.vcs-root .vcs-count>span:first-child{margin-right:auto}
|
|
41
|
+
.vcs-root .vcs-auto{font-size:11px;color:var(--dsw-alias-label-tertiary);white-space:nowrap}
|
|
42
|
+
.vcs-root .vcs-tree-actions{display:flex;gap:5px;padding:0 10px 8px}
|
|
43
|
+
.vcs-root .vcs-tree-actions button{font-size:11px;padding:3px 6px}
|
|
35
44
|
.vcs-root .vcs-filelist{overflow:auto;flex:1;padding:0 6px 10px}
|
|
36
45
|
.vcs-root .vcs-file{display:flex;gap:8px;align-items:flex-start;width:100%;border:0;background:transparent;text-align:left;border-radius:6px;padding:7px 8px}
|
|
37
|
-
.vcs-root .vcs-file[aria-
|
|
46
|
+
.vcs-root .vcs-file[aria-current=true]{background:var(--dsw-alias-interactive-bg-active)}
|
|
47
|
+
.vcs-root .vcs-file:focus-visible,.vcs-root .vcs-dir-toggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}
|
|
38
48
|
.vcs-root .vcs-filename{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
39
49
|
.vcs-root .vcs-filepath{display:block;color:var(--dsw-alias-label-tertiary);font-size:11px;overflow:hidden;text-overflow:ellipsis}
|
|
40
50
|
.vcs-root .vcs-status{font-weight:600;min-width:14px;color:var(--dsw-alias-state-warn-primary)}
|
|
41
51
|
.vcs-root .vcs-status[data-status=A],.vcs-root .vcs-status[data-status="?"]{color:var(--dsw-alias-state-success-primary)}
|
|
42
52
|
.vcs-root .vcs-status[data-status=D],.vcs-root .vcs-status[data-status=U]{color:var(--dsw-alias-state-error-primary)}
|
|
43
53
|
.vcs-root .vcs-dir{color:var(--dsw-alias-label-secondary);font-size:11px;padding:9px 8px 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
54
|
+
.vcs-root .vcs-dir-toggle{display:flex;width:100%;gap:6px;align-items:center;border:0;border-radius:6px;background:transparent;text-align:left;cursor:pointer}
|
|
55
|
+
.vcs-root .vcs-dir-toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}
|
|
56
|
+
.vcs-root .vcs-dir-toggle small{margin-left:auto;color:var(--dsw-alias-label-tertiary)}
|
|
44
57
|
.vcs-root .vcs-detail{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
|
|
45
58
|
.vcs-root .vcs-filehead{padding:10px 14px;border-bottom:1px solid var(--dsw-alias-border-l2);display:flex;gap:10px;align-items:center;min-height:44px}
|
|
46
59
|
.vcs-root .vcs-filehead strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
60
|
+
.vcs-root .vcs-copy-path{font-size:11px;white-space:nowrap;padding:3px 6px}
|
|
61
|
+
.vcs-root .vcs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
|
47
62
|
.vcs-root .vcs-add{color:var(--dsw-alias-file-diff-added-marker)}
|
|
48
63
|
.vcs-root .vcs-del{color:var(--dsw-alias-file-diff-deleted-marker)}
|
|
64
|
+
.vcs-root .vcs-context{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:7px 14px;border-bottom:1px solid var(--dsw-alias-border-l2);font-size:12px;color:var(--dsw-alias-label-secondary)}
|
|
65
|
+
.vcs-root .vcs-context-status{font-weight:600;color:var(--dsw-alias-state-warn-primary)}
|
|
66
|
+
.vcs-root .vcs-context-status[data-status=A],.vcs-root .vcs-context-status[data-status="?"]{color:var(--dsw-alias-state-success-primary)}
|
|
67
|
+
.vcs-root .vcs-context-status[data-status=D],.vcs-root .vcs-context-status[data-status=U]{color:var(--dsw-alias-state-error-primary)}
|
|
68
|
+
.vcs-root .vcs-context-rename{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
49
69
|
.vcs-root .vcs-labels{display:grid;grid-template-columns:1fr 1fr;background:var(--dsw-alias-bg-module-platform);border-bottom:1px solid var(--dsw-alias-border-l2);font-size:12px;color:var(--dsw-alias-label-secondary)}
|
|
50
70
|
.vcs-root .vcs-labels span{padding:7px 14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
51
71
|
.vcs-root .vcs-labels span+span{border-left:1px solid var(--dsw-alias-border-l2)}
|
|
@@ -58,6 +78,8 @@ var ot=Object.create;var R=Object.defineProperty;var rt=Object.getOwnPropertyDes
|
|
|
58
78
|
.vcs-root .vcs-notice{padding:8px 14px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-state-warn-primary);font-size:12px;max-height:100px;overflow:auto}
|
|
59
79
|
.vcs-root .vcs-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid var(--dsw-alias-border-l2);font-size:12px}
|
|
60
80
|
.vcs-root .vcs-toolbar label{display:flex;gap:5px;align-items:center;cursor:pointer}
|
|
81
|
+
.vcs-root .vcs-toolbar-separator{height:18px;border-left:1px solid var(--dsw-alias-border-l2)}
|
|
82
|
+
.vcs-root .vcs-review-position{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}
|
|
61
83
|
.vcs-root .vcs-toolbar input{accent-color:var(--dsw-alias-state-business-primary)}
|
|
62
84
|
.vcs-root .vcs-tabs{display:flex;gap:6px;padding:6px 12px}
|
|
63
85
|
.vcs-root .vcs-properties{overflow:auto;padding:14px;flex:1}
|
|
@@ -69,5 +91,5 @@ var ot=Object.create;var R=Object.defineProperty;var rt=Object.getOwnPropertyDes
|
|
|
69
91
|
.vcs-root .vcs-toolbar{gap:6px}
|
|
70
92
|
.vcs-root .vcs-title{font-size:16px}
|
|
71
93
|
}
|
|
72
|
-
`;var b=Pe(require("react"),1);function je(o){return o===""?[]:o.split(/\r\n|\n|\r/)}function Me(o="",t=""){let i=je(o),l=je(t),r=0;for(;r<i.length&&r<l.length&&i[r]===l[r];)r++;let c=0;for(;c<i.length-r&&c<l.length-r&&i[i.length-c-1]===l[l.length-c-1];)c++;let k=i.length-c,d=l.length-c,a=k-r,p=d-r,m=a&&p?(a+1)*(p+1):0,W=m>2e5,P=[],y=0;function E(n,f){y++,!(P.length>=2e3)&&P.push({left:n===null?null:{number:n+1,text:i[n]},right:f===null?null:{number:f+1,text:l[f]},kind:n===null?"insert":f===null?"delete":i[n]===l[f]?"equal":"replace"})}for(let n=0;n<r;n++)E(n,n);if(W||!a||!p)for(let n=0;n<Math.max(a,p);n++)E(n<a?r+n:null,n<p?r+n:null);else{let n=p+1,f=new Uint32Array(m);for(let A=a-1;A>=0;A--)for(let I=p-1;I>=0;I--)f[A*n+I]=i[r+A]===l[r+I]?f[(A+1)*n+I+1]+1:Math.max(f[(A+1)*n+I],f[A*n+I+1]);let w=0,S=0;for(;w<a||S<p;)w<a&&S<p&&i[r+w]===l[r+S]?E(r+w++,r+S++):w<a&&(S===p||f[(w+1)*n+S]>=f[w*n+S+1])?E(r+w++,null):E(null,r+S++)}for(let n=0;n<c;n++)E(k+n,d+n);return{rows:P,approximate:W,truncated:y>P.length,totalRows:y,omittedRows:y-P.length,leftLineCount:i.length,rightLineCount:l.length,lcsCells:W?0:m}}var vt={before:"Before",after:"After",readonly:"Read-only text comparison",approximate:"Approximate alignment: the changed region is too large for exact matching; lines are paired by position.",truncated:"Preview truncated to the first 2,000 aligned lines; additional lines are not shown.",empty:"Both versions are empty."},ge={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},ut={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},gt={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},ht={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function he({comparison:o,labels:t={}}){let i=o?.left?.text??"",l=o?.right?.text??"",r=(0,b.useMemo)(()=>Me(i,l),[i,l]),c=d=>t[d]??vt[d],k=(d,a,p)=>{let m=d&&p!=="equal";return b.default.createElement("td",{style:{...ge,background:m?a==="left"?"#d6454520":"#259b4920":void 0}},b.default.createElement("div",{style:ut},b.default.createElement("span",{style:gt},d?.number??""),b.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},m?a==="left"?"\u2212":"+":""),b.default.createElement("pre",{style:ht},d?.text??"")))};return b.default.createElement("section",{className:"vcs-text-comparison","aria-label":c("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},r.approximate&&b.default.createElement("div",{role:"status",style:{padding:8}},c("approximate")),r.truncated&&b.default.createElement("div",{role:"status",style:{padding:8}},c("truncated")," (",2e3," / ",r.totalRows,")"),b.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},b.default.createElement("thead",null,b.default.createElement("tr",null,b.default.createElement("th",{scope:"col",style:{...ge,padding:8,overflowWrap:"anywhere"}},o?.left?.label||c("before")),b.default.createElement("th",{scope:"col",style:{...ge,padding:8,overflowWrap:"anywhere"}},o?.right?.label||c("after")))),b.default.createElement("tbody",null,r.rows.map((d,a)=>b.default.createElement("tr",{key:a,"data-kind":d.kind},k(d.left,"left",d.kind),k(d.right,"right",d.kind))))),!r.rows.length&&b.default.createElement("p",{style:{padding:8}},c("empty")))}async function De(o,{signal:t,fetcher:i=fetch,importer:l=r=>import(r)}={}){let r=await i(o,{credentials:"same-origin",cache:"no-cache",signal:t});if(!r.ok)throw new Error("Editor resource HTTP "+r.status+" ("+o+"). "+(r.status===401?"Refresh the authenticated DSH page.":r.status===404?"The editor route is not active in this DSH process.":"Check plugin asset registration."));let c=r.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(c))throw new Error("Editor resource returned "+(c||"no Content-Type")+" instead of JavaScript.");return await r.arrayBuffer(),t?.throwIfAborted(),l(o)}var Te={zh:{workspaceRoot:"\u5DE5\u4F5C\u533A\u672C\u8EAB",title:"VCS \u53D8\u66F4",readonly:"\u53EA\u8BFB\u9884\u89C8",refresh:"\u5237\u65B0",back:"\u8FD4\u56DE\u5BF9\u8BDD",all:"\u5168\u90E8\u53D8\u66F4",staged:"\u5DF2\u6682\u5B58",unstaged:"\u672A\u6682\u5B58",search:"\u641C\u7D22\u6587\u4EF6\u2026",noSession:"\u5148\u6253\u5F00\u4E00\u4E2A\u9879\u76EE\u4F1A\u8BDD\uFF0C\u518D\u67E5\u770B\u53D8\u66F4\u3002",noRepo:"\u672A\u53D1\u73B0 Git / SVN \u4ED3\u5E93\u3002\u53EF\u8F93\u5165\u76F8\u5BF9\u5B50\u76EE\u5F55\u540E\u91CD\u65B0\u626B\u63CF\u3002",clean:"\u6CA1\u6709\u53D8\u66F4",pick:"\u9009\u62E9\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02",loading:"\u6B63\u5728\u8BFB\u53D6\u2026",side:"\u5DE6\u53F3\u5BF9\u6BD4",inline:"\u884C\u5185\u5BF9\u6BD4",whitespace:"\u5FFD\u7565\u884C\u9996\u5C3E\u7A7A\u767D",wrap:"\u81EA\u52A8\u6362\u884C",previous:"\u4E0A\u4E00\u5904",next:"\u4E0B\u4E00\u5904",content:"\u5185\u5BB9",properties:"\u5C5E\u6027",binary:"\u4E8C\u8FDB\u5236\u6216\u53D7\u9650\u5185\u5BB9\u65E0\u6CD5\u6309\u6587\u672C\u6BD4\u8F83",changes:"\u5904\u53D8\u66F4",files:"\u4E2A\u6587\u4EF6",list:"\u5E73\u94FA",tree:"\u76EE\u5F55",emptySearch:"\u6CA1\u6709\u5339\u914D\u6587\u4EF6",session:"\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55",M:"\u4FEE\u6539",A:"\u65B0\u589E",D:"\u5220\u9664",R:"\u91CD\u547D\u540D",C:"\u590D\u5236",U:"\u51B2\u7A81","?":"\u672A\u8DDF\u8E2A",P:"\u5C5E\u6027",error:"\u8BFB\u53D6\u5931\u8D25",retry:"\u91CD\u8BD5",stale:"\u5185\u5BB9\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002",repositories:"\u4ED3\u5E93",allRepositories:"\u5168\u90E8\u4ED3\u5E93",gitMode:"Git \u53D8\u66F4",svnBase:"SVN \xB7 BASE \u2194 \u5DE5\u4F5C\u526F\u672C",subdirectory:"\u76F8\u5BF9\u5B50\u76EE\u5F55\uFF08\u53EF\u9009\uFF09",rescan:"\u91CD\u65B0\u626B\u63CF\u4ED3\u5E93",scanHint:"\u4EC5\u626B\u63CF\u5F53\u524D\u76EE\u5F55\u53CA\u4E00\u7EA7\u5B50\u76EE\u5F55\uFF0C\u4E0D\u9012\u5F52\u6DF1\u5165 \xB7 \u7F13\u5B58 5 \u5206\u949F\u540E\u8FC7\u671F",truncated:"\u5DF2\u8FBE\u5230\u626B\u63CF\u4E0A\u9650\u3002\u8F93\u5165\u76F8\u5BF9\u5B50\u76EE\u5F55\u5E76\u91CD\u65B0\u626B\u63CF\u4EE5\u8865\u5145\u5176\u4ED6\u4F4D\u7F6E\u3002",fallback:"\u9AD8\u7EA7\u7F16\u8F91\u5668\u4E0D\u53EF\u7528\uFF0C\u5DF2\u5207\u6362\u4E3A\u57FA\u7840\u5DE6\u53F3\u6587\u672C\u5BF9\u6BD4\u3002",diagnostics:"\u52A0\u8F7D\u8BCA\u65AD",approximate:"\u5185\u5BB9\u8F83\u5927\uFF0C\u4F7F\u7528\u8FD1\u4F3C\u884C\u5BF9\u9F50\u3002",textTruncated:"\u4EC5\u663E\u793A\u524D 2000 \u884C\u3002"},en:{workspaceRoot:"Workspace root",title:"VCS changes",readonly:"Read-only preview",refresh:"Refresh",back:"Back to chat",all:"All changes",staged:"Staged",unstaged:"Unstaged",search:"Filter files\u2026",noSession:"Open a project session to inspect its changes.",noRepo:"No Git / SVN repositories discovered. Try a relative subdirectory and rescan.",clean:"No changes",pick:"Select a file to review",loading:"Loading\u2026",side:"Side by side",inline:"Inline",whitespace:"Ignore trim whitespace",wrap:"Word wrap",previous:"Previous change",next:"Next change",content:"Content",properties:"Properties",binary:"Binary or restricted content cannot be compared as text",changes:"changes",files:"files",list:"Flat",tree:"Tree",emptySearch:"No matching files",session:"Session directory",M:"Modified",A:"Added",D:"Deleted",R:"Renamed",C:"Copied",U:"Conflict","?":"Untracked",P:"Property",error:"Failed to read",retry:"Retry",stale:"Content changed. Refresh and try again.",repositories:"Repositories",allRepositories:"All repositories",gitMode:"Git changes",svnBase:"SVN \xB7 BASE \u2194 Working Copy",subdirectory:"Relative subdirectory (optional)",rescan:"Rescan repositories",scanHint:"Scan current directory and immediate children only \xB7 cache expires after 5 minutes",truncated:"Discovery limit reached. Enter a relative subdirectory and rescan to include another location.",fallback:"Advanced editor unavailable. Showing basic side-by-side text comparison.",diagnostics:"Loading diagnostics",approximate:"Large content: approximate line alignment.",textTruncated:"Only the first 2000 lines are displayed."}};var ze="0.3.12";var Be=o=>"dsh-vcs:project:v1:"+o;function We(o,t){if(!o)return"";try{let i=(t??globalThis.localStorage)?.getItem(Be(o));return typeof i=="string"&&i.length<=1024?i:""}catch{return""}}function Ue(o,t,i){if(!(!o||!t))try{(i??globalThis.localStorage)?.setItem(Be(o),t)}catch{}}function Oe(o,t=""){return o.find(i=>i.id===t)?.id||o.find(i=>i.relativePath===".")?.id||o[0]?.id||""}var _e=(o,t)=>JSON.stringify([o,t]),B=(o,t=".")=>[o.type.toUpperCase(),o.relativePath==="."?t:o.relativePath||".",o.branch].filter(Boolean).join(" \xB7 "),ee=(o,t="all")=>o.type==="git"&&["staged","unstaged"].includes(t)?t:"all";function He(o,t,i=""){let l=i.toLowerCase();return o.map(r=>({...t[r.id],repository:r,changes:(t[r.id]?.changes||[]).filter(c=>c.path.toLowerCase().includes(l)).sort((c,k)=>c.path.localeCompare(k.path))}))}function Fe(o,t,i=""){if(!i||!o||o.cwd!==t.cwd)return t;let l=new Map(o.repositories.map(r=>[r.id,r]));for(let r of t.repositories)l.set(r.id,r);return{...t,repositories:[...l.values()],truncated:o.truncated||t.truncated,warnings:[...o.warnings||[],...t.warnings||[]]}}function Ve(o=2){if(!Number.isInteger(o)||o<1||o>2)throw new RangeError("Status concurrency must be 1 or 2");let t=0,i=[];function l(){for(;t<o&&i.length;){let r=i.shift();if(r.signal?.removeEventListener("abort",r.abort),r.signal?.aborted){r.reject(new Error("Aborted"));continue}t++,Promise.resolve().then(()=>{if(r.signal?.aborted)throw new Error("Aborted");return r.run()}).then(r.resolve,r.reject).finally(()=>{t--,l()})}}return(r,c)=>new Promise((k,d)=>{let a={run:r,signal:c,resolve:k,reject:d,abort:null};if(a.abort=()=>{let p=i.indexOf(a);p>=0&&(i.splice(p,1),d(new Error("Aborted")))},c?.aborted){d(new Error("Aborted"));return}c?.addEventListener("abort",a.abort,{once:!0}),i.push(a),l()})}var mt={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},qe=o=>new URL("vcs-assets/"+o,document.baseURI).href;function Ge(){return e.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.6","aria-hidden":"true"},e.default.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),e.default.createElement("path",{d:"M12 4v16M6 10h3M7.5 8.5v3M15 14h3"}))}var yt=["slots","layout","locale","connection","uiSession"];function wt(o){o.effect(()=>o.locale.register("local.vcs",Te));let t=o.locale.bind("local.vcs"),i=Ve(2);async function l(d,a,p){let m=await o.connection.rpc.call("/vcs-rpc",d,a,p);if(!m.ok)throw new Error(m.error?.message||String(m.error||t("error")));return m.value}function r(d){let a=d.useSessions(p=>Object.values(p.byId).find(m=>(m.retainedBy.mainView??0)>0));return e.default.createElement(c,{key:JSON.stringify([a?.id,a?.cwd])},e.default.createElement(k,{session:a}))}class c extends e.default.Component{state={error:null};static getDerivedStateFromError(a){return{error:a}}render(){return this.state.error?e.default.createElement("section",{className:"vcs-root"},e.default.createElement("style",null,ue),e.default.createElement("div",{className:"vcs-message vcs-error"},t("error"),e.default.createElement("button",{onClick:()=>this.setState({error:null})},t("retry")),e.default.createElement("button",{onClick:()=>o.layout.selectPanel(null)},t("back")))):this.props.children}}function k({session:d}){(0,e.useSyncExternalStore)(s=>o.locale.subscribe(s),()=>o.locale.getSnapshot(),()=>o.locale.getSnapshot());let a=d?.id,[p,m]=(0,e.useState)("all"),[W,P]=(0,e.useState)(0),[y,E]=(0,e.useState)(null),[n,f]=(0,e.useState)({}),[w,S]=(0,e.useState)(()=>We(d?.cwd)),[A,I]=(0,e.useState)(0),[fe,Je]=(0,e.useState)(""),[H,Xe]=(0,e.useState)(""),[x,te]=(0,e.useState)(null),[u,U]=(0,e.useState)(null),[F,be]=(0,e.useState)(!1),[Ye,me]=(0,e.useState)(!1),[D,ye]=(0,e.useState)(""),[se,V]=(0,e.useState)(""),[L,we]=(0,e.useState)(""),[oe,Ke]=(0,e.useState)(""),[O,Qe]=(0,e.useState)(!0),[_,Ze]=(0,e.useState)(!0),[re,$e]=(0,e.useState)(!1),[ie,Re]=(0,e.useState)(!1),[q,G]=(0,e.useState)("content"),[xe,ke]=(0,e.useState)(0),[ae,ne]=(0,e.useState)({added:0,deleted:0,count:0}),[N,Se]=(0,e.useState)(!1),le=(0,e.useRef)(null),T=(0,e.useRef)(null),Ne=(0,e.useRef)(null),de=(0,e.useRef)(null),Ce=(0,e.useRef)(null),Ee=(0,e.useRef)(null),j=y?.repositories||[],J=j.filter(s=>s.id===w);(0,e.useEffect)(()=>{j.some(s=>s.id===w)&&Ue(d?.cwd,w)},[d?.cwd,w,y]);let X=()=>{Ne.current?.abort(),de.current?.abort(),U(null),te(null),V(""),G("content"),ne({added:0,deleted:0,count:0})},Y=()=>{X(),Ce.current?.abort(),Ee.current=y,E(null),f({}),Xe(fe.trim()),I(s=>s+1)},Ae=()=>{X(),f({}),P(s=>s+1)};(0,e.useEffect)(()=>{let s=new AbortController;return Ce.current=s,ye(""),be(!!a),a&&l("vcs/repositories",{sessionId:a,...H?{subdirectory:H}:{}},s.signal).then(h=>{if(!s.signal.aborted){let g=Fe(Ee.current,h,H);S(v=>Oe(g.repositories,v)),E(g)}}).catch(h=>{s.signal.aborted||ye(h.message)}).finally(()=>{s.signal.aborted||be(!1)}),()=>s.abort()},[a,A,H]),(0,e.useEffect)(()=>{let s=new AbortController;Ne.current=s,f({}),U(null),te(null),V("");for(let h of J){let g=ee(h,p);i(()=>l("vcs/status",{sessionId:a,repositoryId:h.id,mode:g},s.signal),s.signal).then(v=>{s.signal.aborted||f(C=>({...C,[h.id]:{...v,mode:g}}))}).catch(v=>{s.signal.aborted||f(C=>({...C,[h.id]:{error:v.message,changes:[],mode:g}}))})}return()=>s.abort()},[a,y,w,p,W]),(0,e.useEffect)(()=>{let s=()=>{document.visibilityState==="visible"&&Ae()};return window.addEventListener("focus",s),()=>window.removeEventListener("focus",s)},[]);let K=j.find(s=>s.id===x?.repositoryId),Q=x?n[x.repositoryId]:null;(0,e.useEffect)(()=>{let s=new AbortController;return de.current=s,U(null),V(""),ne({added:0,deleted:0,count:0}),G("content"),me(!!x&&!!Q),x&&Q&&K&&l("vcs/compare",{sessionId:a,repositoryId:x.repositoryId,mode:ee(K,p),id:x.id},s.signal).then(h=>{s.signal.aborted||U(h)}).catch(h=>{s.signal.aborted||V(h.message)}).finally(()=>{s.signal.aborted||me(!1)}),()=>s.abort()},[x,Q,a,p]),(0,e.useEffect)(()=>{let s=!1,h,g=new AbortController;Se(!1),we("");let v=document.createElement("link");return v.rel="stylesheet",v.href=qe("editor.css"),le.current.parentNode.appendChild(v),De(qe("editor.js")+"?v="+encodeURIComponent(ze)+"&retry="+xe,{signal:g.signal}).then(C=>{s||(h=C.createDiff(le.current,{onStats:ne}),T.current=h,Se(!0))}).catch(C=>{s||we(C.message)}),()=>{s=!0,g.abort(),h?.dispose(),T.current=null,v.remove()}},[xe]),(0,e.useEffect)(()=>{N&&u&&!u.binary&&T.current?.setContent(u,JSON.stringify([a,y?.cwd,x?.repositoryId,p,x?.id,u.path]))},[N,u,a,y,x,p]),(0,e.useEffect)(()=>{T.current?.options({sideBySide:_,ignoreWhitespace:re,wrap:ie})},[N,_,re,ie]);let ce=He(J,n,oe),et=ce.flatMap(s=>s.changes),Ie=F||J.some(s=>!n[s.id]),Z=Q?.changes?.find(s=>s.id===x?.id),M=u?.properties,pe=M?[...new Set([...Object.keys(M.left||{}),...Object.keys(M.right||{})])].filter(s=>M.left?.[s]!==M.right?.[s]):[],ve=s=>mt[s?.status]||s?.status?.slice(0,1).toUpperCase()||"M",z=se||(Ye?t("loading"):a?Ie&&!Z?t("loading"):D||(j.length?Z?u?.binary?t("binary"):u?!N&&!L?t("loading"):"":t("pick"):t("pick"):t("noRepo")):t("noSession"));return e.default.createElement("section",{className:"vcs-root","aria-label":t("title")},e.default.createElement("style",null,ue),e.default.createElement("header",{className:"vcs-top"},e.default.createElement(Ge,null),e.default.createElement("h1",{className:"vcs-title"},t("title")),e.default.createElement("span",{className:"vcs-badge"},t("readonly")),e.default.createElement("span",{className:"vcs-spacer"}),e.default.createElement("select",{"aria-label":t("repositories"),value:w,disabled:F||!j.length,onChange:s=>{X(),f({}),S(s.target.value)}},!j.length&&e.default.createElement("option",{value:""},t("repositories")),j.map(s=>e.default.createElement("option",{key:s.id,value:s.id},B(s,t("workspaceRoot"))))),e.default.createElement("label",{className:"vcs-mode"},t("gitMode")," ",e.default.createElement("select",{"aria-label":t("gitMode"),value:p,disabled:!J.some(s=>s.type==="git"),onChange:s=>{X(),f({}),m(s.target.value)}},["all","unstaged","staged"].map(s=>e.default.createElement("option",{key:s,value:s},t(s))))),e.default.createElement("button",{onClick:Ae,disabled:Ie||!a},t("refresh")),e.default.createElement("button",{onClick:()=>o.layout.selectPanel(null)},t("back")),e.default.createElement("div",{className:"vcs-path",title:y?.cwd||d?.cwd},t("session"),": ",y?.cwd||d?.cwd||"\u2014"),e.default.createElement("form",{className:"vcs-discovery",onSubmit:s=>{s.preventDefault(),Y()}},e.default.createElement("input",{"aria-label":t("subdirectory"),placeholder:t("subdirectory"),value:fe,onChange:s=>Je(s.target.value)}),e.default.createElement("button",{disabled:!a||F},t("rescan")),e.default.createElement("span",null,t("scanHint"))),y?.truncated&&e.default.createElement("div",{className:"vcs-notice"},t("truncated")),(y?.warnings||[]).map((s,h)=>e.default.createElement("div",{className:"vcs-notice",key:h},typeof s=="string"?s:s.message||JSON.stringify(s)))),e.default.createElement("div",{className:"vcs-body"},e.default.createElement("aside",{className:"vcs-files"},e.default.createElement("div",{className:"vcs-filter"},e.default.createElement("input",{"aria-label":t("search"),placeholder:t("search"),value:oe,onChange:s=>Ke(s.target.value)})),e.default.createElement("div",{className:"vcs-count"},e.default.createElement("span",null,et.length," ",t("files")),e.default.createElement("button",{"aria-pressed":O,onClick:()=>Qe(!O)},t(O?"tree":"list"))),e.default.createElement("div",{className:"vcs-filelist",role:"listbox","aria-label":t("title")},ce.map(s=>{let h,g=s.repository;return e.default.createElement("section",{className:"vcs-repository",key:g.id,"aria-label":B(g,t("workspaceRoot"))},e.default.createElement("div",{className:"vcs-repository-heading",title:g.root},e.default.createElement("strong",null,B(g,t("workspaceRoot"))),e.default.createElement("small",null,g.type==="svn"?t("svnBase"):t(ee(g,p)))),s.error?e.default.createElement("div",{className:"vcs-message vcs-error",role:"status"},s.error,e.default.createElement("button",{onClick:Y},t("rescan"))):n[g.id]?s.changes.map(v=>{let C=v.path.lastIndexOf("/"),$=C<0?".":v.path.slice(0,C),tt=O&&$!==h;h=$;let st=_e(g.id,v.id);return e.default.createElement(e.default.Fragment,{key:st},tt&&e.default.createElement("div",{className:"vcs-dir",title:$},$),e.default.createElement("button",{className:"vcs-file",role:"option","aria-selected":x?.repositoryId===g.id&&x?.id===v.id,title:B(g,t("workspaceRoot"))+" \xB7 "+(v.oldPath?v.oldPath+" \u2192 ":"")+v.path+" \xB7 "+t(ve(v)),onClick:()=>{de.current?.abort(),U(null),G("content"),te({repositoryId:g.id,id:v.id})}},e.default.createElement("span",{className:"vcs-status","data-status":ve(v)},ve(v)),e.default.createElement("span",{className:"vcs-filename"},O?v.path.slice(C+1):v.path,v.oldPath&&e.default.createElement("small",{className:"vcs-filepath"},"\u2190 ",v.oldPath))))}):e.default.createElement("div",{className:"vcs-message"},t("loading")),!s.error&&n[g.id]&&!s.changes.length&&e.default.createElement("div",{className:"vcs-message"},t(oe?"emptySearch":"clean")))}),!ce.length&&e.default.createElement("div",{className:"vcs-message"},F?t("loading"):D||t(a?"noRepo":"noSession"),D&&e.default.createElement("button",{onClick:Y},t("rescan"))))),e.default.createElement("main",{className:"vcs-detail"},e.default.createElement("div",{className:"vcs-filehead"},e.default.createElement("strong",{title:u?.path||Z?.path},K?B(K,t("workspaceRoot"))+" / ":"",u?.path||Z?.path||t("pick")),e.default.createElement("span",{className:"vcs-spacer"}),u&&!u.binary&&N&&e.default.createElement(e.default.Fragment,null,e.default.createElement("span",{className:"vcs-add"},"+",ae.added),e.default.createElement("span",{className:"vcs-del"},"\u2212",ae.deleted))),L&&e.default.createElement("div",{className:"vcs-notice",role:"status"},t("fallback")," ",e.default.createElement("button",{onClick:()=>ke(s=>s+1)},t("retry")),e.default.createElement("details",null,e.default.createElement("summary",null,t("diagnostics")),L)),u?.notice&&e.default.createElement("div",{className:"vcs-notice"},u.notice),pe.length>0&&e.default.createElement("div",{className:"vcs-tabs"},["content","properties"].map(s=>e.default.createElement("button",{key:s,"aria-pressed":q===s,onClick:()=>G(s)},t(s),s==="properties"?" ("+pe.length+")":""))),e.default.createElement("div",{className:"vcs-labels"},e.default.createElement("span",null,u?.left.label||"\u2014",u?.left.encoding?" \xB7 "+u.left.encoding:""),e.default.createElement("span",null,u?.right.label||"\u2014",u?.right.encoding?" \xB7 "+u.right.encoding:"")),e.default.createElement("div",{className:"vcs-editorbox","data-hidden":!!z||q!=="content",style:q==="properties"?{display:"none"}:void 0},e.default.createElement("div",{className:"vcs-editor",ref:le,style:L?{display:"none"}:void 0}),L&&u&&!u.binary&&!z&&e.default.createElement(he,{comparison:u,labels:{approximate:t("approximate"),truncated:t("textTruncated")}}),z&&e.default.createElement("div",{className:"vcs-message "+(D||se||L?"vcs-error":""),role:"status"},z,(D||se||L)&&e.default.createElement("button",{onClick:()=>L?ke(s=>s+1):Y()},t(L?"retry":"rescan")))),q==="properties"&&e.default.createElement("div",{className:"vcs-properties"},e.default.createElement("table",null,e.default.createElement("thead",null,e.default.createElement("tr",null,e.default.createElement("th",null,t("properties")),e.default.createElement("th",null,"BASE"),e.default.createElement("th",null,"Working Copy"))),e.default.createElement("tbody",null,pe.map(s=>e.default.createElement("tr",{key:s},e.default.createElement("th",null,s),e.default.createElement("td",null,M.left?.[s]??"\u2014"),e.default.createElement("td",null,M.right?.[s]??"\u2014")))))),e.default.createElement("footer",{className:"vcs-toolbar"},e.default.createElement("button",{disabled:!N,"aria-pressed":_,onClick:()=>Ze(!_)},t(_?"side":"inline")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:re,onChange:s=>$e(s.target.checked)}),t("whitespace")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:ie,onChange:s=>Re(s.target.checked)}),t("wrap")),e.default.createElement("span",{className:"vcs-spacer"}),N&&e.default.createElement("span",null,ae.count," ",t("changes")),e.default.createElement("button",{disabled:!N||!u||!!z,onClick:()=>T.current?.navigate("previous")},t("previous")),e.default.createElement("button",{disabled:!N||!u||!!z,onClick:()=>T.current?.navigate("next")},t("next"))))))}o.slots.inject("main",()=>o.slots.register({name:"main",key:"local-vcs"},r)),o.slots.inject("sidebar.panellist",()=>o.slots.register({name:"sidebar.panellist",id:"local-vcs",label:()=>t("title"),order:65},Ge))}
|
|
94
|
+
`;var x=st(require("react"),1);function rt(r){return r===""?[]:r.split(/\r\n|\n|\r/)}function ot(r="",s=""){let i=rt(r),n=rt(s),o=0;for(;o<i.length&&o<n.length&&i[o]===n[o];)o++;let d=0;for(;d<i.length-o&&d<n.length-o&&i[i.length-d-1]===n[n.length-d-1];)d++;let w=i.length-d,u=n.length-d,c=w-o,f=u-o,k=c&&f?(c+1)*(f+1):0,D=k>2e5,F=[],S=0;function E(p,g){S++,!(F.length>=2e3)&&F.push({left:p===null?null:{number:p+1,text:i[p]},right:g===null?null:{number:g+1,text:n[g]},kind:p===null?"insert":g===null?"delete":i[p]===n[g]?"equal":"replace"})}for(let p=0;p<o;p++)E(p,p);if(D||!c||!f)for(let p=0;p<Math.max(c,f);p++)E(p<c?o+p:null,p<f?o+p:null);else{let p=f+1,g=new Uint32Array(k);for(let P=c-1;P>=0;P--)for(let A=f-1;A>=0;A--)g[P*p+A]=i[o+P]===n[o+A]?g[(P+1)*p+A+1]+1:Math.max(g[(P+1)*p+A],g[P*p+A+1]);let b=0,C=0;for(;b<c||C<f;)b<c&&C<f&&i[o+b]===n[o+C]?E(o+b++,o+C++):b<c&&(C===f||g[(b+1)*p+C]>=g[b*p+C+1])?E(o+b++,null):E(null,o+C++)}for(let p=0;p<d;p++)E(w+p,u+p);return{rows:F,approximate:D,truncated:S>F.length,totalRows:S,omittedRows:S-F.length,leftLineCount:i.length,rightLineCount:n.length,lcsCells:D?0:k}}var qt={before:"Before",after:"After",readonly:"Read-only text comparison",approximate:"Approximate alignment: the changed region is too large for exact matching; lines are paired by position.",truncated:"Preview truncated to the first 2,000 aligned lines; additional lines are not shown.",empty:"Both versions are empty."},Pe={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},Kt={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Vt={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},Gt={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function Ie({comparison:r,labels:s={}}){let i=r?.left?.text??"",n=r?.right?.text??"",o=(0,x.useMemo)(()=>ot(i,n),[i,n]),d=u=>s[u]??qt[u],w=(u,c,f)=>{let k=u&&f!=="equal";return x.default.createElement("td",{style:{...Pe,background:k?c==="left"?"#d6454520":"#259b4920":void 0}},x.default.createElement("div",{style:Kt},x.default.createElement("span",{style:Vt},u?.number??""),x.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},k?c==="left"?"\u2212":"+":""),x.default.createElement("pre",{style:Gt},u?.text??"")))};return x.default.createElement("section",{className:"vcs-text-comparison","aria-label":d("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},o.approximate&&x.default.createElement("div",{role:"status",style:{padding:8}},d("approximate")),o.truncated&&x.default.createElement("div",{role:"status",style:{padding:8}},d("truncated")," (",2e3," / ",o.totalRows,")"),x.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},x.default.createElement("thead",null,x.default.createElement("tr",null,x.default.createElement("th",{scope:"col",style:{...Pe,padding:8,overflowWrap:"anywhere"}},r?.left?.label||d("before")),x.default.createElement("th",{scope:"col",style:{...Pe,padding:8,overflowWrap:"anywhere"}},r?.right?.label||d("after")))),x.default.createElement("tbody",null,o.rows.map((u,c)=>x.default.createElement("tr",{key:c,"data-kind":u.kind},w(u.left,"left",u.kind),w(u.right,"right",u.kind))))),!o.rows.length&&x.default.createElement("p",{style:{padding:8}},d("empty")))}async function at(r,{signal:s,fetcher:i=fetch,importer:n=o=>import(o)}={}){let o=await i(r,{credentials:"same-origin",cache:"no-cache",signal:s});if(!o.ok)throw new Error("Editor resource HTTP "+o.status+" ("+r+"). "+(o.status===401?"Refresh the authenticated DSH page.":o.status===404?"The editor route is not active in this DSH process.":"Check plugin asset registration."));let d=o.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(d))throw new Error("Editor resource returned "+(d||"no Content-Type")+" instead of JavaScript.");return await o.arrayBuffer(),s?.throwIfAborted(),n(r)}var it={zh:{workspaceRoot:"\u5DE5\u4F5C\u533A\u672C\u8EAB",title:"VCS \u53D8\u66F4",readonly:"\u53EA\u8BFB\u9884\u89C8",refresh:"\u5237\u65B0",back:"\u8FD4\u56DE\u5BF9\u8BDD",all:"\u5168\u90E8\u53D8\u66F4",staged:"\u5DF2\u6682\u5B58",unstaged:"\u672A\u6682\u5B58",search:"\u641C\u7D22\u6587\u4EF6\u2026",noSession:"\u5148\u6253\u5F00\u4E00\u4E2A\u9879\u76EE\u4F1A\u8BDD\uFF0C\u518D\u67E5\u770B\u53D8\u66F4\u3002",noRepo:"\u672A\u53D1\u73B0 Git / SVN \u4ED3\u5E93\u3002\u53EF\u8F93\u5165\u76F8\u5BF9\u5B50\u76EE\u5F55\u540E\u91CD\u65B0\u626B\u63CF\u3002",clean:"\u6CA1\u6709\u53D8\u66F4",pick:"\u9009\u62E9\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02",loading:"\u6B63\u5728\u8BFB\u53D6\u2026",side:"\u5DE6\u53F3\u5BF9\u6BD4",inline:"\u884C\u5185\u5BF9\u6BD4",whitespace:"\u5FFD\u7565\u884C\u9996\u5C3E\u7A7A\u767D",wrap:"\u81EA\u52A8\u6362\u884C",previous:"\u4E0A\u4E00\u5904",next:"\u4E0B\u4E00\u5904",content:"\u5185\u5BB9",properties:"\u5C5E\u6027",binary:"\u4E8C\u8FDB\u5236\u6216\u53D7\u9650\u5185\u5BB9\u65E0\u6CD5\u6309\u6587\u672C\u6BD4\u8F83",changes:"\u5904\u53D8\u66F4",files:"\u4E2A\u6587\u4EF6",list:"\u5E73\u94FA",tree:"\u76EE\u5F55",emptySearch:"\u6CA1\u6709\u5339\u914D\u6587\u4EF6",session:"\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55",M:"\u4FEE\u6539",A:"\u65B0\u589E",D:"\u5220\u9664",R:"\u91CD\u547D\u540D",C:"\u590D\u5236",U:"\u51B2\u7A81","?":"\u672A\u8DDF\u8E2A",P:"\u5C5E\u6027",error:"\u8BFB\u53D6\u5931\u8D25",retry:"\u91CD\u8BD5",stale:"\u5185\u5BB9\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002",repositories:"\u4ED3\u5E93",allRepositories:"\u5168\u90E8\u4ED3\u5E93",gitMode:"Git \u53D8\u66F4",svnBase:"SVN \xB7 BASE \u2194 \u5DE5\u4F5C\u526F\u672C",subdirectory:"\u76F8\u5BF9\u5B50\u76EE\u5F55\uFF08\u53EF\u9009\uFF09",rescan:"\u91CD\u65B0\u626B\u63CF\u4ED3\u5E93",scanHint:"\u4EC5\u626B\u63CF\u5F53\u524D\u76EE\u5F55\u53CA\u4E00\u7EA7\u5B50\u76EE\u5F55\uFF0C\u4E0D\u9012\u5F52\u6DF1\u5165 \xB7 \u7F13\u5B58 5 \u5206\u949F\u540E\u8FC7\u671F",truncated:"\u5DF2\u8FBE\u5230\u626B\u63CF\u4E0A\u9650\u3002\u8F93\u5165\u76F8\u5BF9\u5B50\u76EE\u5F55\u5E76\u91CD\u65B0\u626B\u63CF\u4EE5\u8865\u5145\u5176\u4ED6\u4F4D\u7F6E\u3002",fallback:"\u9AD8\u7EA7\u7F16\u8F91\u5668\u4E0D\u53EF\u7528\uFF0C\u5DF2\u5207\u6362\u4E3A\u57FA\u7840\u5DE6\u53F3\u6587\u672C\u5BF9\u6BD4\u3002",diagnostics:"\u52A0\u8F7D\u8BCA\u65AD",approximate:"\u5185\u5BB9\u8F83\u5927\uFF0C\u4F7F\u7528\u8FD1\u4F3C\u884C\u5BF9\u9F50\u3002",textTruncated:"\u4EC5\u663E\u793A\u524D 2000 \u884C\u3002",autoRefresh:"\u6BCF 30 \u79D2\u81EA\u52A8\u5237\u65B0",comparisonContext:"\u6BD4\u8F83\u4E0A\u4E0B\u6587",encoding:"\u7F16\u7801",before:"\u524D\u7248\u672C",after:"\u540E\u7248\u672C",filterStatus:"\u6309\u72B6\u6001\u7B5B\u9009",allFiles:"\u5168\u90E8\u6587\u4EF6",previousFile:"\u4E0A\u4E00\u4E2A\u6587\u4EF6",nextFile:"\u4E0B\u4E00\u4E2A\u6587\u4EF6",expandAll:"\u5168\u90E8\u5C55\u5F00",collapseAll:"\u5168\u90E8\u6298\u53E0",revealSelected:"\u5B9A\u4F4D\u5F53\u524D\u6587\u4EF6",reviewPosition:"\u7B2C {index} / {total} \u4E2A\u6587\u4EF6",clearFilters:"\u6E05\u9664\u7B5B\u9009",searchShortcut:"Ctrl / \u2318 + F \u641C\u7D22\uFF1BEsc \u6E05\u7A7A\u641C\u7D22",fileShortcut:"Alt + \u2190 / \u2192 \u5207\u6362\u4E0A\u4E00\u4E2A\u6216\u4E0B\u4E00\u4E2A\u6587\u4EF6",copyPath:"\u590D\u5236\u8DEF\u5F84",copied:"\u5DF2\u590D\u5236",pathCopied:"\u6587\u4EF6\u8DEF\u5F84\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\u3002",copyFailed:"\u65E0\u6CD5\u590D\u5236\u6587\u4EF6\u8DEF\u5F84\u3002",binaryComparison:"\uFF08{files}\uFF09"},en:{workspaceRoot:"Workspace root",title:"VCS changes",readonly:"Read-only preview",refresh:"Refresh",back:"Back to chat",all:"All changes",staged:"Staged",unstaged:"Unstaged",search:"Filter files\u2026",noSession:"Open a project session to inspect its changes.",noRepo:"No Git / SVN repositories discovered. Try a relative subdirectory and rescan.",clean:"No changes",pick:"Select a file to review",loading:"Loading\u2026",side:"Side by side",inline:"Inline",whitespace:"Ignore trim whitespace",wrap:"Word wrap",previous:"Previous change",next:"Next change",content:"Content",properties:"Properties",binary:"Binary or restricted content cannot be compared as text",changes:"changes",files:"files",list:"Flat",tree:"Tree",emptySearch:"No matching files",session:"Session directory",M:"Modified",A:"Added",D:"Deleted",R:"Renamed",C:"Copied",U:"Conflict","?":"Untracked",P:"Property",error:"Failed to read",retry:"Retry",stale:"Content changed. Refresh and try again.",repositories:"Repositories",allRepositories:"All repositories",gitMode:"Git changes",svnBase:"SVN \xB7 BASE \u2194 Working Copy",subdirectory:"Relative subdirectory (optional)",rescan:"Rescan repositories",scanHint:"Scan current directory and immediate children only \xB7 cache expires after 5 minutes",truncated:"Discovery limit reached. Enter a relative subdirectory and rescan to include another location.",fallback:"Advanced editor unavailable. Showing basic side-by-side text comparison.",diagnostics:"Loading diagnostics",approximate:"Large content: approximate line alignment.",textTruncated:"Only the first 2000 lines are displayed.",autoRefresh:"Auto-refreshes every 30 seconds",comparisonContext:"Comparison context",encoding:"Encoding",before:"Before",after:"After",filterStatus:"Filter by status",allFiles:"All files",previousFile:"Previous file",nextFile:"Next file",expandAll:"Expand all",collapseAll:"Collapse all",revealSelected:"Reveal current file",reviewPosition:"File {index} of {total}",clearFilters:"Clear filters",searchShortcut:"Ctrl / \u2318 + F to search; Esc clears search",fileShortcut:"Alt + \u2190 / \u2192 switches the previous or next file",copyPath:"Copy path",copied:"Copied",pathCopied:"File path copied to the clipboard.",copyFailed:"Unable to copy the file path.",binaryComparison:"({files})"}};var nt="0.3.20";var lt=r=>"dsh-vcs:project:v1:"+r;function ct(r,s){if(!r)return"";try{let i=(s??globalThis.localStorage)?.getItem(lt(r));return typeof i=="string"&&i.length<=1024?i:""}catch{return""}}function dt(r,s,i){if(!(!r||!s))try{(i??globalThis.localStorage)?.setItem(lt(r),s)}catch{}}function ut(r,s=""){return r.find(i=>i.id===s)?.id||r.find(i=>i.relativePath===".")?.id||r[0]?.id||""}var Q=(r,s)=>JSON.stringify([r,s]),Z=(r,s=".")=>[r.type.toUpperCase(),r.relativePath==="."?s:r.relativePath||".",r.branch].filter(Boolean).join(" \xB7 "),ce=(r,s="all")=>r.type==="git"&&["staged","unstaged"].includes(s)?s:"all",pt=(r="",s="")=>r===s?0:r<s?-1:1;function Le(r=[]){let s={id:"",name:"",directories:new Map,files:[],count:0};for(let n of r){let o=String(n.path||"").split("/").filter(Boolean);if(!o.length)continue;let d=s;for(let w of o.slice(0,-1)){let u=d.id?d.id+"/"+w:w;d.directories.has(w)||d.directories.set(w,{id:u,name:w,directories:new Map,files:[],count:0}),d=d.directories.get(w),d.count++}d.files.push(n)}let i=n=>({...n,directories:[...n.directories.values()].sort((o,d)=>pt(o.name,d.name)).map(i),files:[...n.files].sort((o,d)=>pt(o.path,d.path))});return i(s)}function vt(r=[],s){let i=r.findIndex(n=>n.id===s);return{index:i<0?0:i+1,total:r.length}}function ft(r=[],s,i){if(!r.length||!["previous","next"].includes(i))return null;let n=r.findIndex(w=>w.id===s),o=i==="next"?1:-1,d=n<0?i==="next"?-1:0:n;return r[(d+o+r.length)%r.length]||null}function ht(r=""){let s=String(r).split("/").filter(Boolean);return s.slice(0,-1).map((i,n)=>s.slice(0,n+1).join("/"))}function De(r,s=[]){for(let i of r?.directories||[])s.push(i.id),De(i,s);return s}function gt(r=""){return{missing:"deleted",unversioned:"untracked",replaced:"modified",obstructed:"conflicted",copied:"renamed"}[r]||r}function bt(r=[]){return r.reduce((s,i)=>{let n=gt(i.status);return s.all++,s[n]=(s[n]||0)+1,s},{all:0})}function Yt(r=[],s="",i="all"){let n=s.toLowerCase();return r.filter(o=>(i==="all"||gt(o.status)===i)&&o.path.toLowerCase().includes(n)).sort((o,d)=>o.path.localeCompare(d.path))}function mt(r,s,i="",n="all"){return r.map(o=>({...s[o.id],repository:o,changes:Yt(s[o.id]?.changes,i,n)}))}function yt(r,s,i=""){if(!i||!r||r.cwd!==s.cwd)return s;let n=new Map(r.repositories.map(o=>[o.id,o]));for(let o of s.repositories)n.set(o.id,o);return{...s,repositories:[...n.values()],truncated:r.truncated||s.truncated,warnings:[...r.warnings||[],...s.warnings||[]]}}function xt(r=2){if(!Number.isInteger(r)||r<1||r>2)throw new RangeError("Status concurrency must be 1 or 2");let s=0,i=[];function n(){for(;s<r&&i.length;){let o=i.shift();if(o.signal?.removeEventListener("abort",o.abort),o.signal?.aborted){o.reject(new Error("Aborted"));continue}s++,Promise.resolve().then(()=>{if(o.signal?.aborted)throw new Error("Aborted");return o.run()}).then(o.resolve,o.reject).finally(()=>{s--,n()})}}return(o,d)=>new Promise((w,u)=>{let c={run:o,signal:d,resolve:w,reject:u,abort:null};if(c.abort=()=>{let f=i.indexOf(c);f>=0&&(i.splice(f,1),u(new Error("Aborted")))},d?.aborted){u(new Error("Aborted"));return}d?.addEventListener("abort",c.abort,{once:!0}),i.push(c),n()})}var wt={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},kt=r=>new URL("vcs-assets/"+r,document.baseURI).href;function St(){return e.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.6","aria-hidden":"true"},e.default.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),e.default.createElement("path",{d:"M12 4v16M6 10h3M7.5 8.5v3M15 14h3"}))}var Qt=["slots","layout","locale","connection","uiSession"];function Zt(r){r.effect(()=>r.locale.register("local.vcs",it));let s=r.locale.bind("local.vcs"),i=xt(2);async function n(u,c,f){let k=await r.connection.rpc.call("/vcs-rpc",u,c,f);if(!k.ok){let D=new Error(k.error?.message||String(k.error||s("error")));throw D.code=k.error?.code,D}return k.value}function o(u){let c=u.useSessions(f=>Object.values(f.byId).find(k=>(k.retainedBy.mainView??0)>0));return e.default.createElement(d,{key:JSON.stringify([c?.id,c?.cwd])},e.default.createElement(w,{session:c}))}class d extends e.default.Component{state={error:null};static getDerivedStateFromError(c){return{error:c}}render(){return this.state.error?e.default.createElement("section",{className:"vcs-root"},e.default.createElement("style",null,Ae),e.default.createElement("div",{className:"vcs-message vcs-error"},s("error"),e.default.createElement("button",{onClick:()=>this.setState({error:null})},s("retry")),e.default.createElement("button",{onClick:()=>r.layout.selectPanel(null)},s("back")))):this.props.children}}function w({session:u}){(0,e.useSyncExternalStore)(t=>r.locale.subscribe(t),()=>r.locale.getSnapshot(),()=>r.locale.getSnapshot());let c=u?.id,[f,k]=(0,e.useState)("all"),[D,F]=(0,e.useState)(0),[S,E]=(0,e.useState)(null),[p,g]=(0,e.useState)({}),[b,C]=(0,e.useState)(()=>ct(u?.cwd)),[P,A]=(0,e.useState)(0),[je,Ct]=(0,e.useState)(""),[$,Fe]=(0,e.useState)(""),[m,de]=(0,e.useState)(null),[l,H]=(0,e.useState)(null),[R,Me]=(0,e.useState)(!1),[Nt,Te]=(0,e.useState)(!1),[B,ze]=(0,e.useState)(""),[pe,q]=(0,e.useState)(""),[I,Be]=(0,e.useState)(""),[Ue,Oe]=(0,e.useState)(!1),[M,ue]=(0,e.useState)(""),[ee,We]=(0,e.useState)("all"),[U,_e]=(0,e.useState)(!0),[He,ve]=(0,e.useState)({}),[K,Et]=(0,e.useState)(!0),[fe,At]=(0,e.useState)(!1),[he,Pt]=(0,e.useState)(!1),[te,V]=(0,e.useState)("content"),[qe,Ke]=(0,e.useState)(0),[ge,be]=(0,e.useState)({added:0,deleted:0,count:0}),[N,Ve]=(0,e.useState)(!1),me=(0,e.useRef)(null),O=(0,e.useRef)(null),ye=(0,e.useRef)(null),se=(0,e.useRef)(null),xe=(0,e.useRef)(null),Ge=(0,e.useRef)(null),re=(0,e.useRef)(null),we=(0,e.useRef)(null),ke=(0,e.useRef)(null),Se=(0,e.useRef)(!1),oe=(0,e.useRef)(!1),T=S?.repositories||[],ae=T.filter(t=>t.id===b);(0,e.useEffect)(()=>{T.some(t=>t.id===b)&&dt(u?.cwd,b)},[u?.cwd,b,S]);let G=()=>{Ge.current?.abort(),re.current?.abort(),H(null),de(null),q(""),V("content"),be({added:0,deleted:0,count:0})},ie=()=>{oe.current=!1,G(),we.current?.abort(),ke.current=S,E(null),g({}),Fe(je.trim()),A(t=>t+1)},Xe=()=>{oe.current||(oe.current=!0,G(),we.current?.abort(),ke.current=null,E(null),g({}),Fe(""),A(t=>t+1))},Je=(t=!1)=>{Se.current=t,t||G(),t||g({}),F(a=>a+1)};(0,e.useEffect)(()=>{let t=new AbortController;return we.current=t,ze(""),Me(!!c),c&&n("vcs/repositories",{sessionId:c,...$?{subdirectory:$}:{}},t.signal).then(a=>{if(!t.signal.aborted){let v=yt(ke.current,a,$);oe.current=!1,C(h=>ut(v.repositories,h)),E(v)}}).catch(a=>{t.signal.aborted||ze(a.message)}).finally(()=>{t.signal.aborted||Me(!1)}),()=>t.abort()},[c,P,$]),(0,e.useEffect)(()=>{let t=new AbortController,a=Se.current;Ge.current=t,Se.current=!1,a||(g({}),q(""));for(let v of ae){let h=ce(v,f);i(()=>n("vcs/status",{sessionId:c,repositoryId:v.id,mode:h},t.signal),t.signal).then(y=>{t.signal.aborted||g(L=>({...L,[v.id]:{...y,mode:h}}))}).catch(y=>{if(!t.signal.aborted){if(y.code==="vcs/rediscover-required"){Xe();return}g(L=>({...L,[v.id]:{error:y.message,changes:[],mode:h}}))}})}return()=>t.abort()},[c,S,b,f,D]),(0,e.useEffect)(()=>{let t=()=>{document.visibilityState==="visible"&&Je(!0)};window.addEventListener("focus",t);let a=window.setInterval(t,3e4);return()=>{window.removeEventListener("focus",t),window.clearInterval(a)}},[c,b,f]);let ne=T.find(t=>t.id===m?.repositoryId),X=m?p[m.repositoryId]:null;(0,e.useEffect)(()=>{let t=new AbortController;return re.current=t,H(null),q(""),be({added:0,deleted:0,count:0}),V("content"),Te(!!m&&!!X),m&&X&&ne&&n("vcs/compare",{sessionId:c,repositoryId:m.repositoryId,mode:ce(ne,f),id:m.id},t.signal).then(a=>{t.signal.aborted||H(a)}).catch(a=>{if(!t.signal.aborted){if(a.code==="vcs/rediscover-required"){Xe();return}q(a.message)}}).finally(()=>{t.signal.aborted||Te(!1)}),()=>t.abort()},[m,X,c,f]),(0,e.useEffect)(()=>{let t=!1,a,v=new AbortController;Ve(!1),Be("");let h=document.createElement("link");return h.rel="stylesheet",h.href=kt("editor.css"),me.current.parentNode.appendChild(h),at(kt("editor.js")+"?v="+encodeURIComponent(nt)+"&retry="+qe,{signal:v.signal}).then(y=>{t||(a=y.createDiff(me.current,{onStats:be}),O.current=a,Ve(!0))}).catch(y=>{t||Be(y.message)}),()=>{t=!0,v.abort(),a?.dispose(),O.current=null,h.remove()}},[qe]),(0,e.useEffect)(()=>{N&&l&&!l.binary&&O.current?.setContent(l,JSON.stringify([c,S?.cwd,m?.repositoryId,f,m?.id,l.path]))},[N,l,c,S,m,f]),(0,e.useEffect)(()=>{O.current?.options({sideBySide:K,ignoreWhitespace:fe,wrap:he})},[N,K,fe,he]);let J=mt(ae,p,M,ee),W=J.flatMap(t=>t.changes),It=bt(X?.changes),Ce=vt(W,m?.id),Ye=()=>{ue(""),We("all")},Lt=async()=>{let t=l?.path||j?.path;if(t)try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(t);else{let a=document.createElement("textarea");try{if(a.value=t,a.style.cssText="position:fixed;opacity:0",document.body.appendChild(a),a.select(),!document.execCommand("copy"))throw Error("copy failed")}finally{a.remove()}}Oe(!0),window.setTimeout(()=>Oe(!1),1500)}catch{q(s("copyFailed"))}};(0,e.useEffect)(()=>{let t=a=>{(a.ctrlKey||a.metaKey)&&a.key.toLowerCase()==="f"?(a.preventDefault(),se.current?.focus(),se.current?.select()):a.key==="Escape"&&document.activeElement===se.current&&M?(a.preventDefault(),ue("")):a.altKey&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&(a.key==="ArrowLeft"||a.key==="ArrowRight")&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)&&(a.preventDefault(),Ne(a.key==="ArrowLeft"?"previous":"next"))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[M,W,m]);let Qe=t=>ve(a=>{let v={...a};for(let h of J)for(let y of De(Le(h.changes)))v[h.repository.id+"\0"+y]=!t;return v}),Dt=()=>{let t=j;!t||!m||(_e(!0),Ye(),ve(a=>{let v={...a};for(let h of ht(t.path))v[m.repositoryId+"\0"+h]=!1;return v}),xe.current=Q(m.repositoryId,t.id))};(0,e.useEffect)(()=>{let t=xe.current;if(!t)return;let a=[...ye.current?.querySelectorAll("button[data-vcs-change]")||[]].find(v=>v.dataset.vcsChange===t);a&&(a.scrollIntoView({block:"nearest"}),a.focus(),xe.current=null)},[U,M,ee,He,J]);let Ne=t=>{let a=ft(W,m?.id,t);a&&(re.current?.abort(),H(null),V("content"),de({repositoryId:b,id:a.id}))},Ze=R||ae.some(t=>!p[t.id]),j=X?.changes?.find(t=>t.id===m?.id),z=l?.properties,Ee=z?[...new Set([...Object.keys(z.left||{}),...Object.keys(z.right||{})])].filter(t=>z.left?.[t]!==z.right?.[t]):[],Y=t=>wt[t?.status]||t?.status?.slice(0,1).toUpperCase()||"M",$e=l?.binary?[l.left.label,l.right.label].filter(Boolean).join(" \u2194 "):"",_=pe||(Nt?s("loading"):c?Ze&&!j?s("loading"):B||(T.length?j?l?.binary?s("binary")+($e?" "+s("binaryComparison",{files:$e}):""):l?!N&&!I?s("loading"):"":s("pick"):s("pick"):s("noRepo")):s("noSession")),jt=t=>{let a=ye.current,v=a?[...a.querySelectorAll("button[data-vcs-item]")]:[],h=v.indexOf(t.target);if(h<0)return;let y;if(t.key==="ArrowDown")y=v[h+1];else if(t.key==="ArrowUp")y=v[h-1];else if(t.key==="Home")y=v[0];else if(t.key==="End")y=v.at(-1);else if(t.key==="ArrowRight"&&t.target.dataset.vcsDirectory==="closed"){t.preventDefault(),t.target.click();return}else if(t.key==="ArrowLeft"&&t.target.dataset.vcsDirectory==="open"){t.preventDefault(),t.target.click();return}else return;t.preventDefault(),y?.focus()},Re=({entry:t,compact:a=!1,depth:v=0})=>{let h=t.path.lastIndexOf("/");return e.default.createElement("button",{className:"vcs-file","data-vcs-item":!0,"data-vcs-change":Q(b,t.id),"aria-current":m?.repositoryId===b&&m?.id===t.id?"true":void 0,style:{paddingInlineStart:8+v*14},title:(t.oldPath?t.oldPath+" \u2192 ":"")+t.path+" \xB7 "+s(Y(t)),onClick:()=>{re.current?.abort(),H(null),V("content"),de({repositoryId:b,id:t.id})}},e.default.createElement("span",{className:"vcs-status","data-status":Y(t)},Y(t)),e.default.createElement("span",{className:"vcs-filename"},a?t.path.slice(h+1):t.path,t.oldPath&&e.default.createElement("small",{className:"vcs-filepath"},"\u2190 ",t.oldPath)))},et=({node:t,repository:a,depth:v=0})=>e.default.createElement(e.default.Fragment,null,t.directories.map(h=>{let y=a.id+"\0"+h.id,L=!!He[y];return e.default.createElement(e.default.Fragment,{key:y},e.default.createElement("button",{className:"vcs-dir vcs-dir-toggle","data-vcs-item":!0,"data-vcs-directory":L?"closed":"open","aria-expanded":!L,style:{paddingInlineStart:8+v*14},onClick:()=>ve(Ft=>({...Ft,[y]:!L}))},e.default.createElement("span",{"aria-hidden":"true"},L?"\u203A":"\u2304"),h.name,e.default.createElement("small",null,h.count)),!L&&e.default.createElement(et,{node:h,repository:a,depth:v+1}))}),t.files.map(h=>e.default.createElement(Re,{key:Q(a.id,h.id),entry:h,compact:t.id!=="",depth:v})));return e.default.createElement("section",{className:"vcs-root","aria-label":s("title")},e.default.createElement("style",null,Ae),e.default.createElement("header",{className:"vcs-top"},e.default.createElement(St,null),e.default.createElement("h1",{className:"vcs-title"},s("title")),e.default.createElement("span",{className:"vcs-badge"},s("readonly")),e.default.createElement("span",{className:"vcs-spacer"}),e.default.createElement("select",{"aria-label":s("repositories"),value:b,disabled:R||!T.length,onChange:t=>{G(),g({}),C(t.target.value)}},!T.length&&e.default.createElement("option",{value:""},s("repositories")),T.map(t=>e.default.createElement("option",{key:t.id,value:t.id},Z(t,s("workspaceRoot"))))),e.default.createElement("label",{className:"vcs-mode"},s("gitMode")," ",e.default.createElement("select",{"aria-label":s("gitMode"),value:f,disabled:!ae.some(t=>t.type==="git"),onChange:t=>{G(),g({}),k(t.target.value)}},["all","unstaged","staged"].map(t=>e.default.createElement("option",{key:t,value:t},s(t))))),e.default.createElement("button",{onClick:Je,disabled:Ze||!c},s("refresh")),e.default.createElement("button",{onClick:()=>r.layout.selectPanel(null)},s("back")),e.default.createElement("div",{className:"vcs-path",title:S?.cwd||u?.cwd},s("session"),": ",S?.cwd||u?.cwd||"\u2014"),e.default.createElement("form",{className:"vcs-discovery",onSubmit:t=>{t.preventDefault(),ie()}},e.default.createElement("input",{"aria-label":s("subdirectory"),placeholder:s("subdirectory"),value:je,onChange:t=>Ct(t.target.value)}),e.default.createElement("button",{disabled:!c||R},s("rescan")),e.default.createElement("span",null,s("scanHint"))),S?.truncated&&e.default.createElement("div",{className:"vcs-notice"},s("truncated")),(S?.warnings||[]).map((t,a)=>e.default.createElement("div",{className:"vcs-notice",key:a},typeof t=="string"?t:t.message||JSON.stringify(t)))),e.default.createElement("div",{className:"vcs-body"},e.default.createElement("aside",{className:"vcs-files"},e.default.createElement("div",{className:"vcs-filter"},e.default.createElement("input",{ref:se,"aria-label":s("search"),placeholder:s("search"),title:s("searchShortcut"),value:M,onChange:t=>ue(t.target.value)}),(M||ee!=="all")&&e.default.createElement("button",{className:"vcs-clear-filter",onClick:Ye},s("clearFilters"))),e.default.createElement("div",{className:"vcs-status-filter","aria-label":s("filterStatus")},["all","modified","added","deleted","renamed","conflicted","untracked"].map(t=>e.default.createElement("button",{key:t,"aria-pressed":ee===t,onClick:()=>We(t)},s(t==="all"?"allFiles":wt[t]||"M")," ",e.default.createElement("small",null,It[t]||0)))),e.default.createElement("div",{className:"vcs-count"},e.default.createElement("span",null,W.length," ",s("files")),e.default.createElement("span",{className:"vcs-auto"},s("autoRefresh")),e.default.createElement("button",{"aria-pressed":U,onClick:()=>_e(!U)},s(U?"tree":"list"))),U&&e.default.createElement("div",{className:"vcs-tree-actions"},e.default.createElement("button",{onClick:()=>Qe(!0)},s("expandAll")),e.default.createElement("button",{onClick:()=>Qe(!1)},s("collapseAll")),e.default.createElement("button",{onClick:Dt,disabled:!j},s("revealSelected"))),e.default.createElement("nav",{className:"vcs-filelist","aria-label":s("title"),ref:ye,onKeyDown:jt},J.map(t=>{let a=t.repository;return e.default.createElement("section",{className:"vcs-repository",key:a.id,"aria-label":Z(a,s("workspaceRoot"))},e.default.createElement("div",{className:"vcs-repository-heading",title:a.root},e.default.createElement("strong",null,Z(a,s("workspaceRoot"))),e.default.createElement("small",null,a.type==="svn"?s("svnBase"):s(ce(a,f)))),t.error?e.default.createElement("div",{className:"vcs-message vcs-error",role:"status"},t.error,e.default.createElement("button",{onClick:ie},s("rescan"))):p[a.id]?U?e.default.createElement(et,{node:Le(t.changes),repository:a}):t.changes.map(v=>e.default.createElement(Re,{key:Q(a.id,v.id),entry:v})):e.default.createElement("div",{className:"vcs-message"},s("loading")),!t.error&&p[a.id]&&!t.changes.length&&e.default.createElement("div",{className:"vcs-message"},s(M?"emptySearch":"clean")))}),!J.length&&e.default.createElement("div",{className:"vcs-message"},R?s("loading"):B||s(c?"noRepo":"noSession"),B&&e.default.createElement("button",{onClick:ie},s("rescan"))))),e.default.createElement("main",{className:"vcs-detail"},e.default.createElement("div",{className:"vcs-filehead"},e.default.createElement("strong",{title:l?.path||j?.path},ne?Z(ne,s("workspaceRoot"))+" / ":"",l?.path||j?.path||s("pick")),e.default.createElement("button",{className:"vcs-copy-path",disabled:!(l?.path||j?.path),onClick:Lt},s(Ue?"copied":"copyPath")),Ue&&e.default.createElement("span",{className:"vcs-sr-only",role:"status"},s("pathCopied")),e.default.createElement("span",{className:"vcs-spacer"}),l&&!l.binary&&N&&e.default.createElement(e.default.Fragment,null,e.default.createElement("span",{className:"vcs-add"},"+",ge.added),e.default.createElement("span",{className:"vcs-del"},"\u2212",ge.deleted))),I&&e.default.createElement("div",{className:"vcs-notice",role:"status"},s("fallback")," ",e.default.createElement("button",{onClick:()=>Ke(t=>t+1)},s("retry")),e.default.createElement("details",null,e.default.createElement("summary",null,s("diagnostics")),I)),l&&e.default.createElement("div",{className:"vcs-context","aria-label":s("comparisonContext")},e.default.createElement("span",{className:"vcs-context-status","data-status":Y(l)},s(Y(l))),l.oldPath&&e.default.createElement("span",{className:"vcs-context-rename",title:l.oldPath+" \u2192 "+l.path},l.oldPath," ",e.default.createElement("b",null,"\u2192")," ",l.path),e.default.createElement("span",null,l.left.label||"\u2014"," ",e.default.createElement("b",null,"\u2194")," ",l.right.label||"\u2014"),(l.left.encoding||l.right.encoding)&&e.default.createElement("span",null,s("encoding"),": ",l.left.encoding||"\u2014"," / ",l.right.encoding||"\u2014")),l?.notice&&e.default.createElement("div",{className:"vcs-notice"},l.notice),Ee.length>0&&e.default.createElement("div",{className:"vcs-tabs"},["content","properties"].map(t=>e.default.createElement("button",{key:t,"aria-pressed":te===t,onClick:()=>V(t)},s(t),t==="properties"?" ("+Ee.length+")":""))),e.default.createElement("div",{className:"vcs-labels"},e.default.createElement("span",null,l?.left.label||"\u2014",l?.left.encoding?" \xB7 "+l.left.encoding:""),e.default.createElement("span",null,l?.right.label||"\u2014",l?.right.encoding?" \xB7 "+l.right.encoding:"")),e.default.createElement("div",{className:"vcs-editorbox","data-hidden":!!_||te!=="content",style:te==="properties"?{display:"none"}:void 0},e.default.createElement("div",{className:"vcs-editor",ref:me,style:I?{display:"none"}:void 0}),I&&l&&!l.binary&&!_&&e.default.createElement(Ie,{comparison:l,labels:{approximate:s("approximate"),truncated:s("textTruncated")}}),_&&e.default.createElement("div",{className:"vcs-message "+(B||pe||I?"vcs-error":""),role:"status"},_,(B||pe||I)&&e.default.createElement("button",{onClick:()=>I?Ke(t=>t+1):ie()},s(I?"retry":"rescan")))),te==="properties"&&e.default.createElement("div",{className:"vcs-properties"},e.default.createElement("table",null,e.default.createElement("thead",null,e.default.createElement("tr",null,e.default.createElement("th",null,s("properties")),e.default.createElement("th",null,l?.left.label||s("before")),e.default.createElement("th",null,l?.right.label||s("after")))),e.default.createElement("tbody",null,Ee.map(t=>e.default.createElement("tr",{key:t},e.default.createElement("th",null,t),e.default.createElement("td",null,z.left?.[t]??"\u2014"),e.default.createElement("td",null,z.right?.[t]??"\u2014")))))),e.default.createElement("footer",{className:"vcs-toolbar"},e.default.createElement("button",{disabled:!N,"aria-pressed":K,onClick:()=>Et(!K)},s(K?"side":"inline")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:fe,onChange:t=>At(t.target.checked)}),s("whitespace")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:he,onChange:t=>Pt(t.target.checked)}),s("wrap")),e.default.createElement("span",{className:"vcs-spacer"}),N&&e.default.createElement("span",null,ge.count," ",s("changes")),e.default.createElement("button",{disabled:!N||!l||!!_,onClick:()=>O.current?.navigate("previous")},s("previous")),e.default.createElement("button",{disabled:!N||!l||!!_,onClick:()=>O.current?.navigate("next")},s("next")),Ce.index>0&&e.default.createElement("span",{className:"vcs-review-position"},s("reviewPosition",{index:Ce.index,total:Ce.total})),e.default.createElement("span",{className:"vcs-toolbar-separator"}),e.default.createElement("button",{title:s("fileShortcut"),disabled:!W.length,onClick:()=>Ne("previous")},s("previousFile")),e.default.createElement("button",{title:s("fileShortcut"),disabled:!W.length,onClick:()=>Ne("next")},s("nextFile"))))))}r.slots.inject("main",()=>r.slots.register({name:"main",key:"local-vcs"},o)),r.slots.inject("sidebar.panellist",()=>r.slots.register({name:"sidebar.panellist",id:"local-vcs",label:()=>s("title"),order:65},St))}
|
|
73
95
|
return module.exports; }});
|