@feng0531/dsh-vcs 0.3.20 → 0.3.22
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 +4 -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
|
|
3
|
+
DeepSeek Harness(DSH)Web 的只读 Git / SVN 变更预览插件。当前源码候选 **0.3.22**(尚待真实 GUI 验收与发布),最新已验证发布版本 **0.3.21**,包名 **@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 zt=Object.create;var le=Object.defineProperty;var Bt=Object.getOwnPropertyDescriptor;var Ut=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,Wt=Object.prototype.hasOwnProperty;var _t=(r,s)=>{for(var i in s)le(r,i,{get:s[i],enumerable:!0})},st=(r,s,i,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of Ut(s))!Wt.call(r,o)&&o!==i&&le(r,o,{get:()=>s[o],enumerable:!(n=Bt(s,o))||n.enumerable});return r};var rt=(r,s,i)=>(i=r!=null?zt(Ot(r)):{},st(s||!r||!r.__esModule?le(i,"default",{value:r,enumerable:!0}):i,r)),Ht=r=>st(le({},"__esModule",{value:!0}),r);var es={};_t(es,{apply:()=>Rt,inject:()=>$t});module.exports=Ht(es);var e=rt(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}
|
|
@@ -32,8 +32,8 @@ var Mt=Object.create;var le=Object.defineProperty;var Tt=Object.getOwnPropertyDe
|
|
|
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
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:
|
|
36
|
-
.vcs-root .vcs-status-filter button{font-size:11px;white-space:nowrap;padding:3px 6px}
|
|
35
|
+
.vcs-root .vcs-status-filter{display:flex;flex-wrap:wrap;flex-shrink:0;gap:4px;overflow:visible;padding:0 10px 8px}
|
|
36
|
+
.vcs-root .vcs-status-filter button{font-size:11px;flex:0 0 auto;white-space:nowrap;padding:3px 6px}
|
|
37
37
|
.vcs-root .vcs-status-filter button[aria-pressed=true]{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}
|
|
38
38
|
.vcs-root .vcs-status-filter small{font-size:10px;color:var(--dsw-alias-label-tertiary)}
|
|
39
39
|
.vcs-root .vcs-count{display:flex;align-items:center;gap:8px;padding:0 10px 8px;color:var(--dsw-alias-label-secondary)}
|
|
@@ -91,5 +91,5 @@ var Mt=Object.create;var le=Object.defineProperty;var Tt=Object.getOwnPropertyDe
|
|
|
91
91
|
.vcs-root .vcs-toolbar{gap:6px}
|
|
92
92
|
.vcs-root .vcs-title{font-size:16px}
|
|
93
93
|
}
|
|
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))}
|
|
94
|
+
`;var y=rt(require("react"),1);function ot(r){return r===""?[]:r.split(/\r\n|\n|\r/)}function it(r="",s=""){let i=ot(r),n=ot(s),o=0;for(;o<i.length&&o<n.length&&i[o]===n[o];)o++;let c=0;for(;c<i.length-o&&c<n.length-o&&i[i.length-c-1]===n[n.length-c-1];)c++;let w=i.length-c,v=n.length-c,d=w-o,f=v-o,k=d&&f?(d+1)*(f+1):0,D=k>2e5,F=[],S=0;function E(u,g){S++,!(F.length>=2e3)&&F.push({left:u===null?null:{number:u+1,text:i[u]},right:g===null?null:{number:g+1,text:n[g]},kind:u===null?"insert":g===null?"delete":i[u]===n[g]?"equal":"replace"})}for(let u=0;u<o;u++)E(u,u);if(D||!d||!f)for(let u=0;u<Math.max(d,f);u++)E(u<d?o+u:null,u<f?o+u:null);else{let u=f+1,g=new Uint32Array(k);for(let P=d-1;P>=0;P--)for(let A=f-1;A>=0;A--)g[P*u+A]=i[o+P]===n[o+A]?g[(P+1)*u+A+1]+1:Math.max(g[(P+1)*u+A],g[P*u+A+1]);let b=0,C=0;for(;b<d||C<f;)b<d&&C<f&&i[o+b]===n[o+C]?E(o+b++,o+C++):b<d&&(C===f||g[(b+1)*u+C]>=g[b*u+C+1])?E(o+b++,null):E(null,o+C++)}for(let u=0;u<c;u++)E(w+u,v+u);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 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."},Pe={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},Gt={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Jt={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},Xt={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,y.useMemo)(()=>it(i,n),[i,n]),c=v=>s[v]??Vt[v],w=(v,d,f)=>{let k=v&&f!=="equal";return y.default.createElement("td",{style:{...Pe,background:k?d==="left"?"#d6454520":"#259b4920":void 0}},y.default.createElement("div",{style:Gt},y.default.createElement("span",{style:Jt},v?.number??""),y.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},k?d==="left"?"\u2212":"+":""),y.default.createElement("pre",{style:Xt},v?.text??"")))};return y.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},o.approximate&&y.default.createElement("div",{role:"status",style:{padding:8}},c("approximate")),o.truncated&&y.default.createElement("div",{role:"status",style:{padding:8}},c("truncated")," (",2e3," / ",o.totalRows,")"),y.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},y.default.createElement("thead",null,y.default.createElement("tr",null,y.default.createElement("th",{scope:"col",style:{...Pe,padding:8,overflowWrap:"anywhere"}},r?.left?.label||c("before")),y.default.createElement("th",{scope:"col",style:{...Pe,padding:8,overflowWrap:"anywhere"}},r?.right?.label||c("after")))),y.default.createElement("tbody",null,o.rows.map((v,d)=>y.default.createElement("tr",{key:d,"data-kind":v.kind},w(v.left,"left",v.kind),w(v.right,"right",v.kind))))),!o.rows.length&&y.default.createElement("p",{style:{padding:8}},c("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 c=o.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 o.arrayBuffer(),s?.throwIfAborted(),n(r)}var nt={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})"}};function lt(r,s,i,n){let o=r.target;if(!s?.contains(o)||r.defaultPrevented||r.isComposing||o?.closest?.(".monaco-editor"))return null;if(r.key==="Escape"&&o===i&&n)return"clear";let c=o?.isContentEditable||o?.closest?.('input,textarea,select,[role="textbox"]');if(c&&o!==i)return null;if((r.ctrlKey||r.metaKey)&&!r.altKey&&!r.shiftKey&&r.key?.toLowerCase()==="f")return"search";if(!c&&r.altKey&&!r.ctrlKey&&!r.metaKey&&!r.shiftKey){if(r.key==="ArrowLeft")return"previous";if(r.key==="ArrowRight")return"next"}return null}var ct="0.3.22";var dt=r=>"dsh-vcs:project:v1:"+r;function pt(r,s){if(!r)return"";try{let i=(s??globalThis.localStorage)?.getItem(dt(r));return typeof i=="string"&&i.length<=1024?i:""}catch{return""}}function ut(r,s,i){if(!(!r||!s))try{(i??globalThis.localStorage)?.setItem(dt(r),s)}catch{}}function ft(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",vt=(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 c=s;for(let w of o.slice(0,-1)){let v=c.id?c.id+"/"+w:w;c.directories.has(w)||c.directories.set(w,{id:v,name:w,directories:new Map,files:[],count:0}),c=c.directories.get(w),c.count++}c.files.push(n)}let i=n=>({...n,directories:[...n.directories.values()].sort((o,c)=>vt(o.name,c.name)).map(i),files:[...n.files].sort((o,c)=>vt(o.path,c.path))});return i(s)}function ht(r=[],s){let i=r.findIndex(n=>n.id===s);return{index:i<0?0:i+1,total:r.length}}function gt(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,c=n<0?i==="next"?-1:0:n;return r[(c+o+r.length)%r.length]||null}function bt(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 mt(r=""){return{missing:"deleted",unversioned:"untracked",replaced:"modified",obstructed:"conflicted",copied:"renamed"}[r]||r}function xt(r=[]){return r.reduce((s,i)=>{let n=mt(i.status);return s.all++,s[n]=(s[n]||0)+1,s},{all:0})}function Zt(r=[],s="",i="all"){let n=s.toLowerCase();return r.filter(o=>(i==="all"||mt(o.status)===i)&&o.path.toLowerCase().includes(n)).sort((o,c)=>o.path.localeCompare(c.path))}function yt(r,s,i="",n="all"){return r.map(o=>({...s[o.id],repository:o,changes:Zt(s[o.id]?.changes,i,n)}))}function wt(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 kt(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,c)=>new Promise((w,v)=>{let d={run:o,signal:c,resolve:w,reject:v,abort:null};if(d.abort=()=>{let f=i.indexOf(d);f>=0&&(i.splice(f,1),v(new Error("Aborted")))},c?.aborted){v(new Error("Aborted"));return}c?.addEventListener("abort",d.abort,{once:!0}),i.push(d),n()})}var St={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},Ct=r=>new URL("vcs-assets/"+r,document.baseURI).href;function Nt(){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 $t=["slots","layout","locale","connection","uiSession"];function Rt(r){r.effect(()=>r.locale.register("local.vcs",nt));let s=r.locale.bind("local.vcs"),i=kt(2);async function n(v,d,f){let k=await r.connection.rpc.call("/vcs-rpc",v,d,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(v){let d=v.useSessions(f=>Object.values(f.byId).find(k=>(k.retainedBy.mainView??0)>0));return e.default.createElement(c,{key:JSON.stringify([d?.id,d?.cwd])},e.default.createElement(w,{session:d}))}class c extends e.default.Component{state={error:null};static getDerivedStateFromError(d){return{error:d}}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:v}){(0,e.useSyncExternalStore)(t=>r.locale.subscribe(t),()=>r.locale.getSnapshot(),()=>r.locale.getSnapshot());let d=v?.id,[f,k]=(0,e.useState)("all"),[D,F]=(0,e.useState)(0),[S,E]=(0,e.useState)(null),[u,g]=(0,e.useState)({}),[b,C]=(0,e.useState)(()=>pt(v?.cwd)),[P,A]=(0,e.useState)(0),[je,Et]=(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),[At,Te]=(0,e.useState)(!1),[B,ze]=(0,e.useState)(""),[pe,K]=(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)({}),[q,Pt]=(0,e.useState)(!0),[fe,It]=(0,e.useState)(!1),[he,Lt]=(0,e.useState)(!1),[te,V]=(0,e.useState)("content"),[Ke,qe]=(0,e.useState)(0),[ge,be]=(0,e.useState)({added:0,deleted:0,count:0}),[N,Ve]=(0,e.useState)(!1),Ge=(0,e.useRef)(null),me=(0,e.useRef)(null),O=(0,e.useRef)(null),xe=(0,e.useRef)(null),se=(0,e.useRef)(null),ye=(0,e.useRef)(null),Je=(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||[],ie=T.filter(t=>t.id===b);(0,e.useEffect)(()=>{T.some(t=>t.id===b)&&ut(v?.cwd,b)},[v?.cwd,b,S]);let G=()=>{Je.current?.abort(),re.current?.abort(),H(null),de(null),K(""),V("content"),be({added:0,deleted:0,count:0})},ae=()=>{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))},Ye=(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(!!d),d&&n("vcs/repositories",{sessionId:d,...$?{subdirectory:$}:{}},t.signal).then(a=>{if(!t.signal.aborted){let p=wt(ke.current,a,$);oe.current=!1,C(h=>ft(p.repositories,h)),E(p)}}).catch(a=>{t.signal.aborted||ze(a.message)}).finally(()=>{t.signal.aborted||Me(!1)}),()=>t.abort()},[d,P,$]),(0,e.useEffect)(()=>{let t=new AbortController,a=Se.current;Je.current=t,Se.current=!1,a||(g({}),K(""));for(let p of ie){let h=ce(p,f);i(()=>n("vcs/status",{sessionId:d,repositoryId:p.id,mode:h},t.signal),t.signal).then(x=>{t.signal.aborted||g(L=>({...L,[p.id]:{...x,mode:h}}))}).catch(x=>{if(!t.signal.aborted){if(x.code==="vcs/rediscover-required"){Xe();return}g(L=>({...L,[p.id]:{error:x.message,changes:[],mode:h}}))}})}return()=>t.abort()},[d,S,b,f,D]),(0,e.useEffect)(()=>{let t=()=>{document.visibilityState==="visible"&&Ye(!0)};window.addEventListener("focus",t);let a=window.setInterval(t,3e4);return()=>{window.removeEventListener("focus",t),window.clearInterval(a)}},[d,b,f]);let ne=T.find(t=>t.id===m?.repositoryId),J=m?u[m.repositoryId]:null;(0,e.useEffect)(()=>{let t=new AbortController;return re.current=t,H(null),K(""),be({added:0,deleted:0,count:0}),V("content"),Te(!!m&&!!J),m&&J&&ne&&n("vcs/compare",{sessionId:d,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}K(a.message)}}).finally(()=>{t.signal.aborted||Te(!1)}),()=>t.abort()},[m,J,d,f]),(0,e.useEffect)(()=>{let t=!1,a,p=new AbortController;Ve(!1),Be("");let h=document.createElement("link");return h.rel="stylesheet",h.href=Ct("editor.css"),me.current.parentNode.appendChild(h),at(Ct("editor.js")+"?v="+encodeURIComponent(ct)+"&retry="+Ke,{signal:p.signal}).then(x=>{t||(a=x.createDiff(me.current,{onStats:be}),O.current=a,Ve(!0))}).catch(x=>{t||Be(x.message)}),()=>{t=!0,p.abort(),a?.dispose(),O.current=null,h.remove()}},[Ke]),(0,e.useEffect)(()=>{N&&l&&!l.binary&&O.current?.setContent(l,JSON.stringify([d,S?.cwd,m?.repositoryId,f,m?.id,l.path]))},[N,l,d,S,m,f]),(0,e.useEffect)(()=>{O.current?.options({sideBySide:q,ignoreWhitespace:fe,wrap:he})},[N,q,fe,he]);let X=yt(ie,u,M,ee),W=X.flatMap(t=>t.changes),Dt=xt(J?.changes),Ce=ht(W,m?.id),Qe=()=>{ue(""),We("all")},jt=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{K(s("copyFailed"))}};(0,e.useEffect)(()=>{let t=a=>{let p=lt(a,Ge.current,se.current,!!M);p&&(a.preventDefault(),p==="search"?(se.current?.focus(),se.current?.select()):p==="clear"?ue(""):Ne(p))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[M,W,m]);let Ze=t=>ve(a=>{let p={...a};for(let h of X)for(let x of De(Le(h.changes)))p[h.repository.id+"\0"+x]=!t;return p}),Ft=()=>{let t=j;!t||!m||(_e(!0),Qe(),ve(a=>{let p={...a};for(let h of bt(t.path))p[m.repositoryId+"\0"+h]=!1;return p}),ye.current=Q(m.repositoryId,t.id))};(0,e.useEffect)(()=>{let t=ye.current;if(!t)return;let a=[...xe.current?.querySelectorAll("button[data-vcs-change]")||[]].find(p=>p.dataset.vcsChange===t);a&&(a.scrollIntoView({block:"nearest"}),a.focus(),ye.current=null)},[U,M,ee,He,X]);let Ne=t=>{let a=gt(W,m?.id,t);a&&(re.current?.abort(),H(null),V("content"),de({repositoryId:b,id:a.id}))},$e=R||ie.some(t=>!u[t.id]),j=J?.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=>St[t?.status]||t?.status?.slice(0,1).toUpperCase()||"M",Re=l?.binary?[l.left.label,l.right.label].filter(Boolean).join(" \u2194 "):"",_=pe||(At?s("loading"):d?$e&&!j?s("loading"):B||(T.length?j?l?.binary?s("binary")+(Re?" "+s("binaryComparison",{files:Re}):""):l?!N&&!I?s("loading"):"":s("pick"):s("pick"):s("noRepo")):s("noSession")),Mt=t=>{let a=xe.current,p=a?[...a.querySelectorAll("button[data-vcs-item]")]:[],h=p.indexOf(t.target);if(h<0)return;let x;if(t.key==="ArrowDown")x=p[h+1];else if(t.key==="ArrowUp")x=p[h-1];else if(t.key==="Home")x=p[0];else if(t.key==="End")x=p.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(),x?.focus()},et=({entry:t,compact:a=!1,depth:p=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+p*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)))},tt=({node:t,repository:a,depth:p=0})=>e.default.createElement(e.default.Fragment,null,t.directories.map(h=>{let x=a.id+"\0"+h.id,L=!!He[x];return e.default.createElement(e.default.Fragment,{key:x},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+p*14},onClick:()=>ve(Tt=>({...Tt,[x]:!L}))},e.default.createElement("span",{"aria-hidden":"true"},L?"\u203A":"\u2304"),h.name,e.default.createElement("small",null,h.count)),!L&&e.default.createElement(tt,{node:h,repository:a,depth:p+1}))}),t.files.map(h=>e.default.createElement(et,{key:Q(a.id,h.id),entry:h,compact:t.id!=="",depth:p})));return e.default.createElement("section",{ref:Ge,className:"vcs-root","aria-label":s("title")},e.default.createElement("style",null,Ae),e.default.createElement("header",{className:"vcs-top"},e.default.createElement(Nt,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:!ie.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:Ye,disabled:$e||!d},s("refresh")),e.default.createElement("button",{onClick:()=>r.layout.selectPanel(null)},s("back")),e.default.createElement("div",{className:"vcs-path",title:S?.cwd||v?.cwd},s("session"),": ",S?.cwd||v?.cwd||"\u2014"),e.default.createElement("form",{className:"vcs-discovery",onSubmit:t=>{t.preventDefault(),ae()}},e.default.createElement("input",{"aria-label":s("subdirectory"),placeholder:s("subdirectory"),value:je,onChange:t=>Et(t.target.value)}),e.default.createElement("button",{disabled:!d||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:Qe},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":St[t]||"M")," ",e.default.createElement("small",null,Dt[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:()=>Ze(!0)},s("expandAll")),e.default.createElement("button",{onClick:()=>Ze(!1)},s("collapseAll")),e.default.createElement("button",{onClick:Ft,disabled:!j},s("revealSelected"))),e.default.createElement("nav",{className:"vcs-filelist","aria-label":s("title"),ref:xe,onKeyDown:Mt},X.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:ae},s("rescan"))):u[a.id]?U?e.default.createElement(tt,{node:Le(t.changes),repository:a}):t.changes.map(p=>e.default.createElement(et,{key:Q(a.id,p.id),entry:p})):e.default.createElement("div",{className:"vcs-message"},s("loading")),!t.error&&u[a.id]&&!t.changes.length&&e.default.createElement("div",{className:"vcs-message"},s(M?"emptySearch":"clean")))}),!X.length&&e.default.createElement("div",{className:"vcs-message"},R?s("loading"):B||s(d?"noRepo":"noSession"),B&&e.default.createElement("button",{onClick:ae},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:jt},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:()=>qe(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?qe(t=>t+1):ae()},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":q,onClick:()=>Pt(!q)},s(q?"side":"inline")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:fe,onChange:t=>It(t.target.checked)}),s("whitespace")),e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:!N,checked:he,onChange:t=>Lt(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},Nt))}
|
|
95
95
|
return module.exports; }});
|