@feng0531/dsh-vcs 0.3.67 → 0.3.69

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/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 qr=Object.create;var Ie=Object.defineProperty;var Jr=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames;var Ur=Object.getPrototypeOf,Vr=Object.prototype.hasOwnProperty;var Gr=(e,t)=>{for(var o in t)Ie(e,o,{get:t[o],enumerable:!0})},Yt=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Wr(t))!Vr.call(e,s)&&s!==o&&Ie(e,s,{get:()=>t[s],enumerable:!(r=Jr(t,s))||r.enumerable});return e};var R=(e,t,o)=>(o=e!=null?qr(Ur(e)):{},Yt(t||!e||!e.__esModule?Ie(o,"default",{value:e,enumerable:!0}):o,e)),Ir=e=>Yt(Ie({},"__esModule",{value:!0}),e);var wo={};Gr(wo,{apply:()=>xo,inject:()=>yo});module.exports=Ir(wo);var n=R(require("react"),1);var pt=`.vcs-root .vcs-discovery{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}
2
+ var qr=Object.create;var Ge=Object.defineProperty;var Jr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Vr=Object.getPrototypeOf,Wr=Object.prototype.hasOwnProperty;var Ir=(e,t)=>{for(var o in t)Ge(e,o,{get:t[o],enumerable:!0})},Yt=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ur(t))!Wr.call(e,i)&&i!==o&&Ge(e,i,{get:()=>t[i],enumerable:!(r=Jr(t,i))||r.enumerable});return e};var R=(e,t,o)=>(o=e!=null?qr(Vr(e)):{},Yt(t||!e||!e.__esModule?Ge(o,"default",{value:e,enumerable:!0}):o,e)),Gr=e=>Yt(Ge({},"__esModule",{value:!0}),e);var So={};Ir(So,{apply:()=>wo,inject:()=>xo});module.exports=Gr(So);var n=R(require("react"),1);var pt=`.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}
@@ -92,6 +92,6 @@ var qr=Object.create;var Ie=Object.defineProperty;var Jr=Object.getOwnPropertyDe
92
92
  .vcs-root .vcs-toolbar{gap:6px}
93
93
  .vcs-root .vcs-title{font-size:16px}
94
94
  }
95
- `;function Qt(e,t){return async(o,r,s)=>{let a=await e.rpc.call("/vcs-rpc",o,r,s);if(!a.ok){let p=new Error(a.error?.message||String(a.error||t()));throw p.code=a.error?.code,p}return a.value}}function ut(e=2){if(!Number.isInteger(e)||e<1||e>2)throw new RangeError("Status concurrency must be 1 or 2");let t=0,o=[];function r(){for(;t<e&&o.length;){let s=o.shift();if(s.signal?.removeEventListener("abort",s.abort),s.signal?.aborted){s.reject(new Error("Aborted"));continue}t++,Promise.resolve().then(()=>{if(s.signal?.aborted)throw new Error("Aborted");return s.run()}).then(s.resolve,s.reject).finally(()=>{t--,r()})}}return(s,a)=>new Promise((p,f)=>{let d={run:s,signal:a,resolve:p,reject:f,abort:null};if(d.abort=()=>{let i=o.indexOf(d);i>=0&&(o.splice(i,1),f(new Error("Aborted")))},a?.aborted){f(new Error("Aborted"));return}a?.addEventListener("abort",d.abort,{once:!0}),o.push(d),r()})}var X=R(require("react"),1);function Xt(e){return e===""?[]:e.split(/\r\n|\n|\r/)}function $t(e="",t=""){let o=Xt(e),r=Xt(t),s=0;for(;s<o.length&&s<r.length&&o[s]===r[s];)s++;let a=0;for(;a<o.length-s&&a<r.length-s&&o[o.length-a-1]===r[r.length-a-1];)a++;let p=o.length-a,f=r.length-a,d=p-s,i=f-s,c=d&&i?(d+1)*(i+1):0,m=c>2e5,w=[],g=0;function S(u,y){g++,!(w.length>=2e3)&&w.push({left:u===null?null:{number:u+1,text:o[u]},right:y===null?null:{number:y+1,text:r[y]},kind:u===null?"insert":y===null?"delete":o[u]===r[y]?"equal":"replace"})}for(let u=0;u<s;u++)S(u,u);if(m||!d||!i)for(let u=0;u<Math.max(d,i);u++)S(u<d?s+u:null,u<i?s+u:null);else{let u=i+1,y=new Uint32Array(c);for(let h=d-1;h>=0;h--)for(let x=i-1;x>=0;x--)y[h*u+x]=o[s+h]===r[s+x]?y[(h+1)*u+x+1]+1:Math.max(y[(h+1)*u+x],y[h*u+x+1]);let v=0,b=0;for(;v<d||b<i;)v<d&&b<i&&o[s+v]===r[s+b]?S(s+v++,s+b++):v<d&&(b===i||y[(v+1)*u+b]>=y[v*u+b+1])?S(s+v++,null):S(null,s+b++)}for(let u=0;u<a;u++)S(p+u,f+u);return{rows:w,approximate:m,truncated:g>w.length,totalRows:g,omittedRows:g-w.length,leftLineCount:o.length,rightLineCount:r.length,lcsCells:m?0:c}}var _r={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."},ft={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},Yr={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Qr={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},Xr={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function Be({comparison:e,labels:t={}}){let o=e?.left?.text??"",r=e?.right?.text??"",s=(0,X.useMemo)(()=>$t(o,r),[o,r]),a=f=>t[f]??_r[f],p=(f,d,i)=>{let c=f&&i!=="equal";return X.default.createElement("td",{style:{...ft,background:c?d==="left"?"#d6454520":"#259b4920":void 0}},X.default.createElement("div",{style:Yr},X.default.createElement("span",{style:Qr},f?.number??""),X.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},c?d==="left"?"\u2212":"+":""),X.default.createElement("pre",{style:Xr},f?.text??"")))};return X.default.createElement("section",{className:"vcs-text-comparison","aria-label":a("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},s.approximate&&X.default.createElement("div",{role:"status",style:{padding:8}},a("approximate")),s.truncated&&X.default.createElement("div",{role:"status",style:{padding:8}},a("truncated")," (",2e3," / ",s.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:{...ft,padding:8,overflowWrap:"anywhere"}},e?.left?.label||a("before")),X.default.createElement("th",{scope:"col",style:{...ft,padding:8,overflowWrap:"anywhere"}},e?.right?.label||a("after")))),X.default.createElement("tbody",null,s.rows.map((f,d)=>X.default.createElement("tr",{key:d,"data-kind":f.kind},p(f.left,"left",f.kind),p(f.right,"right",f.kind))))),!s.rows.length&&X.default.createElement("p",{style:{padding:8}},a("empty")))}var W=R(require("react"),1);function Zt(e,{width:t,height:o,signal:r,timeoutMs:s=1e4,createURL:a=d=>URL.createObjectURL(d),revokeURL:p=d=>URL.revokeObjectURL(d),createImage:f=()=>new Image}={}){return new Promise((d,i)=>{if(r?.aborted){i(r.reason);return}if(!["image/png","image/jpeg","image/webp"].includes(e?.type)||e.size>2*1024*1024||!Number.isInteger(t)||!Number.isInteger(o)||t<1||o<1||t>8192||o>8192||t*o>16e6||!Number.isFinite(s)||s<=0){i(new Error("Invalid image preview"));return}let c,m,w,g=!1,S=!1,u=()=>{S||(S=!0,m&&(m.src=""),c&&p(c))},y=()=>{clearTimeout(w),r?.removeEventListener("abort",b)},v=h=>{g||(g=!0,y(),u(),i(h))},b=()=>v(r.reason||new Error("Image cancelled"));try{c=a(e),m=f(),r?.addEventListener("abort",b,{once:!0}),w=setTimeout(()=>v(new Error("Image decode timed out")),s),m.src=c,Promise.resolve(m.decode()).then(()=>{if(!g){if(r?.aborted){b();return}if(m.naturalWidth!==t||m.naturalHeight!==o){v(new Error("Image dimensions mismatch"));return}g=!0,y(),d({url:c,dispose:u})}},v)}catch(h){v(h)}})}function $r({side:e,sessionId:t,repositoryId:o,commit:r,parentIndex:s,base:a,target:p,workspace:f=!1,mode:d,id:i,rpc:c,t:m,onRediscover:w}){let[g,S]=(0,W.useState)(null),[u,y]=(0,W.useState)(""),[v,b]=(0,W.useState)(0);return(0,W.useEffect)(()=>{let h=new AbortController,x;return S(null),y(""),(async()=>{let k=await c(f?"vcs/workspace-image":a?"vcs/revision-image":"vcs/commit-image",f?{sessionId:t,repositoryId:o,mode:d,id:i,side:e}:a?{sessionId:t,repositoryId:o,base:a,target:p,id:i,side:e}:{sessionId:t,repositoryId:o,commit:r,parentIndex:s,id:i,side:e},h.signal);if(h.signal.aborted)return;if(k.absent){S(k);return}if(!["image/png","image/jpeg","image/webp"].includes(k.mime)||typeof k.base64!="string"||k.base64.length>2796204||!Number.isInteger(k.bytes)||k.bytes<1||k.bytes>2097152)throw Error(m("imageInvalid"));let O=atob(k.base64);if(O.length!==k.bytes)throw Error(m("imageInvalid"));let N=new Blob([Uint8Array.from(O,q=>q.charCodeAt(0))],{type:k.mime});if(x=await Zt(N,{width:k.width,height:k.height,signal:h.signal}),h.signal.aborted){x.dispose();return}S({...k,url:x.url})})().catch(k=>{h.signal.aborted||(y(k.message),k.code==="vcs/rediscover-required"&&w())}),()=>{h.abort(),x?.dispose()}},[e,t,o,r,s,a,p,f,d,i,v]),W.default.createElement("section",{style:{flex:"1 1 280px",minWidth:0},"aria-label":m(e==="left"?"imageBefore":"imageAfter")},W.default.createElement("h5",null,m(e==="left"?"imageBefore":"imageAfter")),u?W.default.createElement("p",{role:"alert"},u," ",W.default.createElement("button",{onClick:()=>b(h=>h+1)},m("retry"))):g?W.default.createElement(W.default.Fragment,null,W.default.createElement("p",null,W.default.createElement("code",null,g.commit)," \xB7 ",g.path),g.absent?W.default.createElement("p",null,m("imageAbsent")):W.default.createElement(W.default.Fragment,null,W.default.createElement("p",null,g.width," \xD7 ",g.height," \xB7 ",g.bytes," B"),W.default.createElement("img",{src:g.url,alt:g.path,style:{maxWidth:"100%",maxHeight:480,objectFit:"contain"}}),g.metadataStripped&&W.default.createElement("p",null,m("imageMetadata")))):W.default.createElement("p",{role:"status"},m("loading")))}function Fe(e){let[t,o]=(0,W.useState)(!1);return W.default.createElement("div",null,W.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("imageCompare")),t&&W.default.createElement(W.default.Fragment,null,W.default.createElement("p",null,e.t("imageScope")),W.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:16}},["left","right"].map(r=>W.default.createElement($r,{key:r,...e,side:r})))))}function ze(e){return{before:e("textBefore"),after:e("textAfter"),readonly:e("textReadonly"),empty:e("textEmpty"),approximate:e("approximate"),truncated:e("textTruncated")}}var G=R(require("react"),1);function mt(e){return G.default.createElement(Zr,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Zr({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:s}){let[a,p]=(0,G.useState)(!1),[f,d]=(0,G.useState)(null),[i,c]=(0,G.useState)(""),[m,w]=(0,G.useState)(0);return(0,G.useEffect)(()=>{if(!a)return;let g=new AbortController;return d(null),c(""),o("vcs/svn-identity",{sessionId:e,repositoryId:t},g.signal).then(S=>{g.signal.aborted||d(S)}).catch(S=>{g.signal.aborted||(c(S.message),S.code==="vcs/rediscover-required"&&s())}),()=>g.abort()},[a,e,t,m]),G.default.createElement("section",null,G.default.createElement("button",{"aria-expanded":a,onClick:()=>p(g=>!g)},r("svnIdentity")),a&&G.default.createElement(G.default.Fragment,null,G.default.createElement("p",null,r("svnOfflineIdentity")),i?G.default.createElement("p",{role:"alert"},i," ",G.default.createElement("button",{onClick:()=>w(g=>g+1)},r("retry"))):f?G.default.createElement(G.default.Fragment,null,G.default.createElement("dl",null,["origin","root","uuid","scope","revision"].map(g=>G.default.createElement(G.default.Fragment,{key:g},G.default.createElement("dt",null,g),G.default.createElement("dd",null,G.default.createElement("code",null,f[g]))))),G.default.createElement("p",{role:"status"},r("svnRemoteDisabled"))):G.default.createElement("p",{role:"status"},r("loading"))))}function Ke(e,t,{now:o=Date.now,schedule:r=setTimeout,cancel:s=clearTimeout}={}){if(!Number.isSafeInteger(e)||e<=o()||e-o()>3e5)throw Error("Invalid SVN consent expiry");let a=!0,p=r(()=>{a&&(a=!1,t())},e-o());return()=>{a&&(a=!1,s(p))}}function Rt(e,t=Date.now()){if(!e||typeof e.token!="string"||!/^[a-f0-9]{64}$/.test(e.token)||typeof e.snapshot!="string"||!/^(0|[1-9][0-9]*)$/.test(e.snapshot)||BigInt(e.snapshot)>9223372036854775807n||!Number.isSafeInteger(e.expiresAt)||e.expiresAt<=t||e.expiresAt-t>3e5)throw Error("Invalid SVN consent response");return e}var Q=R(require("react"),1);var M=R(require("react"),1);function ht(e){return M.default.createElement(Rr,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Rr({sessionId:e,repositoryId:t,rpc:o,t:r,onApproved:s,onRediscover:a}){let[p,f]=(0,M.useState)(!1),[d,i]=(0,M.useState)(null),[c,m]=(0,M.useState)(!1),[w,g]=(0,M.useState)(""),[S,u]=(0,M.useState)(!1),[y,v]=(0,M.useState)(0);(0,M.useEffect)(()=>{if(!p)return;let x=new AbortController;return i(null),m(!1),g(""),u(!0),o("vcs/svn-describe",{sessionId:e,repositoryId:t},x.signal).then(k=>{x.signal.aborted||i(k)}).catch(k=>{x.signal.aborted||(g(k.message),k.code==="vcs/rediscover-required"&&a())}).finally(()=>{x.signal.aborted||u(!1)}),()=>x.abort()},[p,e,t,y]);let[b,h]=(0,M.useState)(0);return(0,M.useEffect)(()=>{if(!p||!d||d.expiresAt===void 0)return;let x=()=>{i(null),m(!1),h(0),u(!1),g(r("svnOfferExpired"))};try{return Ke(d.expiresAt,x)}catch{x()}},[p,d]),(0,M.useEffect)(()=>{if(!b||!p||!d)return;let x=new AbortController;return u(!0),g(""),o("vcs/svn-approve",{sessionId:e,repositoryId:t,offer:d.offer,explicit:!0},x.signal).then(k=>{x.signal.aborted||s(k)}).catch(k=>{x.signal.aborted||(g(k.message),m(!1),k.code==="vcs/rediscover-required"&&a())}).finally(()=>{x.signal.aborted||u(!1)}),()=>x.abort()},[b,p,d]),M.default.createElement("section",null,M.default.createElement("button",{"aria-expanded":p,onClick:()=>{h(0),f(x=>!x)}},r("svnConsentReview")),p&&M.default.createElement(M.default.Fragment,null,M.default.createElement("p",null,r("svnConsentScope")),w&&M.default.createElement("p",{role:"alert"},w," ",M.default.createElement("button",{disabled:S,onClick:()=>{h(0),v(x=>x+1)}},r("retry"))),d&&M.default.createElement(M.default.Fragment,null,M.default.createElement("dl",null,["origin","root","uuid","scope"].map(x=>M.default.createElement(M.default.Fragment,{key:x},M.default.createElement("dt",null,x),M.default.createElement("dd",null,M.default.createElement("code",null,d[x]))))),d.remoteEnabled?M.default.createElement(M.default.Fragment,null,M.default.createElement("label",null,M.default.createElement("input",{type:"checkbox",checked:c,disabled:S,onChange:x=>m(x.target.checked)}),r("svnConsentExplicit")),M.default.createElement("button",{disabled:S||!c,onClick:()=>h(x=>x+1)},r("svnConsentApprove"))):M.default.createElement("p",{role:"status"},r("svnRemoteDisabled"))),S&&M.default.createElement("p",{role:"status"},r("loading"))))}var A=R(require("react"),1);var Y=R(require("react"),1);var ne=require("react");function er({load:e,node:t,comparison:o,key:r,single:s=!1,onReady:a=()=>{},onError:p=()=>{}}){let f=new AbortController,d,i=!1,c=()=>{let w=d;d=void 0,w?.dispose()};return{done:Promise.resolve().then(()=>(f.signal.throwIfAborted(),e(f.signal))).then(w=>{i||(d=w.createDiff(t,{single:s}),d.setContent(o,r),i||a(d))}).catch(w=>{try{c()}finally{i||p(w)}}),dispose(){i||(i=!0,f.abort(),c())}}}async function _e(e,{signal:t,fetcher:o=fetch,importer:r=s=>import(s)}={}){let s=await o(e,{credentials:"same-origin",cache:"no-cache",signal:t});if(!s.ok)throw new Error("Editor resource HTTP "+s.status+" ("+e+"). "+(s.status===401?"Refresh the authenticated DSH page.":s.status===404?"The editor route is not active in this DSH process.":"Check plugin asset registration."));let a=s.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(a))throw new Error("Editor resource returned "+(a||"no Content-Type")+" instead of JavaScript.");return await s.arrayBuffer(),t?.throwIfAborted(),r(e)}var Ye="0.3.67";function tr({comparison:e,identity:t,enabled:o,single:r,line:s,sideBySide:a,ignoreWhitespace:p,wrap:f}){let d=(0,ne.useRef)(null),i=(0,ne.useRef)(null),[c,m]=(0,ne.useState)(!1),[w,g]=(0,ne.useState)("");return(0,ne.useEffect)(()=>{if(m(!1),g(""),!o)return;let S=v=>new URL("vcs-assets/"+v,document.baseURI).href,u=document.createElement("link");u.rel="stylesheet",u.href=S("editor.css"),document.head.appendChild(u);let y=er({node:d.current,comparison:e,key:t,single:r,load:v=>_e(S("editor.js")+"?v="+encodeURIComponent(Ye)+"&retry=0",{signal:v}),onReady:v=>{i.current=v,m(!0)},onError:v=>g(v.message)});return()=>{i.current=null;try{y.dispose()}finally{u.remove()}}},[o,e,t,r]),(0,ne.useEffect)(()=>{c&&r&&s&&i.current?.revealLine(s)},[c,r,s]),(0,ne.useEffect)(()=>{c&&i.current?.options({sideBySide:a,ignoreWhitespace:p,wrap:f})},[c,a,p,f]),{node:d,viewer:i,ready:c,error:w}}function le({comparison:e,identity:t,t:o,single:r=!1,line:s=null}){let[a,p]=(0,Y.useState)(!0),[f,d]=(0,Y.useState)(!1),[i,c]=(0,Y.useState)(!1),[m,w]=(0,Y.useState)(!0),{node:g,viewer:S,ready:u,error:y}=tr({comparison:e,identity:t,enabled:m,single:r,line:s,sideBySide:a,ignoreWhitespace:f,wrap:i});return Y.default.createElement("div",null,Y.default.createElement("button",{"aria-pressed":m,onClick:()=>w(v=>!v)},o(m?"historyBasic":"historyAdvanced")),u&&!r&&Y.default.createElement("div",{key:"controls",style:{display:"flex",flexWrap:"wrap",gap:8}},Y.default.createElement("button",{"aria-pressed":a,onClick:()=>p(v=>!v)},o(a?"side":"inline")),Y.default.createElement("label",null,Y.default.createElement("input",{type:"checkbox",checked:f,onChange:v=>d(v.target.checked)}),o("whitespace")),Y.default.createElement("label",null,Y.default.createElement("input",{type:"checkbox",checked:i,onChange:v=>c(v.target.checked)}),o("wrap")),Y.default.createElement("button",{onClick:()=>S.current?.navigate("previous")},o("previous")),Y.default.createElement("button",{onClick:()=>S.current?.navigate("next")},o("next"))),m&&!u&&!y&&Y.default.createElement("p",{role:"status"},o("loading")),y&&Y.default.createElement("p",{role:"status"},o("fallback")," ",y),Y.default.createElement("div",{key:"editor-host",style:{position:"relative",height:360}},Y.default.createElement("div",{ref:g,style:{position:"absolute",inset:0,visibility:u?"visible":"hidden"},"aria-hidden":!u}),!u&&Y.default.createElement(Be,{comparison:e,labels:ze(o)})))}function vt(e){return A.default.createElement(to,{key:JSON.stringify([e.sessionId,e.repositoryId,e.token,e.snapshot]),...e})}function to({sessionId:e,repositoryId:t,token:o,snapshot:r,rpc:s,t:a,onRediscover:p}){let[f,d]=(0,A.useState)(r),[i,c]=(0,A.useState)(null),[m,w]=(0,A.useState)(null),[g,S]=(0,A.useState)(""),[u,y]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let v=new AbortController;return c(null),w(null),S(""),s("vcs/svn-log",{sessionId:e,repositoryId:t,token:o,snapshot:r,cursor:f,limit:50},v.signal).then(b=>{v.signal.aborted||c(b)}).catch(b=>{v.signal.aborted||(S(b.message),b.code==="vcs/rediscover-required"&&p())}),()=>v.abort()},[f,u]),A.default.createElement("section",null,A.default.createElement("p",null,a("svnHistoryScope")," \xB7 r",r),g?A.default.createElement("p",{role:"alert"},g," ",A.default.createElement("button",{onClick:()=>y(v=>v+1)},a("retry"))):i?A.default.createElement(A.default.Fragment,null,A.default.createElement("ol",null,i.entries.map(v=>A.default.createElement("li",{key:v.revision},A.default.createElement("button",{onClick:()=>w(v.revision)},"r",v.revision," \xB7 ",v.message)))),i.nextRevision!==null&&A.default.createElement("button",{onClick:()=>d(i.nextRevision)},a("historyMore"))):A.default.createElement("p",{role:"status"},a("loading")),m&&A.default.createElement(ro,{key:m,sessionId:e,repositoryId:t,token:o,snapshot:r,rpc:s,t:a,onRediscover:p,revision:m}))}function ro({sessionId:e,repositoryId:t,token:o,snapshot:r,revision:s,rpc:a,t:p,onRediscover:f}){let[d,i]=(0,A.useState)(null),[c,m]=(0,A.useState)(null),[w,g]=(0,A.useState)(""),[S,u]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let y=new AbortController;return i(null),m(null),g(""),a("vcs/svn-detail",{sessionId:e,repositoryId:t,token:o,snapshot:r,revision:s},y.signal).then(v=>{y.signal.aborted||i(v)}).catch(v=>{y.signal.aborted||(g(v.message),v.code==="vcs/rediscover-required"&&f())}),()=>y.abort()},[S]),A.default.createElement("section",null,w?A.default.createElement("p",{role:"alert"},w," ",A.default.createElement("button",{onClick:()=>u(y=>y+1)},p("retry"))):d?A.default.createElement(A.default.Fragment,null,A.default.createElement("p",null,d.message),d.changes.map(y=>A.default.createElement("div",{key:y.id},A.default.createElement("span",null,y.action," ",y.path),y.kind==="file"&&A.default.createElement(A.default.Fragment,null,A.default.createElement("button",{onClick:()=>m({id:y.id,mode:"compare"})},p("svnHistoricalDiff")),A.default.createElement("button",{onClick:()=>m({id:y.id,mode:"trace"})},p("fileHistory")))))):A.default.createElement("p",{role:"status"},p("loading")),c&&A.default.createElement(oo,{key:JSON.stringify(c),sessionId:e,repositoryId:t,token:o,snapshot:r,revision:s,rpc:a,t:p,onRediscover:f,...c}))}function oo({sessionId:e,repositoryId:t,token:o,snapshot:r,revision:s,rpc:a,t:p,onRediscover:f,id:d,mode:i}){let[c,m]=(0,A.useState)(null),[w,g]=(0,A.useState)(null),[S,u]=(0,A.useState)(""),[y,v]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let b=new AbortController;return m(null),u(""),a("vcs/svn-"+i,{sessionId:e,repositoryId:t,token:o,snapshot:r,revision:s,id:d,...w===null?{}:{cursor:w}},b.signal).then(h=>{b.signal.aborted||m(h)}).catch(h=>{b.signal.aborted||(u(h.message),h.code==="vcs/rediscover-required"&&f())}),()=>b.abort()},[w,y]),S?A.default.createElement("p",{role:"alert"},S," ",A.default.createElement("button",{onClick:()=>v(b=>b+1)},p("retry"))):c?i==="compare"?c.binary?A.default.createElement("p",null,p("binary")):A.default.createElement(le,{comparison:c,identity:JSON.stringify([e,t,r,s,d]),t:p}):A.default.createElement("section",null,A.default.createElement("p",null,p("svnTraceScope")," \xB7 ",c.path," \xB7 peg r",c.pegRevision),A.default.createElement("ol",null,c.entries.map(b=>A.default.createElement("li",{key:b.revision},"r",b.revision," \xB7 ",b.message))),c.nextRevision!==null&&A.default.createElement("button",{onClick:()=>g(c.nextRevision)},p("historyMore"))):A.default.createElement("p",{role:"status"},p("loading"))}function gt(e){return Q.default.createElement(so,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function so({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:s}){let[a,p]=(0,Q.useState)(null),[f,d]=(0,Q.useState)(!1),[i,c]=(0,Q.useState)(""),[m,w]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{if(a)return()=>{Promise.resolve().then(()=>o("vcs/svn-revoke",{sessionId:e,repositoryId:t,token:a.token})).catch(()=>{})}},[a,e,t]),(0,Q.useEffect)(()=>{if(a)try{return Ke(a.expiresAt,()=>{p(null),w(0),d(!1),c(r("svnExpired"))})}catch{p(null),c(r("svnExpired"))}},[a]),(0,Q.useEffect)(()=>{if(!m||!a)return;let u=new AbortController;return d(!0),c(""),o("vcs/svn-revoke",{sessionId:e,repositoryId:t,token:a.token},u.signal).then(()=>{u.signal.aborted||p(null)}).catch(y=>{u.signal.aborted||(c(y.message),y.code==="vcs/rediscover-required"&&s())}).finally(()=>{u.signal.aborted||d(!1)}),()=>u.abort()},[m,a]);let g=u=>{try{Rt(u),c(""),w(0),p(u)}catch(y){c(y.message)}},S=async(...u)=>{try{return await o(...u)}catch(y){throw y.code==="vcs/svn-consent-required"&&!u[2]?.aborted&&(p(null),w(0),c(r("svnExpired"))),y}};return Q.default.createElement("section",null,!a&&i&&Q.default.createElement("p",{role:"status"},i),a?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("p",null,r("svnGrantScope")),Q.default.createElement("button",{disabled:f,onClick:()=>w(u=>u+1)},r("svnRevoke")),i&&Q.default.createElement("p",{role:"alert"},i),!f&&Q.default.createElement(vt,{sessionId:e,repositoryId:t,t:r,onRediscover:s,rpc:S,token:a.token,snapshot:a.snapshot})):Q.default.createElement(ht,{sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:s,onApproved:g}))}var C=R(require("react"),1);function rr(e){let t=new Map;for(let o of e){let r=t.get(o.commit);r||(r={names:[],hidden:0},t.set(o.commit,r)),r.names.length<3?r.names.push(o.name):r.hidden++}return t}var T=R(require("react"),1);var B=R(require("react"),1);var V=R(require("react"),1);var U=R(require("react"),1);function bt(e){return U.default.createElement(io,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.path]),...e})}function io({sessionId:e,repositoryId:t,commit:o,path:r,rpc:s,t:a,onRediscover:p}){let[f,d]=(0,U.useState)(!1),[i,c]=(0,U.useState)([0]),[m,w]=(0,U.useState)(null),[g,S]=(0,U.useState)(""),[u,y]=(0,U.useState)(0),v=i.at(-1);(0,U.useEffect)(()=>{if(!f)return;let h=new AbortController;return w(null),S(""),s("vcs/tree-segment",{sessionId:e,repositoryId:t,commit:o,path:r,offset:v},h.signal).then(x=>{h.signal.aborted||w(x)}).catch(x=>{h.signal.aborted||(S(x.message),x.code==="vcs/rediscover-required"&&p())}),()=>h.abort()},[f,v,e,t,o,r,u]);let b=(0,U.useMemo)(()=>m?{path:r,left:{label:o,text:m.text},right:{label:o,text:m.text}}:null,[m,r,o]);return U.default.createElement("section",null,U.default.createElement("button",{"aria-expanded":f,onClick:()=>d(h=>!h)},a("segments")),f&&U.default.createElement(U.default.Fragment,null,U.default.createElement("p",null,a("segmentScope")),g?U.default.createElement("p",{role:"alert"},g," ",U.default.createElement("button",{onClick:()=>y(h=>h+1)},a("retry"))):m?U.default.createElement(U.default.Fragment,null,U.default.createElement("p",null,a("segmentBytes"),": ",m.offset,"\u2013",m.endOffset," / ",m.totalBytes," \xB7 ",U.default.createElement("code",null,m.oid)),U.default.createElement("button",{disabled:i.length===1,onClick:()=>c(h=>h.slice(0,-1))},a("previous")),U.default.createElement("button",{disabled:m.nextOffset===null,onClick:()=>c(h=>[...h,m.nextOffset])},a("next")),U.default.createElement(le,{single:!0,comparison:b,identity:JSON.stringify([e,t,o,r,v]),t:a})):U.default.createElement("p",{role:"status"},a("loading"))))}function Me({sessionId:e,repositoryId:t,commit:o,path:r,rpc:s,t:a,onRediscover:p,onClose:f,line:d=null}){let[i,c]=(0,V.useState)(null),[m,w]=(0,V.useState)(""),[g,S]=(0,V.useState)(0);(0,V.useEffect)(()=>{let y=new AbortController;return c(null),w(""),s("vcs/tree-file",{sessionId:e,repositoryId:t,commit:o,path:r},y.signal).then(v=>{y.signal.aborted||c(v)}).catch(v=>{y.signal.aborted||(w(v.message),v.code==="vcs/rediscover-required"&&p())}),()=>y.abort()},[e,t,o,r,g]);let u=(0,V.useMemo)(()=>i?{path:r,left:{label:o,text:i.text||""},right:{label:o,text:i.text||""}}:null,[i,r,o]);return V.default.createElement("section",{"aria-label":a("treePreview")},V.default.createElement("h4",null,r),V.default.createElement("button",{onClick:f},a("treeClose")),V.default.createElement("p",null,V.default.createElement("code",null,o)),m?V.default.createElement("p",{role:"alert"},m," ",V.default.createElement("button",{onClick:()=>S(y=>y+1)},a("retry"))):i?V.default.createElement(V.default.Fragment,null,V.default.createElement("p",null,V.default.createElement("code",null,i.oid)," \xB7 ",a("encoding"),": ",i.encoding||"\u2014"),d&&V.default.createElement("p",{role:"status"},a("blameOriginLine"),": ",d,!i.text||d>i.text.split(`
96
- `).length?" \xB7 "+a("blameUnmapped"):""),i.notice&&V.default.createElement("p",{role:"status"},i.notice),i.binary?V.default.createElement("p",null,a("binary")):i.text===""?V.default.createElement("p",null,a("treeEmpty")):V.default.createElement(le,{single:!0,line:d,comparison:u,identity:JSON.stringify([e,t,o,r]),t:a})):V.default.createElement("p",{role:"status"},a("loading")),V.default.createElement(bt,{sessionId:e,repositoryId:t,commit:o,path:r,rpc:s,t:a,onRediscover:p}))}function or(e=""){let t=[{path:"",name:"/"}];if(e){let o="";for(let r of e.split("/"))o=o?o+"/"+r:r,t.push({path:o,name:r})}return t}function sr(e,t="",o=""){let r=t?t+"/":"",s=o.toLowerCase();return e.filter(a=>{let p=a.path.slice(r.length);return a.path.startsWith(r)&&p.length>0&&!p.includes("/")&&p.toLowerCase().includes(s)}).sort((a,p)=>+(p.type==="tree")-+(a.type==="tree")||(a.path<p.path?-1:a.path>p.path?1:0))}function no({sessionId:e,repositoryId:t,commit:o,rpc:r,t:s,onRediscover:a}){let[p,f]=(0,B.useState)(null),[d,i]=(0,B.useState)(""),[c,m]=(0,B.useState)(0),[w,g]=(0,B.useState)(""),[S,u]=(0,B.useState)(0),[y,v]=(0,B.useState)(""),[b,h]=(0,B.useState)(null);if((0,B.useEffect)(()=>{let N=new AbortController;return f(null),i(""),r("vcs/tree",{sessionId:e,repositoryId:t,commit:o},N.signal).then(q=>{N.signal.aborted||f(q)}).catch(q=>{N.signal.aborted||(i(q.message),q.code==="vcs/rediscover-required"&&a())}),()=>N.abort()},[e,t,o,c]),d)return B.default.createElement("p",{role:"alert"},d," ",B.default.createElement("button",{onClick:()=>m(N=>N+1)},s("retry")));if(!p)return B.default.createElement("p",{role:"status"},s("loading"));let x=w?w+"/":"",k=sr(p.entries,w,y),O=N=>{g(N),u(0),v(""),h(null)};return B.default.createElement("section",{"aria-label":s("historicalTree")},B.default.createElement("p",null,s("historicalTreeScope")),B.default.createElement("code",null,o),B.default.createElement("p",null,w||"/"," ",w&&B.default.createElement("button",{onClick:()=>O(w.includes("/")?w.slice(0,w.lastIndexOf("/")):"")},s("treeUp"))),B.default.createElement("nav",{"aria-label":s("treeBreadcrumbs")},or(w).map(N=>B.default.createElement(B.default.Fragment,{key:N.path},N.path&&" / ",N.path===w?B.default.createElement("span",{"aria-current":"location"},N.name):B.default.createElement("button",{onClick:()=>O(N.path)},N.name)))),B.default.createElement("label",null,s("treeSearch")," ",B.default.createElement("input",{"aria-label":s("treeSearch"),value:y,onChange:N=>{v(N.target.value),u(0),h(null)}})),B.default.createElement("p",null,k.length," ",s("treeEntries")),!k.length&&y&&B.default.createElement("p",{role:"status"},s("emptySearch")),B.default.createElement("ul",null,k.slice(S*100,S*100+100).map(N=>B.default.createElement("li",{key:N.path},N.type==="tree"?B.default.createElement("button",{onClick:()=>O(N.path)},N.path.slice(x.length),"/"):N.type==="blob"&&["100644","100755"].includes(N.mode)?B.default.createElement("button",{"aria-pressed":b===N.path,onClick:()=>h(N.path)},N.path.slice(x.length)):B.default.createElement("span",null,N.path.slice(x.length))," \xB7 ",B.default.createElement("code",null,N.mode," ",N.type," ",B.default.createElement("span",{title:N.oid},N.oid.slice(0,10)))))),S>0&&B.default.createElement("button",{onClick:()=>{u(N=>N-1),h(null)}},s("treePrevious")),(S+1)*100<k.length&&B.default.createElement("button",{onClick:()=>{u(N=>N+1),h(null)}},s("treeNext")),b&&B.default.createElement(Me,{key:JSON.stringify([e,t,o,b]),sessionId:e,repositoryId:t,commit:o,rpc:r,t:s,onRediscover:a,path:b,onClose:()=>h(null)}))}function yt(e){return B.default.createElement(ao,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function ao(e){let[t,o]=(0,B.useState)(!1);return B.default.createElement("div",null,B.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("historicalTree")),t&&B.default.createElement(no,{...e}))}var $=R(require("react"),1);var F=R(require("react"),1);function lo({sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:s,follow:a,rpc:p,t:f,onRediscover:d,onSelectCommit:i}){let[c,m]=(0,F.useState)({commits:[],nextOffset:null}),[w,g]=(0,F.useState)(0),[S,u]=(0,F.useState)(0),[y,v]=(0,F.useState)(!0),[b,h]=(0,F.useState)("");return(0,F.useEffect)(()=>{let x=new AbortController;return v(!0),h(""),p("vcs/file-history",{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:s,offset:w,limit:50,follow:a},x.signal).then(k=>{x.signal.aborted||m(O=>({...k,commits:w?[...O.commits,...k.commits]:k.commits}))}).catch(k=>{x.signal.aborted||(h(k.message),k.code==="vcs/rediscover-required"&&d())}).finally(()=>{x.signal.aborted||v(!1)}),()=>x.abort()},[e,t,o,r,s,w,S]),F.default.createElement("section",{"aria-label":f("fileHistory"),"aria-busy":y},F.default.createElement("p",null,f("fileHistoryScope")),F.default.createElement("p",{style:{overflowWrap:"anywhere"}},c.path," \xB7 ",F.default.createElement("code",null,o)),F.default.createElement("ol",null,c.commits.map(x=>F.default.createElement("li",{key:x.id},F.default.createElement("code",{title:x.id},x.id.slice(0,10))," \xB7 ",i?F.default.createElement("button",{onClick:()=>i(x.id,x.path||c.path)},x.subject):x.subject,F.default.createElement("div",null,x.boundary&&F.default.createElement("span",null,f(x.boundary==="merge-first-parent"?"fileHistoryMergeBoundary":"fileHistoryBoundary")," "),x.path&&F.default.createElement("code",null,x.oldPath?x.oldPath+" \u2192 ":"",x.path)," ",x.author," \xB7 ",F.default.createElement("time",{dateTime:x.date},x.date))))),y&&F.default.createElement("p",{role:"status"},f("loading")),b&&F.default.createElement("p",{role:"alert"},b," ",F.default.createElement("button",{onClick:()=>u(x=>x+1)},f("retry"))),!y&&!b&&!c.commits.length&&F.default.createElement("p",null,f("historyEmpty")),c.truncated&&F.default.createElement("p",{role:"status"},f("historyLimit")),!b&&c.nextOffset!==null&&F.default.createElement("button",{disabled:y,onClick:()=>g(c.nextOffset)},f("historyMore")))}function xt(e){return F.default.createElement(co,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.parentIndex,e.id]),...e})}function co(e){let[t,o]=(0,F.useState)(!1),[r,s]=(0,F.useState)(!1);return F.default.createElement("div",null,F.default.createElement("button",{"aria-expanded":t,onClick:()=>o(a=>!a)},e.t("fileHistory")),t&&F.default.createElement(F.default.Fragment,null,F.default.createElement("label",null,F.default.createElement("input",{type:"checkbox",checked:r,onChange:a=>s(a.target.checked)}),e.t("fileHistoryFollow")),F.default.createElement("p",null,e.t("fileHistoryFollowScope")),F.default.createElement(lo,{key:String(r),follow:r,...e})))}var D=R(require("react"),1);function po({sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:s,rpc:a,t:p,onRediscover:f,onSelectCommit:d}){let[i,c]=(0,D.useState)(null),[m,w]=(0,D.useState)(""),[g,S]=(0,D.useState)(0),[u,y]=(0,D.useState)(1),[v,b]=(0,D.useState)(null);return(0,D.useEffect)(()=>{let h=new AbortController;return c(null),w(""),b(null),a("vcs/blame",{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:s,startLine:u,lineLimit:500},h.signal).then(x=>{h.signal.aborted||c(x)}).catch(x=>{h.signal.aborted||(w(x.message),x.code==="vcs/rediscover-required"&&f())}),()=>h.abort()},[e,t,o,r,s,g,u]),m?D.default.createElement("p",{role:"alert"},m," ",D.default.createElement("button",{onClick:()=>S(h=>h+1)},p("retry"))):i?D.default.createElement("section",{"aria-label":p("blame")},D.default.createElement("p",null,p("blameScope")),d&&D.default.createElement("p",null,p("blameNavigation")),i.notice&&D.default.createElement("p",{role:"status"},i.notice),i.truncated&&D.default.createElement("p",{role:"status"},p("blameLimit")),!i.notice&&!i.lines.length&&D.default.createElement("p",null,p("blameEmpty")),!!i.lines.length&&D.default.createElement("div",{style:{overflow:"auto",maxHeight:480}},D.default.createElement("table",null,D.default.createElement("thead",null,D.default.createElement("tr",null,["blameLine","blameCommit","blameAuthor","blameSummary","blameSource"].map(h=>D.default.createElement("th",{key:h,scope:"col"},p(h))))),D.default.createElement("tbody",null,i.lines.map(h=>D.default.createElement("tr",{key:h.line},D.default.createElement("th",{scope:"row"},h.line),D.default.createElement("td",null,d?D.default.createElement("button",{title:h.commit,onClick:()=>d(h.commit)},D.default.createElement("code",null,h.commit.slice(0,10))):D.default.createElement("code",{title:h.commit},h.commit.slice(0,10))),D.default.createElement("td",null,h.author),D.default.createElement("td",null,h.summary),D.default.createElement("td",null,D.default.createElement("pre",{style:{margin:0}},h.text),h.path&&h.originalLine?D.default.createElement("button",{onClick:()=>b(h)},p("blameOriginLine"),": ",h.path,":",h.originalLine):D.default.createElement("span",null,p("blameUnmapped")))))))),D.default.createElement("p",null,i.startLine||u,"\u2013",i.lines.at(-1)?.line||u," / ",i.totalLines??"\u2014"),D.default.createElement("button",{disabled:u===1,onClick:()=>y(Math.max(1,u-500))},p("blamePrevious")),D.default.createElement("button",{disabled:i.nextLine==null,onClick:()=>y(i.nextLine)},p("blameNext")),v&&D.default.createElement(Me,{key:JSON.stringify([v.commit,v.path,v.originalLine]),sessionId:e,repositoryId:t,commit:v.commit,path:v.path,line:v.originalLine,rpc:a,t:p,onRediscover:f,onClose:()=>b(null)})):D.default.createElement("p",{role:"status"},p("loading"))}function wt(e){let[t,o]=(0,D.useState)(!1);return D.default.createElement("div",null,D.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("blame")),t&&D.default.createElement(po,{...e}))}function Te({sessionId:e,repositoryId:t,commit:o,parentIndex:r,base:s,target:a,id:p,rpc:f,t:d,onRediscover:i,onSelectCommit:c}){let[m,w]=(0,$.useState)(null),[g,S]=(0,$.useState)(""),[u,y]=(0,$.useState)(0);return(0,$.useEffect)(()=>{let v=new AbortController;return w(null),S(""),f(s?"vcs/revision-compare":"vcs/commit-compare",s?{sessionId:e,repositoryId:t,base:s,target:a,id:p}:{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p},v.signal).then(b=>{v.signal.aborted||w(b)}).catch(b=>{v.signal.aborted||(S(b.message),b.code==="vcs/rediscover-required"&&i())}),()=>v.abort()},[e,t,o,r,s,a,p,u]),g?$.default.createElement("p",{role:"alert"},g," ",$.default.createElement("button",{onClick:()=>y(v=>v+1)},d("retry"))):m?$.default.createElement("section",null,$.default.createElement("h4",null,m.path),$.default.createElement("p",null,m.left.label," \u2194 ",m.right.label),m.notice&&$.default.createElement("p",{role:"status"},m.notice),m.binary?$.default.createElement("p",null,d("binary")):$.default.createElement(le,{comparison:m,identity:JSON.stringify(s?[e,t,s,a,p]:[e,t,o,r,p]),t:d}),o&&!s&&$.default.createElement(xt,{onSelectCommit:c,key:"file-history:"+JSON.stringify([e,t,o,r,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p,rpc:f,t:d,onRediscover:i}),o&&!s&&$.default.createElement(wt,{onSelectCommit:c,key:"blame:"+JSON.stringify([e,t,o,r,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p,rpc:f,t:d,onRediscover:i}),(o||s)&&$.default.createElement(Fe,{key:"image:"+JSON.stringify([e,t,o,r,s,a,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,base:s,target:a,id:p,rpc:f,t:d,onRediscover:i})):$.default.createElement("p",{role:"status"},d("loading"))}function ir(e,t){if(typeof t!="string"||!t)return null;let o=e.filter(r=>r.path===t);return o.length===1&&typeof o[0].id=="string"&&o[0].id?o[0].id:null}function nr(e,t=""){let o=t.trim().toLowerCase();return o?e.filter(r=>[r.id,r.author,r.subject].some(s=>s?.toLowerCase().includes(o))):e}function Qe(e,t=""){let o=t.trim().toLowerCase();return o?e.filter(r=>[r.path,r.oldPath].some(s=>s?.toLowerCase().includes(o))):e}function St(e){return T.default.createElement(uo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function uo({sessionId:e,repositoryId:t,commit:o,rpc:r,t:s,onRediscover:a,onSelectCommit:p,initialPath:f}){let d=(0,T.useRef)(!0),[i,c]=(0,T.useState)(null),[m,w]=(0,T.useState)(""),[g,S]=(0,T.useState)(0),[u,y]=(0,T.useState)(null),[v,b]=(0,T.useState)(""),[h,x]=(0,T.useState)(0);if((0,T.useEffect)(()=>{let O=new AbortController;return y(null),b(""),r("vcs/commit",{sessionId:e,repositoryId:t,commit:o,parentIndex:g},O.signal).then(N=>{O.signal.aborted||(y(N),d.current&&(d.current=!1,c(ir(N.changes,f))))}).catch(N=>{O.signal.aborted||(b(N.message),N.code==="vcs/rediscover-required"&&a())}),()=>O.abort()},[e,t,o,g,h]),v)return T.default.createElement("p",{role:"alert"},v," ",T.default.createElement("button",{onClick:()=>x(O=>O+1)},s("retry")));if(!u)return T.default.createElement("p",{role:"status"},s("loading"));let k=Qe(u.changes,m);return T.default.createElement("section",{"aria-label":s("commitDetails")},T.default.createElement("h3",null,u.subject),T.default.createElement("code",null,u.id),T.default.createElement("p",null,u.author," \xB7 ",u.date),u.messageTruncated&&T.default.createElement("p",{role:"status"},s("commitMessageLimit")),u.message&&T.default.createElement("pre",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",maxHeight:240,overflow:"auto"}},u.message),u.parents.length>1&&T.default.createElement("label",null,s("commitParent")," ",T.default.createElement("select",{"aria-label":s("commitParent"),value:g,onChange:O=>{c(null),y(null),S(Number(O.target.value))}},u.parents.map((O,N)=>T.default.createElement("option",{key:O,value:N},N+1,": ",O.slice(0,10))))),T.default.createElement("p",null,u.parent||s("commitRoot")," \u2192 ",u.id.slice(0,10)),T.default.createElement("label",null,s("commitFileSearch")," ",T.default.createElement("input",{"aria-label":s("commitFileSearch"),value:m,onChange:O=>{w(O.target.value),c(null)}})),T.default.createElement("span",null," ",k.length," / ",u.changes.length),T.default.createElement("ul",null,k.map(O=>T.default.createElement("li",{key:O.id},T.default.createElement("button",{"aria-pressed":i===O.id,onClick:()=>c(O.id)},O.status," \xB7 ",O.oldPath?O.oldPath+" \u2192 ":"",O.path)))),!!u.changes.length&&!k.length&&T.default.createElement("p",{role:"status"},s("emptySearch")),!u.changes.length&&T.default.createElement("p",null,s("commitNoChanges")),i&&T.default.createElement(Te,{key:i,sessionId:e,repositoryId:t,commit:o,parentIndex:g,id:i,onSelectCommit:p,rpc:r,t:s,onRediscover:a}),T.default.createElement(yt,{key:JSON.stringify([e,t,o]),sessionId:e,repositoryId:t,commit:o,rpc:r,t:s,onRediscover:a}))}var z=R(require("react"),1);function ar(e){if(!Array.isArray(e))throw new Error("Invalid graph commits");let t=e.slice(0,200),o=new Map,r=[],s=[],a=f=>typeof f=="string"&&/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(f);for(let[f,d]of t.entries()){if(!d||!a(d.id)||!Array.isArray(d.parents)||o.has(d.id))throw new Error("Invalid graph node");o.set(d.id,f),r.push({id:d.id,row:f})}let p=!1;for(let f of t){let d=new Set;for(let i of f.parents){if(s.length===1e3){p=!0;break}if(!a(i)||i.length!==f.id.length||i===f.id||d.has(i))throw new Error("Invalid graph parent");d.add(i);let c=o.get(i);if(c!==void 0&&c<=o.get(f.id))throw new Error("Graph requires child-before-parent order");s.push({from:f.id,to:i,missing:c===void 0})}if(p)break}return{nodes:r,edges:s,nodesTruncated:e.length>200,edgesTruncated:p}}function lr(e){let t=Array(32).fill(null),o=new Map,r=[],s=new Set,a=!1,p=i=>{if(s.has(i))return null;let c=t.indexOf(i);return c>=0?c:(c=t.indexOf(null),c<0?(a=!0,s.add(i),null):(t[c]=i,c))},f=new Map;for(let i of e.edges){if(i.missing)continue;let c=f.get(i.from)||[];c.push(i.to),f.set(i.from,c)}for(let i of e.nodes){let c=p(i.id);if(o.set(i.id,{...i,lane:c}),r.push({...i,lane:c}),c===null)continue;t[c]=null;let m=f.get(i.id)||[];for(let[w,g]of m.entries())t.includes(g)||(w===0&&t[c]===null?t[c]=g:p(g))}let d=e.edges.filter(i=>!i.missing).flatMap(i=>{let c=o.get(i.from),m=o.get(i.to);return c.lane===null||m.lane===null?[]:[{...i,start:c.row,end:m.row,fromLane:c.lane,toLane:m.lane}]});return{nodes:r,edges:d,lanesTruncated:a,laneCount:Math.max(1,...r.map(i=>(i.lane??0)+1))}}function fo({commits:e,selected:t,onSelect:o,t:r}){let s;try{s=ar(e)}catch{return z.default.createElement("p",{role:"alert"},r("graphInvalid"))}let a=lr(s),p=a.edges,f=Math.max(100,24+18*a.laneCount),d=Math.max(40,s.nodes.length*36);return z.default.createElement("section",{"aria-label":r("historyGraph")},z.default.createElement("p",null,r("graphScope")),a.lanesTruncated&&z.default.createElement("p",{role:"status"},r("graphLaneLimit")),(s.nodesTruncated||s.edgesTruncated)&&z.default.createElement("p",{role:"status"},r("graphLimit")),z.default.createElement("div",{style:{maxHeight:480,overflow:"auto",display:"flex"}},z.default.createElement("svg",{width:f,height:d,"aria-hidden":"true",style:{flexShrink:0}},p.map(i=>{let c=i.start*36+18,m=i.end*36+18,w=12+i.fromLane*18,g=12+i.toLane*18;return z.default.createElement("path",{key:i.from+i.to,d:"M "+w+" "+c+" C "+w+" "+(c+18)+", "+g+" "+(m-18)+", "+g+" "+m,fill:"none",stroke:"currentColor",opacity:"0.45"})}),a.nodes.filter(i=>i.lane!==null).map(i=>z.default.createElement("circle",{key:i.id,cx:12+i.lane*18,cy:i.row*36+18,r:"4",fill:"currentColor"}))),z.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},s.nodes.map(i=>z.default.createElement("li",{key:i.id,style:{height:36,whiteSpace:"nowrap"}},z.default.createElement("button",{title:i.id,"aria-current":t===i.id?!0:void 0,style:t===i.id?{fontWeight:700,textDecoration:"underline"}:void 0,onKeyDown:c=>{if(c.altKey||c.ctrlKey||c.metaKey||c.shiftKey)return;let m=c.key==="ArrowDown"?Math.min(i.row+1,s.nodes.length-1):c.key==="ArrowUp"?Math.max(0,i.row-1):c.key==="Home"?0:c.key==="End"?s.nodes.length-1:null;m!==null&&(c.preventDefault(),c.stopPropagation(),c.currentTarget.closest("ol").querySelectorAll("button")[m]?.focus())},onClick:()=>o(i.id)},z.default.createElement("code",null,i.id.slice(0,10))," ",e[i.row].subject))))),z.default.createElement("details",null,z.default.createElement("summary",null,r("graphRelations")),z.default.createElement("ul",null,s.edges.map(i=>z.default.createElement("li",{key:i.from+i.to},z.default.createElement("code",null,i.from)," \u2192 ",z.default.createElement("code",null,i.to),i.missing?" \xB7 "+r("graphMissing"):"")))))}function kt(e){let[t,o]=(0,z.useState)(!1);return z.default.createElement("div",null,z.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("historyGraph")),t&&z.default.createElement(fo,{...e}))}var P=R(require("react"),1);function mo({sessionId:e,repositoryId:t,base:o,target:r,rpc:s,t:a,onRediscover:p}){let[f,d]=(0,P.useState)(null),[i,c]=(0,P.useState)(""),[m,w]=(0,P.useState)(0),[g,S]=(0,P.useState)(null),[u,y]=(0,P.useState)("");if((0,P.useEffect)(()=>{let b=new AbortController;return d(null),c(""),S(null),s("vcs/revision-changes",{sessionId:e,repositoryId:t,base:o,target:r},b.signal).then(h=>{b.signal.aborted||d(h)}).catch(h=>{b.signal.aborted||(c(h.message),h.code==="vcs/rediscover-required"&&p())}),()=>b.abort()},[e,t,o,r,m]),i)return P.default.createElement("p",{role:"alert"},i," ",P.default.createElement("button",{onClick:()=>w(b=>b+1)},a("retry")));if(!f)return P.default.createElement("p",{role:"status"},a("loading"));let v=Qe(f.changes,u);return P.default.createElement("div",null,P.default.createElement("label",null,a("commitFileSearch")," ",P.default.createElement("input",{"aria-label":a("commitFileSearch"),value:u,onChange:b=>{y(b.target.value),S(null)}})),P.default.createElement("span",null," ",v.length," / ",f.changes.length),!!f.changes.length&&!v.length&&P.default.createElement("p",{role:"status"},a("emptySearch")),!f.changes.length&&P.default.createElement("p",null,a("revisionEmpty")),P.default.createElement("ul",null,v.map(b=>P.default.createElement("li",{key:b.id},P.default.createElement("button",{"aria-pressed":g===b.id,onClick:()=>S(b.id)},b.status," \xB7 ",b.oldPath?b.oldPath+" \u2192 ":"",b.path)))),g&&P.default.createElement(Te,{key:g,sessionId:e,repositoryId:t,base:o,target:r,id:g,rpc:s,t:a,onRediscover:p}))}function Ct(e){return P.default.createElement(ho,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function ho({commits:e,sessionId:t,repositoryId:o,rpc:r,t:s,onRediscover:a,onReferencesLoaded:p}){let[f,d]=(0,P.useState)(""),[i,c]=(0,P.useState)(""),[m,w]=(0,P.useState)([]),[g,S]=(0,P.useState)(!1),[u,y]=(0,P.useState)(0),[v,b]=(0,P.useState)(!1),[h,x]=(0,P.useState)("");return(0,P.useEffect)(()=>{if(!u)return;let k=new AbortController;return b(!0),x(""),r("vcs/references",{sessionId:t,repositoryId:o},k.signal).then(O=>{k.signal.aborted||(w(O.references),S(!0),p?.(O.references))}).catch(O=>{k.signal.aborted||(x(O.message),O.code==="vcs/rediscover-required"&&a())}).finally(()=>{k.signal.aborted||b(!1)}),()=>k.abort()},[t,o,u]),P.default.createElement("section",{"aria-label":s("revisionTitle")},P.default.createElement("h3",null,s("revisionTitle")),P.default.createElement("p",null,s("revisionScope")),P.default.createElement("button",{disabled:v,onClick:()=>y(k=>k+1)},s("revisionLoadRefs")),P.default.createElement("p",null,s("revisionRefsScope")),g&&!v&&!h&&P.default.createElement("p",{role:"status"},m.length?`${s("revisionRefsCount")}: ${m.length}`:s("revisionRefsEmpty")),v&&P.default.createElement("p",{role:"status"},s("loading")),h&&P.default.createElement("p",{role:"alert"},h),[[f,d,"revisionBase"],[i,c,"revisionTarget"]].map(([k,O,N])=>P.default.createElement("label",{key:N},s(N)," ",P.default.createElement("select",{"aria-label":s(N),value:k,onChange:q=>O(q.target.value)},P.default.createElement("option",{value:""},"\u2014"),!!e.length&&P.default.createElement("optgroup",{label:s("revisionLoadedCommits")},e.map(q=>P.default.createElement("option",{key:q.id,value:q.id},q.id.slice(0,10)," \xB7 ",q.subject))),!!m.length&&P.default.createElement("optgroup",{label:s("revisionLocalRefs")},m.map(q=>P.default.createElement("option",{key:q.name,value:q.commit},q.name," \xB7 ",q.commit.slice(0,10)))),k&&!e.some(q=>q.id===k)&&!m.some(q=>q.commit===k)&&P.default.createElement("option",{value:k},k)))),P.default.createElement("button",{disabled:!f||!i,onClick:()=>{d(i),c(f)}},s("revisionSwap")),P.default.createElement("p",{style:{overflowWrap:"anywhere"}},P.default.createElement("code",null,f||"\u2014")," \u2192 ",P.default.createElement("code",null,i||"\u2014")),f&&i&&P.default.createElement(mo,{key:JSON.stringify([t,o,f,i]),sessionId:t,repositoryId:o,base:f,target:i,rpc:r,t:s,onRediscover:a}))}function dr(e,t,o){let r=o?[...e.commits.filter(s=>!t.commits.some(a=>a.id===s.id)),...t.commits]:t.commits;return{...t,windowEnd:o+t.commits.length,commits:r.slice(-200)}}function Et(e){return C.default.createElement(vo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function vo({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:s}){let[a,p]=(0,C.useState)({id:null,path:null,revision:0}),[f,d]=(0,C.useState)(""),[i,c]=(0,C.useState)(null),[m,w]=(0,C.useState)(""),[g,S]=(0,C.useState)(""),u=L=>{let Z=(i||[]).find(ee=>JSON.stringify([ee.name,ee.commit])===L)?.commit||"";S(L),w(Z),h(ee=>ee?{...ee,snapshot:Z||null}:null),de(0),d(""),q(null),ve({commits:[],snapshot:null,nextOffset:null})},[y,v]=(0,C.useState)({message:"",author:"",path:""}),[b,h]=(0,C.useState)(null),x=L=>{h({values:L,snapshot:K.snapshot}),de(0),d(""),q(null),ve(_=>({..._,commits:[],nextOffset:null}))},k=(0,C.useMemo)(()=>rr(i||[]),[i]),O=a.id,N=(L,_=null)=>p(Z=>({id:L,path:_,revision:Z.revision+1})),q=(L,_=null)=>p(Z=>({id:L,path:_,revision:Z.revision+(_||Z.path?1:0)})),[K,ve]=(0,C.useState)({commits:[],snapshot:null,nextOffset:null}),[J,de]=(0,C.useState)(0),[H,ce]=(0,C.useState)(0),[re,Ce]=(0,C.useState)(!0),[ge,Ee]=(0,C.useState)("");(0,C.useEffect)(()=>{let L=new AbortController;return Ce(!0),Ee(""),o("vcs/history",{sessionId:e,repositoryId:t,offset:J,limit:50,...b?{search:b.values}:{},...b?.snapshot||m||J?{snapshot:b?.snapshot||m||K.snapshot}:{}},L.signal).then(_=>{L.signal.aborted||(ve(Z=>dr(Z,_,J)),J>=200&&(q(null),d("")))}).catch(_=>{L.signal.aborted||(Ee(_.message),_.code==="vcs/rediscover-required"&&s())}).finally(()=>{L.signal.aborted||Ce(!1)}),()=>L.abort()},[e,t,J,H,b,m]);let se=nr(K.commits,f);return C.default.createElement("section",{className:"vcs-history","aria-label":r("history"),"aria-busy":re},C.default.createElement("div",{className:"vcs-history-list"},C.default.createElement("p",null,r("historyListOnly")),i!==null&&C.default.createElement("p",null,r("historyRefsScope")),C.default.createElement("label",null,r("historyBranch")," ",C.default.createElement("select",{"aria-label":r("historyBranch"),value:g,disabled:re,onChange:L=>u(L.target.value)},C.default.createElement("option",{value:""},"HEAD"),g&&!(i||[]).some(L=>JSON.stringify([L.name,L.commit])===g)&&C.default.createElement("option",{value:g},JSON.parse(g)[0]," \xB7 ",m.slice(0,10)," \xB7 ",r("historyPinned")),(i||[]).map(L=>{let _=JSON.stringify([L.name,L.commit]);return C.default.createElement("option",{key:_,value:_},L.name," \xB7 ",L.commit.slice(0,10))}))),C.default.createElement("p",null,r("historyBranchScope"),m&&C.default.createElement(C.default.Fragment,null," \xB7 ",C.default.createElement("code",null,m))),C.default.createElement("form",{"aria-label":r("historyServerSearch"),onSubmit:L=>{L.preventDefault(),x({...y})}},C.default.createElement("fieldset",{disabled:re},C.default.createElement("legend",null,r("historyServerSearch")),C.default.createElement("p",null,r("historyServerScope")),["message","author","path"].map(L=>C.default.createElement("label",{key:L},r("historyServer_"+L)," ",C.default.createElement("input",{maxLength:1024,"aria-label":r("historyServer_"+L),value:y[L],onChange:_=>v(Z=>({...Z,[L]:_.target.value}))}))),C.default.createElement("button",{type:"submit"},r("historyServerApply")),C.default.createElement("button",{type:"button",onClick:()=>{v({message:"",author:"",path:""}),x({})}},r("historyServerClear")))),b&&C.default.createElement("p",{role:"status"},r("historyServerActive"),": ",JSON.stringify(b.values)," \xB7 ",C.default.createElement("code",null,b.snapshot||K.snapshot)),C.default.createElement("label",null,r("historySearch")," ",C.default.createElement("input",{"aria-label":r("historySearch"),value:f,onChange:L=>{d(L.target.value),q(null)}})),C.default.createElement("span",null," ",se.length," / ",K.commits.length),!!K.commits.length&&C.default.createElement("p",{role:"status"},r("historyWindow"),": ",Math.max(0,(K.windowEnd??K.commits.length)-K.commits.length),"\u2013",K.windowEnd??K.commits.length," \xB7 ",r("historyWindowScope")),!!K.commits.length&&!se.length&&C.default.createElement("p",{role:"status"},r("historyNoMatch")),C.default.createElement("ol",null,se.map(L=>C.default.createElement("li",{key:L.id},C.default.createElement("button",{"aria-pressed":O===L.id,onClick:()=>q(L.id)},L.subject),C.default.createElement("div",null,C.default.createElement("code",{title:L.id},L.id.slice(0,10))," \xB7 ",L.author," \xB7 ",C.default.createElement("time",{dateTime:L.date},L.date)),k.has(L.id)&&C.default.createElement("div",{"aria-label":r("historyRefsLabel"),style:{overflowWrap:"anywhere"}},k.get(L.id).names.map(_=>C.default.createElement("span",{key:_},C.default.createElement("code",null,_)," ")),k.get(L.id).hidden>0&&C.default.createElement("span",null,r("historyRefsMore"),": ",k.get(L.id).hidden))))),re&&C.default.createElement("p",{role:"status"},r("loading")),ge&&C.default.createElement("p",{role:"alert"},ge," ",C.default.createElement("button",{onClick:()=>ce(L=>L+1)},r("retry"))),!re&&!ge&&!K.commits.length&&C.default.createElement("p",null,r("historyEmpty")),K.truncated&&C.default.createElement("p",{role:"status"},r("historyLimit")),!ge&&K.nextOffset!==null&&C.default.createElement("button",{disabled:re,onClick:()=>de(K.nextOffset)},r("historyMore")),!!K.commits.length&&C.default.createElement(kt,{commits:K.commits,selected:O,onSelect:q,t:r}),C.default.createElement(Ct,{onReferencesLoaded:c,commits:K.commits,sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:s})),C.default.createElement("div",{className:"vcs-history-details"},O&&C.default.createElement(St,{key:JSON.stringify([O,a.revision]),initialPath:a.path,sessionId:e,repositoryId:t,commit:O,onSelectCommit:N,rpc:o,t:r,onRediscover:s})))}var cr={zh:{svnOfferExpired:"\u7F51\u7EDC\u8BBF\u95EE\u63D0\u6848\u5DF2\u8FC7\u671F\uFF1B\u8BF7\u624B\u52A8\u91CD\u8BD5\uFF0C\u5E76\u91CD\u65B0\u52FE\u9009\u540C\u610F\u3002",svnExpired:"SVN \u7F51\u7EDC\u6388\u6743\u5DF2\u8FC7\u671F\uFF0C\u5386\u53F2\u8BF7\u6C42\u5DF2\u505C\u6B62\uFF1B\u8BF7\u91CD\u65B0\u5BA1\u9605\u5E76\u540C\u610F\u3002",svnConsentReview:"\u5BA1\u9605 SVN \u7F51\u7EDC\u8BBF\u95EE\u8303\u56F4",svnConsentScope:"\u540C\u610F\u524D\u4EC5\u8BFB\u53D6\u672C\u5730\u8EAB\u4EFD\u3002\u6388\u6743\u53EA\u9002\u7528\u4E8E\u6240\u5217\u4ED3\u5E93\u3001Session \u4E0E\u76EE\u5F55\uFF0C\u4E94\u5206\u949F\u6709\u6548\uFF1B\u4E0D\u6388\u6743\u91CD\u5B9A\u5411\u6216\u5199\u64CD\u4F5C\u3002",svnConsentExplicit:"\u6211\u540C\u610F\u8BBF\u95EE\u4EE5\u4E0A HTTPS SVN \u4ED3\u5E93",svnConsentApprove:"\u540C\u610F\u5E76\u8BFB\u53D6\u5386\u53F2",svnHistoryScope:"\u56FA\u5B9A\u672C\u5730 revision \u5FEB\u7167\u7684 SVN \u5386\u53F2\uFF1B\u5206\u9875\u66FF\u6362\u663E\u793A",svnHistoricalDiff:"\u5386\u53F2\u53EA\u8BFB Diff",svnTraceScope:"\u6587\u4EF6\u8FFD\u6EAF\u5728\u590D\u5236\u8FB9\u754C\u505C\u6B62\uFF0C\u4E0D\u8DDF\u968F\u8303\u56F4\u5916\u6765\u6E90",svnGrantScope:"\u7F51\u7EDC\u6388\u6743\u4E94\u5206\u949F\u6709\u6548\uFF1B\u53EF\u968F\u65F6\u64A4\u9500\uFF0C\u5386\u53F2\u64CD\u4F5C\u4E0D\u4FEE\u6539\u5DE5\u4F5C\u526F\u672C\u3002",svnRevoke:"\u64A4\u9500 SVN \u7F51\u7EDC\u6388\u6743",svnIdentity:"\u67E5\u770B SVN \u672C\u5730\u5386\u53F2\u8BBF\u95EE\u8EAB\u4EFD",svnOfflineIdentity:"\u4EC5\u4ECE\u6388\u6743\u5DE5\u4F5C\u526F\u672C\u8BFB\u53D6\u672C\u5730\u5143\u6570\u636E\uFF0C\u4E0D\u53D1\u8D77\u8FDC\u7A0B\u8BF7\u6C42\u3002",svnRemoteDisabled:"\u8FDC\u7A0B SVN \u5386\u53F2\u4F20\u8F93\u5C1A\u672A\u542F\u7528\uFF1B\u6CA1\u6709\u7F51\u7EDC\u6388\u6743\u6216\u53EF\u7528\u8BBF\u95EE\u51ED\u636E\u3002\u672C\u9875\u4E0D\u662F\u5DF2\u6388\u6743\u5386\u53F2\u5165\u53E3\u3002",historyWindow:"\u5DF2\u52A0\u8F7D\u5386\u53F2\u7A97\u53E3\uFF08\u5E8F\u53F7\u5DE6\u95ED\u53F3\u5F00\uFF09",historyWindowScope:"\u5217\u8868\u53CA\u56FE\u6700\u591A\u4FDD\u7559200\u6761\uFF1B\u7EE7\u7EED\u52A0\u8F7D\u66FF\u6362\u8F83\u65B0\u884C\uFF0C\u8DE8\u7A97\u53E3\u8FB9\u4E0D\u8868\u793A\u5B8C\u6574\u56FE\u3002\u5C40\u90E8\u7B5B\u9009\u4EC5\u5F53\u524D\u7A97\u53E3\u3002",segments:"\u5206\u6BB5\u6D4F\u89C8\u5386\u53F2\u6B63\u6587",segmentBytes:"\u5B57\u8282\u8303\u56F4\uFF08\u5DE6\u95ED\u53F3\u5F00\uFF09",segmentScope:"\u4EC5\u56FA\u5B9A\u5386\u53F2 UTF-8 \u666E\u901A\u6587\u4EF6\uFF0C\u6700\u5927 16 MiB\uFF1B\u6BCF\u7247\u6700\u591A 64 KiB\uFF0C\u66FF\u6362\u663E\u793A\u4E0D\u7D2F\u79EF\u3002\u7247\u6BB5\u884C\u53F7\u4E0D\u662F\u539F\u6587\u4EF6\u884C\u53F7\uFF0C\u4E0D\u662F\u5168\u6587\u4EF6 Diff\u3002",blameOriginLine:"\u67E5\u770B\u6765\u6E90\u5386\u53F2\u884C",blameUnmapped:"\u65E0\u6CD5\u7CBE\u786E\u5B9A\u4F4D\u6765\u6E90\u884C",blamePrevious:"\u4E0A\u4E00\u884C\u9875",blameNext:"\u4E0B\u4E00\u884C\u9875",fileHistoryMergeBoundary:"\u8EAB\u4EFD\u8FB9\u754C\uFF1A\u5408\u5E76\u63D0\u4EA4\uFF0C\u6B64\u5904\u505C\u6B62\uFF0C\u4E0D\u63A8\u65AD\u591A\u7236\u6765\u6E90",fileHistoryBoundary:"\u8EAB\u4EFD\u8FB9\u754C\uFF1A\u590D\u5236\u6216\u975E\u7CBE\u786E\u91CD\u547D\u540D\uFF0C\u6B64\u5904\u505C\u6B62",fileHistoryFollow:"\u8DDF\u968F\u5185\u5BB9\u76F8\u540C\u7684\u91CD\u547D\u540D\uFF08\u7B2C\u4E00\u7236\u94FE\uFF09",fileHistoryFollowScope:"\u4EC5\u8DDF\u968FGit\u68C0\u51FA\u7684100%\u91CD\u547D\u540D\uFF1B\u4E0D\u63A8\u65AD\u76F8\u4F3C\u5185\u5BB9\u3001\u590D\u5236\u6216\u5408\u5E76\u591A\u7236\u6765\u6E90\u3002\u65B0\u589E\u6587\u4EF6\u5904\u505C\u6B62\uFF0C\u53D7\u8F93\u51FA/\u65F6\u95F4\u9650\u5236\uFF1B\u6BCF\u6761\u8BB0\u5F55\u6309\u5F53\u65F6\u8DEF\u5F84\u5B9A\u4F4D\u3002",graphLaneLimit:"\u6CF3\u9053\u6700\u591A32\u6761\uFF1B\u8D85\u51FA\u90E8\u5206\u7701\u7565\u56FE\u5F62\uFF0C\u5B8C\u6574\u5DF2\u52A0\u8F7D\u8282\u70B9\u4E0E\u5173\u7CFB\u4ECD\u53EF\u5728\u6587\u5B57\u4E2D\u67E5\u770B\u3002",historyBranch:"\u5386\u53F2\u8D77\u70B9\uFF08\u672C\u5730\u5F15\u7528\uFF09",historyPinned:"\u56FA\u5B9A\u5FEB\u7167",historyBranchScope:"\u5F15\u7528\u7531\u4E0B\u65B9\u624B\u52A8\u52A0\u8F7D\uFF1B\u9009\u62E9\u540E\u56FA\u5B9A\u8BE5\u6B21OID\uFF0C\u5237\u65B0\u5F15\u7528\u4E0D\u4F1A\u79FB\u52A8\u5386\u53F2\u8D77\u70B9\u3002\u9009\u62E9HEAD\u91CD\u65B0\u8BFB\u53D6\u5F53\u524DHEAD\uFF0C\u4E0D\u5207\u6362\u5DE5\u4F5C\u533A\u3002",historyServerSearch:"\u5168\u5386\u53F2\u67E5\u8BE2",historyServerScope:"\u67E5\u8BE2\u56FA\u5B9A\u5FEB\u7167\u53EF\u8FBE\u7684\u5B8C\u6574\u5386\u53F2\uFF1B\u8BF4\u660E/\u4F5C\u8005\u4E3A\u5FFD\u7565\u5927\u5C0F\u5199\u7684\u5B57\u9762\u5339\u914D\uFF0C\u8DEF\u5F84\u4E3A\u7CBE\u786E\u8DEF\u5F84\u6216\u76EE\u5F55\uFF0C\u4E0D\u8FFD\u8E2A\u91CD\u547D\u540D\u3002\u5206\u9875\u4E0E\u8FD0\u884C\u65F6\u95F4\u6709\u754C\u3002",historyServer_message:"\u63D0\u4EA4\u8BF4\u660E",historyServer_author:"\u4F5C\u8005",historyServer_path:"\u8DEF\u5F84",historyServerApply:"\u6267\u884C\u67E5\u8BE2",historyServerClear:"\u6E05\u9664\u67E5\u8BE2",historyServerActive:"\u5F53\u524D\u5DF2\u63D0\u4EA4\u67E5\u8BE2",reviewView:"\u5BA1\u9605\u89C6\u56FE",workspaceView:"\u5DE5\u4F5C\u533A\u6539\u52A8",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",textBefore:"\u4FEE\u6539\u524D",textAfter:"\u4FEE\u6539\u540E",textReadonly:"\u53EA\u8BFB\u6587\u672C\u6BD4\u8F83",textEmpty:"\u4E24\u4E2A\u7248\u672C\u5747\u4E3A\u7A7A\u3002",commitDetails:"\u63D0\u4EA4\u8BE6\u60C5",commitFileSearch:"\u7B5B\u9009\u672C\u6B21\u63D0\u4EA4\u6587\u4EF6",commitParent:"\u6BD4\u8F83\u7236\u63D0\u4EA4",commitRoot:"\u7A7A\u57FA\u7EBF\uFF08\u6839\u63D0\u4EA4\uFF09",commitNoChanges:"\u76F8\u5BF9\u6B64\u57FA\u7EBF\u65E0\u6587\u4EF6\u53D8\u66F4",history:"\u63D0\u4EA4\u5386\u53F2",historyAdvanced:"\u52A0\u8F7D\u9AD8\u7EA7\u53EA\u8BFB Diff",historyBasic:"\u8FD4\u56DE\u57FA\u7840\u6587\u672C Diff",historyListOnly:"\u672C\u5730 HEAD \u5386\u53F2\uFF1B\u9009\u62E9\u63D0\u4EA4\u53CA\u6587\u4EF6\u67E5\u770B\u53EA\u8BFB\u6587\u672C\u5DEE\u5F02\u3002",historyEmpty:"\u5C1A\u65E0\u63D0\u4EA4",historyRefsScope:"\u6807\u8BB0\u6765\u81EA\u6700\u8FD1\u4E00\u6B21\u624B\u52A8\u52A0\u8F7D\u7684\u672C\u5730\u5F15\u7528\uFF0C\u4E0D\u4EE3\u8868\u63D0\u4EA4\u521B\u5EFA\u65F6\u7684\u5206\u652F\u72B6\u6001\uFF1B\u5237\u65B0\u5931\u8D25\u65F6\u4FDD\u7559\u4E0A\u6B21\u6210\u529F\u7ED3\u679C\u3002",historyRefsLabel:"\u5DF2\u52A0\u8F7D\u672C\u5730\u5F15\u7528",historyRefsMore:"\u5176\u4ED6\u5F15\u7528",historySearch:"\u7B5B\u9009\u5DF2\u52A0\u8F7D\u63D0\u4EA4\uFF08\u4F5C\u8005 / \u6458\u8981 / SHA\uFF09",historyNoMatch:"\u5DF2\u52A0\u8F7D\u63D0\u4EA4\u4E2D\u65E0\u5339\u914D\u9879\uFF1B\u53EF\u7EE7\u7EED\u52A0\u8F7D\u66F4\u591A\u3002",historyMore:"\u52A0\u8F7D\u66F4\u591A\u63D0\u4EA4",historyLimit:"\u5DF2\u8FBE\u5230\u5386\u53F2\u6D4F\u89C8\u8303\u56F4\u4E0A\u9650\uFF0C\u4ECD\u6709\u66F4\u65E9\u63D0\u4EA4\u672A\u663E\u793A\u3002",autoRefresh:"\u624B\u52A8\u6216\u7A97\u53E3\u805A\u7126\u65F6\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",revisionTitle:"\u672C\u5730\u7248\u672C A/B \u6BD4\u8F83",revisionScope:"\u53EF\u9009\u62E9\u5DF2\u52A0\u8F7D\u7684\u63D0\u4EA4\uFF0C\u6216\u624B\u52A8\u52A0\u8F7D\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E\uFF1B\u76F4\u63A5\u6BD4\u8F83 A \u2192 B\uFF0C\u4E0D\u4F7F\u7528\u5408\u5E76\u57FA\u70B9\u3002",revisionBase:"A\uFF08\u5DE6\u4FA7\uFF09",revisionTarget:"B\uFF08\u53F3\u4FA7\uFF09",revisionSwap:"\u4EA4\u6362 A/B",revisionEmpty:"\u4E24\u4E2A\u7248\u672C\u6CA1\u6709\u6587\u4EF6\u53D8\u66F4\u3002",fileHistory:"\u8DEF\u5F84\u5386\u53F2",fileHistoryScope:"\u56FA\u5B9A\u63D0\u4EA4\u5FEB\u7167\u4E0B\u7684\u7CBE\u786E\u8DEF\u5F84\u5386\u53F2\uFF1B\u4E0D\u8FFD\u8E2A\u91CD\u547D\u540D\u524D\u8DEF\u5F84\uFF0C\u5305\u542B\u540C\u8DEF\u5F84\u5220\u9664\u540E\u91CD\u5EFA\u3002\u70B9\u51FB\u63D0\u4EA4\u540E\uFF0C\u4EC5\u5728\u76F8\u5BF9\u9996\u4E2A\u7236\u63D0\u4EA4\uFF08\u6839\u63D0\u4EA4\u4E3A\u7A7A\u6811\uFF09\u7684\u53D8\u66F4\u4E2D\u552F\u4E00\u5339\u914D\u540C\u8DEF\u5F84\u65F6\u6253\u5F00 Diff\uFF1B\u5426\u5219\u53EA\u663E\u793A\u8BE6\u60C5\u3002",blame:"\u884C\u5F52\u5C5E\uFF08Blame\uFF09",blameNavigation:"\u70B9\u51FB\u5F52\u5C5E\u63D0\u4EA4\u67E5\u770B\u8BE6\u60C5\uFF1B\u9ED8\u8BA4\u9009\u62E9\u9996\u4E2A\u7236\u63D0\u4EA4\uFF0C\u4E0D\u81EA\u52A8\u5B9A\u4F4D\u5386\u53F2\u6587\u4EF6\u6216\u884C\u53F7\u3002",blameScope:"\u6240\u9009\u63D0\u4EA4\u7684 UTF-8 \u666E\u901A\u6587\u672C\uFF0C\u6700\u591A\u663E\u793A\u524D 500 \u884C\uFF1B\u4E0D\u5305\u542B\u5DE5\u4F5C\u533A\u4FEE\u6539\u3002",blameLimit:"\u4EC5\u663E\u793A\u524D 500 \u884C\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\u3002",blameEmpty:"\u6587\u4EF6\u6CA1\u6709\u53EF\u663E\u793A\u7684\u884C\u3002",blameLine:"\u884C\u53F7",blameCommit:"\u5F52\u5C5E\u63D0\u4EA4",blameAuthor:"\u4F5C\u8005",blameSummary:"\u63D0\u4EA4\u6458\u8981",blameSource:"\u6E90\u7801",historicalTree:"\u5386\u53F2\u76EE\u5F55",historicalTreeScope:"\u6240\u9009\u63D0\u4EA4\u7684\u76EE\u5F55\u6761\u76EE\uFF1B\u6BCF\u9875 100 \u9879\u3002\u70B9\u51FB\u666E\u901A\u6587\u4EF6\u53EA\u8BFB\u9884\u89C8\uFF1B\u4E0D\u8DDF\u968F\u7B26\u53F7\u94FE\u63A5\u6216\u5B50\u6A21\u5757\u3002",treePreview:"\u5386\u53F2\u6587\u4EF6\u9884\u89C8",treeClose:"\u5173\u95ED\u6587\u4EF6\u9884\u89C8",treeEmpty:"\u7A7A\u6587\u4EF6\u6216\u65E0\u53EF\u663E\u793A\u7684\u6587\u672C\u3002",treeSearch:"\u7B5B\u9009\u5F53\u524D\u76EE\u5F55\u540D\u79F0",treeBreadcrumbs:"\u5386\u53F2\u76EE\u5F55\u8DEF\u5F84",treeUp:"\u4E0A\u7EA7\u76EE\u5F55",treeEntries:"\u4E2A\u6761\u76EE",treePrevious:"\u4E0A\u4E00\u9875",treeNext:"\u4E0B\u4E00\u9875",historyGraph:"\u5C40\u90E8\u63D0\u4EA4\u56FE",graphScope:"\u4EC5\u5C55\u793A\u5DF2\u52A0\u8F7D\u5386\u53F2\u7684\u524D 200 \u4E2A\u63D0\u4EA4\uFF0C\u6700\u591A 1000 \u6761\u7236\u5B50\u8FB9\uFF1B\u4E0D\u53D7\u6587\u672C\u7B5B\u9009\u5F71\u54CD\uFF0C\u4E0D\u4EE3\u8868\u5B8C\u6574\u5206\u652F\u56FE\u3002\u8282\u70B9\u70B9\u51FB\u53EF\u67E5\u770B\u8BE6\u60C5\u3002",graphLimit:"\u56FE\u5DF2\u8FBE\u5230\u8282\u70B9\u6216\u8FB9\u4E0A\u9650\uFF0C\u90E8\u5206\u5173\u7CFB\u672A\u5C55\u793A\u3002",graphMissing:"\u7236\u63D0\u4EA4\u672A\u5728\u5F53\u524D\u56FE\u4E2D",graphRelations:"\u7236\u5B50\u5173\u7CFB\uFF08\u6587\u672C\uFF09",graphInvalid:"\u5F53\u524D\u63D0\u4EA4\u987A\u5E8F\u65E0\u6CD5\u7ED8\u56FE\uFF1B\u8BF7\u4F7F\u7528\u5386\u53F2\u5217\u8868\u3002",imageCompare:"PNG \u56FE\u7247\u6BD4\u8F83",imageBefore:"\u6240\u9009\u7236\u63D0\u4EA4",imageAfter:"\u6240\u9009\u63D0\u4EA4",imageAbsent:"\u6B64\u4FA7\u6CA1\u6709\u6587\u4EF6\u3002",imageInvalid:"\u56FE\u7247\u54CD\u5E94\u65E0\u6548\u3002",imageMetadata:"\u9884\u89C8\u5DF2\u79FB\u9664\u9644\u52A0\u5143\u6570\u636E\u3002",imageScope:"\u652F\u6301\u975E\u4EA4\u9519\u9759\u6001 PNG \u4E0E 8 \u4F4D\u5355\u626B\u63CF baseline JPEG \u666E\u901A\u6587\u4EF6\uFF0C\u4EE5\u53CA\u5355\u5757 simple \u9759\u6001 WebP\uFF08\u4E0D\u652F\u6301\u6E10\u8FDB\u5F0F/CMYK JPEG\u3001\u6269\u5C55/\u52A8\u753B WebP\uFF09\uFF1B\u6BCF\u4FA7\u6700\u591A 2 MiB\u30011600 \u4E07\u50CF\u7D20\u3002\u5143\u6570\u636E\u88AB\u79FB\u9664\uFF0C\u4E0D\u9002\u7528\u4E8E\u8272\u5F69\u7CBE\u786E\u6027\u5BA1\u9605\u3002\u652F\u6301\u5386\u53F2\u63D0\u4EA4\u3001\u56FA\u5B9A A/B \u53CA Git \u5DE5\u4F5C\u533A\uFF1B\u6309\u6240\u9009\u6A21\u5F0F\u8BFB\u53D6 HEAD\u3001\u6682\u5B58\u533A\u6216\u5DE5\u4F5C\u6587\u4EF6\u3002\u51B2\u7A81\u56FE\u7247\u4E0D\u652F\u6301\u3002",commitMessageLimit:"\u5B8C\u6574\u63D0\u4EA4\u8BF4\u660E\u8D85\u8FC7 2 MiB \u9884\u89C8\u4E0A\u9650\uFF0C\u5DF2\u7701\u7565\u3002",revisionLoadRefs:"\u52A0\u8F7D / \u5237\u65B0\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E",revisionRefsScope:"\u4EC5\u672C\u5730\u5206\u652F\u548C\u6307\u5411\u63D0\u4EA4\u7684\u6807\u7B7E\uFF0C\u6700\u591A 1000 \u6761\uFF1B\u4E0D fetch\u3002\u9009\u62E9\u56FA\u5B9A\u4E3A\u52A0\u8F7D\u65F6\u7684\u63D0\u4EA4 OID\uFF1B\u5237\u65B0\u5F15\u7528\u4E0D\u4F1A\u79FB\u52A8\u5DF2\u9009\u7248\u672C\u3002",revisionRefsEmpty:"\u6CA1\u6709\u53EF\u7528\u7684\u672C\u5730\u5206\u652F\u6216\u63D0\u4EA4\u6807\u7B7E\u3002",revisionLoadedCommits:"\u5DF2\u52A0\u8F7D\u7684\u63D0\u4EA4",revisionLocalRefs:"\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E",revisionRefsCount:"\u5DF2\u52A0\u8F7D\u53EF\u9009\u5F15\u7528"},en:{svnOfferExpired:"Network access offer expired. Retry manually and check consent again.",svnExpired:"SVN network consent expired; history requests stopped. Review and consent again.",svnConsentReview:"Review SVN network access",svnConsentScope:"Before consent, read local identity only. Access binds this repository, Session and cwd for five minutes; redirects and writes are not authorized.",svnConsentExplicit:"I consent to access the HTTPS SVN repository above",svnConsentApprove:"Consent and read history",svnHistoryScope:"SVN history at a fixed local revision snapshot; pages replace displayed rows",svnHistoricalDiff:"Historical read-only Diff",svnTraceScope:"File trace stops at copy boundaries and does not follow out-of-scope sources",svnGrantScope:"Network consent lasts five minutes; revoke at any time. History operations do not modify the working copy.",svnRevoke:"Revoke SVN network consent",svnIdentity:"Inspect local SVN history identity",svnOfflineIdentity:"Read local metadata from the authorized working copy only; no remote request.",svnRemoteDisabled:"Remote SVN history transport is not enabled; no network grant or usable access token. This is not an authorized history entry point.",historyWindow:"Loaded history window (start inclusive, end exclusive)",historyWindowScope:"List and graph retain at most 200 rows; more loads replace newer rows. Boundary edges are not a complete graph. Local filtering covers this window only.",segments:"Browse historical text segments",segmentBytes:"Byte range (start inclusive, end exclusive)",segmentScope:"Committed UTF-8 regular files up to 16 MiB; replaceable 64 KiB segments. Segment line numbers are not original file lines; this is not a full-file Diff.",blameOriginLine:"View origin historical line",blameUnmapped:"Origin line cannot be located precisely",blamePrevious:"Previous line page",blameNext:"Next line page",fileHistoryMergeBoundary:"Identity boundary: merge commit; stopped without inferring parent origin",fileHistoryBoundary:"Identity boundary: copy or inexact rename; stopped here",fileHistoryFollow:"Follow exact renames (first-parent)",fileHistoryFollowScope:"Only Git-detected 100% renames. No identity inference for similarity, copies or merge-parent origins. Stops at creation; output/runtime bounded. Each row uses its historical path.",graphLaneLimit:"At most 32 lanes. Overflow geometry is omitted; loaded nodes and relations remain available as text.",historyBranch:"History tip (local reference)",historyPinned:"Pinned snapshot",historyBranchScope:"Load references manually below. Selection pins that OID; refreshing references does not move the history tip. Selecting HEAD reads current HEAD without checking out.",historyServerSearch:"Full history query",historyServerScope:"Search all history reachable from the pinned snapshot. Message/author use case-insensitive literal matching; path is an exact path or directory, without rename following. Pagination and runtime are bounded.",historyServer_message:"Commit message",historyServer_author:"Author",historyServer_path:"Path",historyServerApply:"Run query",historyServerClear:"Clear query",historyServerActive:"Submitted query",reviewView:"Review view",workspaceView:"Working changes",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.",textBefore:"Before",textAfter:"After",textReadonly:"Read-only text comparison",textEmpty:"Both versions are empty.",commitDetails:"Commit details",commitFileSearch:"Filter files in this commit",commitParent:"Compare parent",commitRoot:"Empty baseline (root commit)",commitNoChanges:"No file changes against this baseline",history:"Commit history",historyAdvanced:"Load advanced read-only diff",historyBasic:"Return to basic text diff",historyListOnly:"Local HEAD history. Select a commit and file to view a read-only text diff.",historyEmpty:"No commits yet",historyRefsScope:"Labels reflect the last manually loaded local refs, not branches at commit creation. Failed refreshes retain the last successful result.",historyRefsLabel:"Loaded local references",historyRefsMore:"Additional references",historySearch:"Filter loaded commits (author / subject / SHA)",historyNoMatch:"No matches in loaded commits; you can load more if available.",historyMore:"Load more commits",historyLimit:"History browsing limit reached; older commits are not shown.",autoRefresh:"Refresh manually or on window focus",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})",revisionTitle:"Local A/B revision comparison",revisionScope:"Choose loaded commits or manually load local branches and tags. Compare A \u2192 B directly, not via merge-base.",revisionBase:"A (left)",revisionTarget:"B (right)",revisionSwap:"Swap A/B",revisionEmpty:"No file changes between these revisions.",fileHistory:"Path history",fileHistoryScope:"Exact-path history at the pinned commit; no rename following, including deletion and recreation. Selecting a commit opens its Diff only for a unique same-path change against the first parent (empty tree for a root); otherwise only details are shown.",blame:"Blame",blameNavigation:"Select an attributed commit to view details with its first parent selected; no automatic historical file or line navigation.",blameScope:"UTF-8 regular text at the selected commit, first 500 lines at most. Working changes are excluded.",blameLimit:"Only the first 500 lines are shown; result truncated.",blameEmpty:"No source lines to display.",blameLine:"Line",blameCommit:"Commit",blameAuthor:"Author",blameSummary:"Summary",blameSource:"Source",historicalTree:"Historical tree",historicalTreeScope:"Entries at the selected commit; 100 per page. Select regular files for read-only preview; symlinks and submodules are not followed.",treePreview:"Historical file preview",treeClose:"Close file preview",treeEmpty:"Empty file or no displayable text.",treeSearch:"Filter names in this directory",treeBreadcrumbs:"Historical directory path",treeUp:"Parent directory",treeEntries:"entries",treePrevious:"Previous page",treeNext:"Next page",historyGraph:"Local commit graph",graphScope:"First 200 loaded commits, at most 1000 parent edges. Independent of text filtering; not a complete branch graph. Select a node for details.",graphLimit:"Node or edge limit reached; some relationships are omitted.",graphMissing:"Parent outside this graph",graphRelations:"Parent relationships (text)",graphInvalid:"Cannot graph this commit order; use the history list.",imageCompare:"PNG image comparison",imageBefore:"Selected parent",imageAfter:"Selected commit",imageAbsent:"No file on this side.",imageInvalid:"Invalid image response.",imageMetadata:"Ancillary metadata was removed from this preview.",imageScope:"Non-interlaced static PNG or 8-bit single-scan baseline JPEG regular files , or single-chunk simple static WebP (no progressive/CMYK JPEG or extended/animated WebP); at most 2 MiB and 16 million pixels per side. Metadata is removed; not suitable for color-critical review. Supports commits, fixed A/B and Git working changes; HEAD, index or working bytes follow the selected mode. Conflicted images are unsupported.",commitMessageLimit:"Full commit message exceeds the 2 MiB preview limit and was omitted.",revisionLoadRefs:"Load / refresh local branches and tags",revisionRefsScope:"Local branches and commit tags only, at most 1000 refs; no fetch. Selections pin the loaded commit OID; refreshing refs does not move selected versions.",revisionRefsEmpty:"No local branches or commit tags are available.",revisionLoadedCommits:"Loaded commits",revisionLocalRefs:"Local branches and tags",revisionRefsCount:"Selectable references loaded"}};function pr(e,t,o,r){let s=e.target;if(!t?.contains(s)||e.defaultPrevented||e.isComposing||s?.closest?.(".monaco-editor")||s?.closest?.(".vcs-history"))return null;if(e.key==="Escape"&&s===o&&r)return"clear";let a=s?.isContentEditable||s?.closest?.('input,textarea,select,[role="textbox"]');if(a&&s!==o)return null;if((e.ctrlKey||e.metaKey)&&!e.altKey&&!e.shiftKey&&e.key?.toLowerCase()==="f")return"search";if(!a&&e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){if(e.key==="ArrowLeft")return"previous";if(e.key==="ArrowRight")return"next"}return null}function ur(e,t){let o=t?[...t.querySelectorAll("button[data-vcs-item]")]:[],r=o.indexOf(e.target);if(r<0)return;let s;if(e.key==="ArrowDown")s=o[r+1];else if(e.key==="ArrowUp")s=o[r-1];else if(e.key==="Home")s=o[0];else if(e.key==="End")s=o.at(-1);else if(e.key==="ArrowRight"&&e.target.dataset.vcsDirectory==="closed"||e.key==="ArrowLeft"&&e.target.dataset.vcsDirectory==="open"){e.preventDefault(),e.target.click();return}else return;e.preventDefault(),s?.focus()}var fr=e=>"dsh-vcs:project:v1:"+e;function mr(e,t){if(!e)return"";try{let o=(t??globalThis.localStorage)?.getItem(fr(e));return typeof o=="string"&&o.length<=1024?o:""}catch{return""}}function hr(e,t,o){if(!(!e||!t))try{(o??globalThis.localStorage)?.setItem(fr(e),t)}catch{}}function gr(e,t=""){return e.find(o=>o.id===t)?.id||e.find(o=>o.relativePath===".")?.id||e[0]?.id||""}var je=(e,t)=>JSON.stringify([e,t]),qe=(e,t=".")=>[e.type.toUpperCase(),e.relativePath==="."?t:e.relativePath||".",e.branch].filter(Boolean).join(" \xB7 "),Xe=(e,t="all")=>e.type==="git"&&["staged","unstaged"].includes(t)?t:"all",vr=(e="",t="")=>e===t?0:e<t?-1:1;function Nt(e=[]){let t={id:"",name:"",directories:new Map,files:[],count:0};for(let r of e){let s=String(r.path||"").split("/").filter(Boolean);if(!s.length)continue;let a=t;for(let p of s.slice(0,-1)){let f=a.id?a.id+"/"+p:p;a.directories.has(p)||a.directories.set(p,{id:f,name:p,directories:new Map,files:[],count:0}),a=a.directories.get(p),a.count++}a.files.push(r)}let o=r=>({...r,directories:[...r.directories.values()].sort((s,a)=>vr(s.name,a.name)).map(o),files:[...r.files].sort((s,a)=>vr(s.path,a.path))});return o(t)}function br(e=[],t){let o=e.findIndex(r=>r.id===t);return{index:o<0?0:o+1,total:e.length}}function yr(e=[],t,o){if(!e.length||!["previous","next"].includes(o))return null;let r=e.findIndex(p=>p.id===t),s=o==="next"?1:-1,a=r<0?o==="next"?-1:0:r;return e[(a+s+e.length)%e.length]||null}function xr(e=""){let t=String(e).split("/").filter(Boolean);return t.slice(0,-1).map((o,r)=>t.slice(0,r+1).join("/"))}function At(e,t=[]){for(let o of e?.directories||[])t.push(o.id),At(o,t);return t}function wr(e=""){return{missing:"deleted",unversioned:"untracked",replaced:"modified",obstructed:"conflicted",copied:"renamed"}[e]||e}function Sr(e=[]){return e.reduce((t,o)=>{let r=wr(o.status);return t.all++,t[r]=(t[r]||0)+1,t},{all:0})}function bo(e=[],t="",o="all"){let r=t.toLowerCase();return e.filter(s=>(o==="all"||wr(s.status)===o)&&s.path.toLowerCase().includes(r)).sort((s,a)=>s.path.localeCompare(a.path))}function kr(e,t,o="",r="all"){return e.map(s=>({...t[s.id],repository:s,changes:bo(t[s.id]?.changes,o,r)}))}function Cr(e,t,o=""){if(!o||!e||e.cwd!==t.cwd)return t;let r=new Map(e.repositories.map(s=>[s.id,s]));for(let s of t.repositories)r.set(s.id,s);return{...t,repositories:[...r.values()],truncated:e.truncated||t.truncated,warnings:[...e.warnings||[],...t.warnings||[]]}}var Er={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},Nr=e=>new URL("vcs-assets/"+e,document.baseURI).href;function Ar(){return n.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.6","aria-hidden":"true"},n.default.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),n.default.createElement("path",{d:"M12 4v16M6 10h3M7.5 8.5v3M15 14h3"}))}var yo=["slots","layout","locale","connection","uiSession"];function xo(e){e.effect(()=>e.locale.register("local.vcs",cr));let t=e.locale.bind("local.vcs"),o=ut(2),r=Qt(e.connection,()=>t("error"));function s(f){let d=f.useSessions(i=>Object.values(i.byId).find(c=>(c.retainedBy.mainView??0)>0));return n.default.createElement(a,{key:JSON.stringify([d?.id,d?.cwd])},n.default.createElement(p,{session:d}))}class a extends n.default.Component{state={error:null};static getDerivedStateFromError(d){return{error:d}}render(){return this.state.error?n.default.createElement("section",{className:"vcs-root"},n.default.createElement("style",null,pt),n.default.createElement("div",{className:"vcs-message vcs-error"},t("error"),n.default.createElement("button",{onClick:()=>this.setState({error:null})},t("retry")),n.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")))):this.props.children}}function p({session:f}){(0,n.useSyncExternalStore)(l=>e.locale.subscribe(l),()=>e.locale.getSnapshot(),()=>e.locale.getSnapshot());let d=f?.id,[i,c]=(0,n.useState)("all"),[m,w]=(0,n.useState)(0),[g,S]=(0,n.useState)(0),[u,y]=(0,n.useState)(null),[v,b]=(0,n.useState)({}),[h,x]=(0,n.useState)(()=>mr(f?.cwd)),[k,O]=(0,n.useState)(0),[N,q]=(0,n.useState)(""),[K,ve]=(0,n.useState)(""),[J,de]=(0,n.useState)(null),[H,ce]=(0,n.useState)(null),[re,Ce]=(0,n.useState)(!1),[ge,Ee]=(0,n.useState)(!1),[se,L]=(0,n.useState)(""),[_,Z]=(0,n.useState)(""),[ee,Lt]=(0,n.useState)(""),[Pt,Ht]=(0,n.useState)(!1),[ue,$e]=(0,n.useState)(""),[Je,Ot]=(0,n.useState)("all"),[be,Dt]=(0,n.useState)(!0),[Bt,Ze]=(0,n.useState)({}),[Ne,Lr]=(0,n.useState)(!0),[Re,Pr]=(0,n.useState)(!1),[et,Hr]=(0,n.useState)(!1),[We,Ae]=(0,n.useState)("content"),[Ft,Mt]=(0,n.useState)(0),[Or,Tt]=(0,n.useState)(!1),[tt,rt]=(0,n.useState)({added:0,deleted:0,count:0}),[oe,jt]=(0,n.useState)(!1),qt=(0,n.useRef)(null),Jt=(0,n.useRef)(null),ye=(0,n.useRef)(null),ot=(0,n.useRef)(null),Ue=(0,n.useRef)(null),st=(0,n.useRef)(null),Wt=(0,n.useRef)(null),Le=(0,n.useRef)(null),it=(0,n.useRef)(null),nt=(0,n.useRef)(null),at=(0,n.useRef)(!1),Ve=(0,n.useRef)(!1),fe=u?.repositories||[],me=fe.filter(l=>l.id===h),ie=Or&&me.some(l=>l.type==="git"),Dr=()=>{Le.current?.abort(),ce(null),de(null),Z(""),Tt(!0)};(0,n.useEffect)(()=>{fe.some(l=>l.id===h)&&hr(f?.cwd,h)},[f?.cwd,h,u]);let Pe=()=>{Wt.current?.abort(),Le.current?.abort(),ce(null),de(null),Z(""),Ae("content"),rt({added:0,deleted:0,count:0})},Ge=()=>{Ve.current=!1,Pe(),it.current?.abort(),nt.current=u,y(null),b({}),ve(N.trim()),O(l=>l+1)},xe=()=>{Ve.current||(Ve.current=!0,Pe(),it.current?.abort(),nt.current=null,y(null),b({}),ve(""),O(l=>l+1))},Ut=(l=!1)=>{l||S(E=>E+1),at.current=l,l||Pe(),l||b({}),w(E=>E+1)};(0,n.useEffect)(()=>{let l=new AbortController;return it.current=l,L(""),Ce(!!d),d&&r("vcs/repositories",{sessionId:d,...K?{subdirectory:K}:{}},l.signal).then(E=>{if(!l.signal.aborted){let j=Cr(nt.current,E,K);Ve.current=!1,x(I=>gr(j.repositories,I)),y(j)}}).catch(E=>{l.signal.aborted||L(E.message)}).finally(()=>{l.signal.aborted||Ce(!1)}),()=>l.abort()},[d,k,K]),(0,n.useEffect)(()=>{let l=new AbortController,E=at.current;Wt.current=l,at.current=!1,E||(b({}),Z(""));for(let j of me){let I=Xe(j,i);o(()=>r("vcs/status",{sessionId:d,repositoryId:j.id,mode:I},l.signal),l.signal).then(te=>{l.signal.aborted||b(ae=>({...ae,[j.id]:{...te,mode:I}}))}).catch(te=>{if(!l.signal.aborted){if(te.code==="vcs/rediscover-required"){xe();return}b(ae=>({...ae,[j.id]:{error:te.message,changes:[],mode:I}}))}})}return()=>l.abort()},[d,u,h,i,m]),(0,n.useEffect)(()=>{let l=E=>{E.target===window&&d&&h&&document.visibilityState==="visible"&&Ut(!0)};return window.addEventListener("focus",l),()=>window.removeEventListener("focus",l)},[d,h,i]);let He=fe.find(l=>l.id===J?.repositoryId),we=J?v[J.repositoryId]:null;(0,n.useEffect)(()=>{let l=new AbortController;return Le.current=l,ce(null),Z(""),rt({added:0,deleted:0,count:0}),Ae("content"),Ee(!!J&&!!we),!ie&&J&&we&&He&&r("vcs/compare",{sessionId:d,repositoryId:J.repositoryId,mode:Xe(He,i),id:J.id},l.signal).then(E=>{l.signal.aborted||ce(E)}).catch(E=>{if(!l.signal.aborted){if(E.code==="vcs/rediscover-required"){xe();return}Z(E.message)}}).finally(()=>{l.signal.aborted||Ee(!1)}),()=>l.abort()},[J,we,d,i,ie]),(0,n.useEffect)(()=>{let l=!1,E,j=new AbortController;jt(!1),Lt("");let I=document.createElement("link");return I.rel="stylesheet",I.href=Nr("editor.css"),document.head.appendChild(I),_e(Nr("editor.js")+"?v="+encodeURIComponent(Ye)+"&retry="+Ft,{signal:j.signal}).then(te=>{l||(E=te.createDiff(Jt.current,{onStats:rt}),ye.current=E,jt(!0))}).catch(te=>{l||Lt(te.message)}),()=>{l=!0,j.abort(),E?.dispose(),ye.current=null,I.remove()}},[Ft]),(0,n.useEffect)(()=>{oe&&H&&!H.binary&&ye.current?.setContent(H,JSON.stringify([d,u?.cwd,J?.repositoryId,i,J?.id,H.path]))},[oe,H,d,u,J,i]),(0,n.useEffect)(()=>{ye.current?.options({sideBySide:Ne,ignoreWhitespace:Re,wrap:et})},[oe,Ne,Re,et]);let Oe=kr(me,v,ue,Je),Se=Oe.flatMap(l=>l.changes),Br=Sr(we?.changes),lt=br(Se,J?.id),Vt=()=>{$e(""),Ot("all")},Fr=async()=>{let l=H?.path||pe?.path;if(l)try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(l);else{let E=document.createElement("textarea");try{if(E.value=l,E.style.cssText="position:fixed;opacity:0",document.body.appendChild(E),E.select(),!document.execCommand("copy"))throw Error("copy failed")}finally{E.remove()}}Ht(!0),window.setTimeout(()=>Ht(!1),1500)}catch{Z(t("copyFailed"))}};(0,n.useEffect)(()=>{let l=E=>{if(ie)return;let j=pr(E,qt.current,Ue.current,!!ue);j&&(E.preventDefault(),j==="search"?(Ue.current?.focus(),Ue.current?.select()):j==="clear"?$e(""):dt(j))};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[ue,Se,J,ie]);let Gt=l=>Ze(E=>{let j={...E};for(let I of Oe)for(let te of At(Nt(I.changes)))j[I.repository.id+"\0"+te]=!l;return j}),Mr=()=>{let l=pe;!l||!J||(Dt(!0),Vt(),Ze(E=>{let j={...E};for(let I of xr(l.path))j[J.repositoryId+"\0"+I]=!1;return j}),st.current=je(J.repositoryId,l.id))};(0,n.useEffect)(()=>{let l=st.current;if(!l)return;let E=[...ot.current?.querySelectorAll("button[data-vcs-change]")||[]].find(j=>j.dataset.vcsChange===l);E&&(E.scrollIntoView({block:"nearest"}),E.focus(),st.current=null)},[be,ue,Je,Bt,Oe]);let dt=l=>{let E=yr(Se,J?.id,l);E&&(Le.current?.abort(),ce(null),Ae("content"),de({repositoryId:h,id:E.id}))},It=re||me.some(l=>!v[l.id]),pe=we?.changes?.find(l=>l.id===J?.id),he=H?.properties,ct=he?[...new Set([...Object.keys(he.left||{}),...Object.keys(he.right||{})])].filter(l=>he.left?.[l]!==he.right?.[l]):[],De=l=>Er[l?.status]||l?.status?.slice(0,1).toUpperCase()||"M",zt=H?.binary?[H.left.label,H.right.label].filter(Boolean).join(" \u2194 "):"",ke=_||(ge?t("loading"):d?It&&!pe?t("loading"):se||(fe.length?pe?H?.binary?t("binary")+(zt?" "+t("binaryComparison",{files:zt}):""):H?!oe&&!ee?t("loading"):"":t("pick"):t("pick"):t("noRepo")):t("noSession")),Tr=l=>ur(l,ot.current),Kt=({entry:l,compact:E=!1,depth:j=0})=>{let I=l.path.lastIndexOf("/");return n.default.createElement("button",{className:"vcs-file","data-vcs-item":!0,"data-vcs-change":je(h,l.id),"aria-current":J?.repositoryId===h&&J?.id===l.id?"true":void 0,style:{paddingInlineStart:8+j*14},title:(l.oldPath?l.oldPath+" \u2192 ":"")+l.path+" \xB7 "+t(De(l)),onClick:()=>{Le.current?.abort(),ce(null),Ae("content"),de({repositoryId:h,id:l.id})}},n.default.createElement("span",{className:"vcs-status","data-status":De(l)},De(l)),n.default.createElement("span",{className:"vcs-filename"},E?l.path.slice(I+1):l.path,l.oldPath&&n.default.createElement("small",{className:"vcs-filepath"},"\u2190 ",l.oldPath)))},_t=({node:l,repository:E,depth:j=0})=>n.default.createElement(n.default.Fragment,null,l.directories.map(I=>{let te=E.id+"\0"+I.id,ae=!!Bt[te];return n.default.createElement(n.default.Fragment,{key:te},n.default.createElement("button",{className:"vcs-dir vcs-dir-toggle","data-vcs-item":!0,"data-vcs-directory":ae?"closed":"open","aria-expanded":!ae,style:{paddingInlineStart:8+j*14},onClick:()=>Ze(jr=>({...jr,[te]:!ae}))},n.default.createElement("span",{"aria-hidden":"true"},ae?"\u203A":"\u2304"),I.name,n.default.createElement("small",null,I.count)),!ae&&n.default.createElement(_t,{node:I,repository:E,depth:j+1}))}),l.files.map(I=>n.default.createElement(Kt,{key:je(E.id,I.id),entry:I,compact:l.id!=="",depth:j})));return n.default.createElement("section",{ref:qt,className:"vcs-root","aria-label":t("title")},n.default.createElement("style",null,pt),n.default.createElement("header",{className:"vcs-top"},n.default.createElement(Ar,null),n.default.createElement("h1",{className:"vcs-title"},t("title")),n.default.createElement("span",{className:"vcs-badge"},t("readonly")),n.default.createElement("span",{className:"vcs-spacer"}),n.default.createElement("select",{"aria-label":t("repositories"),value:h,disabled:re||!fe.length,onChange:l=>{Pe(),b({}),x(l.target.value)}},!fe.length&&n.default.createElement("option",{value:""},t("repositories")),fe.map(l=>n.default.createElement("option",{key:l.id,value:l.id},qe(l,t("workspaceRoot"))))),n.default.createElement("label",{className:"vcs-mode"},t("gitMode")," ",n.default.createElement("select",{"aria-label":t("gitMode"),value:i,disabled:ie||!me.some(l=>l.type==="git"),onChange:l=>{Pe(),b({}),c(l.target.value)}},["all","unstaged","staged"].map(l=>n.default.createElement("option",{key:l,value:l},t(l))))),n.default.createElement("button",{onClick:()=>Ut(!1),disabled:It||!d},t("refresh")),n.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")),n.default.createElement("div",{className:"vcs-path",title:u?.cwd||f?.cwd},t("session"),": ",u?.cwd||f?.cwd||"\u2014"),n.default.createElement("form",{className:"vcs-discovery",onSubmit:l=>{l.preventDefault(),Ge()}},n.default.createElement("input",{"aria-label":t("subdirectory"),placeholder:t("subdirectory"),value:N,onChange:l=>q(l.target.value)}),n.default.createElement("button",{disabled:!d||re},t("rescan")),n.default.createElement("span",null,t("scanHint"))),u?.truncated&&n.default.createElement("div",{className:"vcs-notice"},t("truncated")),(u?.warnings||[]).map((l,E)=>n.default.createElement("div",{className:"vcs-notice",key:E},typeof l=="string"?l:l.message||JSON.stringify(l)))),me.filter(l=>l.type==="svn").map(l=>n.default.createElement(n.default.Fragment,{key:JSON.stringify([d,l.id,k,m])},n.default.createElement(mt,{repositoryId:l.id,sessionId:d,rpc:r,t,onRediscover:xe}),n.default.createElement(gt,{repositoryId:l.id,sessionId:d,rpc:r,t,onRediscover:xe}))),me.some(l=>l.type==="git")&&n.default.createElement(n.default.Fragment,null,n.default.createElement("nav",{className:"vcs-review-views","aria-label":t("reviewView")},n.default.createElement("button",{"aria-pressed":!ie,onClick:()=>Tt(!1)},t("workspaceView")),n.default.createElement("button",{"aria-pressed":ie,"aria-expanded":ie,onClick:Dr},t("history"))),ie&&n.default.createElement(Et,{key:JSON.stringify([d,h,g,k]),sessionId:d,repositoryId:h,rpc:r,t,onRediscover:xe})),n.default.createElement("div",{className:"vcs-body",hidden:ie,"aria-label":t("workspaceView")},n.default.createElement("aside",{className:"vcs-files"},n.default.createElement("div",{className:"vcs-filter"},n.default.createElement("input",{ref:Ue,"aria-label":t("search"),placeholder:t("search"),title:t("searchShortcut"),value:ue,onChange:l=>$e(l.target.value)}),(ue||Je!=="all")&&n.default.createElement("button",{className:"vcs-clear-filter",onClick:Vt},t("clearFilters"))),n.default.createElement("div",{className:"vcs-status-filter","aria-label":t("filterStatus")},["all","modified","added","deleted","renamed","conflicted","untracked"].map(l=>n.default.createElement("button",{key:l,"aria-pressed":Je===l,onClick:()=>Ot(l)},t(l==="all"?"allFiles":Er[l]||"M")," ",n.default.createElement("small",null,Br[l]||0)))),n.default.createElement("div",{className:"vcs-count"},n.default.createElement("span",null,Se.length," ",t("files")),n.default.createElement("span",{className:"vcs-auto"},t("autoRefresh")),n.default.createElement("button",{"aria-pressed":be,onClick:()=>Dt(!be)},t(be?"tree":"list"))),be&&n.default.createElement("div",{className:"vcs-tree-actions"},n.default.createElement("button",{onClick:()=>Gt(!0)},t("expandAll")),n.default.createElement("button",{onClick:()=>Gt(!1)},t("collapseAll")),n.default.createElement("button",{onClick:Mr,disabled:!pe},t("revealSelected"))),n.default.createElement("nav",{className:"vcs-filelist","aria-label":t("title"),ref:ot,onKeyDown:Tr},Oe.map(l=>{let E=l.repository;return n.default.createElement("section",{className:"vcs-repository",key:E.id,"aria-label":qe(E,t("workspaceRoot"))},n.default.createElement("div",{className:"vcs-repository-heading",title:E.root},n.default.createElement("strong",null,qe(E,t("workspaceRoot"))),n.default.createElement("small",null,E.type==="svn"?t("svnBase"):t(Xe(E,i)))),l.error?n.default.createElement("div",{className:"vcs-message vcs-error",role:"status"},l.error,n.default.createElement("button",{onClick:Ge},t("rescan"))):v[E.id]?be?n.default.createElement(_t,{node:Nt(l.changes),repository:E}):l.changes.map(j=>n.default.createElement(Kt,{key:je(E.id,j.id),entry:j})):n.default.createElement("div",{className:"vcs-message"},t("loading")),!l.error&&v[E.id]&&!l.changes.length&&n.default.createElement("div",{className:"vcs-message"},t(ue?"emptySearch":"clean")))}),!Oe.length&&n.default.createElement("div",{className:"vcs-message"},re?t("loading"):se||t(d?"noRepo":"noSession"),se&&n.default.createElement("button",{onClick:Ge},t("rescan"))))),n.default.createElement("main",{className:"vcs-detail"},n.default.createElement("div",{className:"vcs-filehead"},n.default.createElement("strong",{title:H?.path||pe?.path},He?qe(He,t("workspaceRoot"))+" / ":"",H?.path||pe?.path||t("pick")),n.default.createElement("button",{className:"vcs-copy-path",disabled:!(H?.path||pe?.path),onClick:Fr},t(Pt?"copied":"copyPath")),Pt&&n.default.createElement("span",{className:"vcs-sr-only",role:"status"},t("pathCopied")),n.default.createElement("span",{className:"vcs-spacer"}),H&&!H.binary&&oe&&n.default.createElement(n.default.Fragment,null,n.default.createElement("span",{className:"vcs-add"},"+",tt.added),n.default.createElement("span",{className:"vcs-del"},"\u2212",tt.deleted))),ee&&n.default.createElement("div",{className:"vcs-notice",role:"status"},t("fallback")," ",n.default.createElement("button",{onClick:()=>Mt(l=>l+1)},t("retry")),n.default.createElement("details",null,n.default.createElement("summary",null,t("diagnostics")),ee)),H&&n.default.createElement("div",{className:"vcs-context","aria-label":t("comparisonContext")},n.default.createElement("span",{className:"vcs-context-status","data-status":De(H)},t(De(H))),H.oldPath&&n.default.createElement("span",{className:"vcs-context-rename",title:H.oldPath+" \u2192 "+H.path},H.oldPath," ",n.default.createElement("b",null,"\u2192")," ",H.path),n.default.createElement("span",null,H.left.label||"\u2014"," ",n.default.createElement("b",null,"\u2194")," ",H.right.label||"\u2014"),(H.left.encoding||H.right.encoding)&&n.default.createElement("span",null,t("encoding"),": ",H.left.encoding||"\u2014"," / ",H.right.encoding||"\u2014")),H&&He?.type==="git"&&n.default.createElement(Fe,{key:JSON.stringify([d,u?.cwd,J.repositoryId,i,J.id,m,we]),workspace:!0,sessionId:d,repositoryId:J.repositoryId,mode:i,id:J.id,rpc:r,t,onRediscover:xe}),H?.notice&&n.default.createElement("div",{className:"vcs-notice"},H.notice),ct.length>0&&n.default.createElement("div",{className:"vcs-tabs"},["content","properties"].map(l=>n.default.createElement("button",{key:l,"aria-pressed":We===l,onClick:()=>Ae(l)},t(l),l==="properties"?" ("+ct.length+")":""))),n.default.createElement("div",{className:"vcs-labels"},n.default.createElement("span",null,H?.left.label||"\u2014",H?.left.encoding?" \xB7 "+H.left.encoding:""),n.default.createElement("span",null,H?.right.label||"\u2014",H?.right.encoding?" \xB7 "+H.right.encoding:"")),n.default.createElement("div",{className:"vcs-editorbox","data-hidden":!!ke||We!=="content",style:We==="properties"?{display:"none"}:void 0},n.default.createElement("div",{className:"vcs-editor",ref:Jt,style:ee?{display:"none"}:void 0}),ee&&H&&!H.binary&&!ke&&n.default.createElement(Be,{comparison:H,labels:ze(t)}),ke&&n.default.createElement("div",{className:"vcs-message "+(se||_||ee?"vcs-error":""),role:"status"},ke,(se||_||ee)&&n.default.createElement("button",{onClick:()=>ee?Mt(l=>l+1):Ge()},t(ee?"retry":"rescan")))),We==="properties"&&n.default.createElement("div",{className:"vcs-properties"},n.default.createElement("table",null,n.default.createElement("thead",null,n.default.createElement("tr",null,n.default.createElement("th",null,t("properties")),n.default.createElement("th",null,H?.left.label||t("before")),n.default.createElement("th",null,H?.right.label||t("after")))),n.default.createElement("tbody",null,ct.map(l=>n.default.createElement("tr",{key:l},n.default.createElement("th",null,l),n.default.createElement("td",null,he.left?.[l]??"\u2014"),n.default.createElement("td",null,he.right?.[l]??"\u2014")))))),n.default.createElement("footer",{className:"vcs-toolbar"},n.default.createElement("button",{disabled:!oe,"aria-pressed":Ne,onClick:()=>Lr(!Ne)},t(Ne?"side":"inline")),n.default.createElement("label",null,n.default.createElement("input",{type:"checkbox",disabled:!oe,checked:Re,onChange:l=>Pr(l.target.checked)}),t("whitespace")),n.default.createElement("label",null,n.default.createElement("input",{type:"checkbox",disabled:!oe,checked:et,onChange:l=>Hr(l.target.checked)}),t("wrap")),n.default.createElement("span",{className:"vcs-spacer"}),oe&&n.default.createElement("span",null,tt.count," ",t("changes")),n.default.createElement("button",{disabled:!oe||!H||!!ke,onClick:()=>ye.current?.navigate("previous")},t("previous")),n.default.createElement("button",{disabled:!oe||!H||!!ke,onClick:()=>ye.current?.navigate("next")},t("next")),lt.index>0&&n.default.createElement("span",{className:"vcs-review-position"},t("reviewPosition",{index:lt.index,total:lt.total})),n.default.createElement("span",{className:"vcs-toolbar-separator"}),n.default.createElement("button",{title:t("fileShortcut"),disabled:!Se.length,onClick:()=>dt("previous")},t("previousFile")),n.default.createElement("button",{title:t("fileShortcut"),disabled:!Se.length,onClick:()=>dt("next")},t("nextFile"))))))}e.slots.inject("main",()=>e.slots.register({name:"main",key:"local-vcs"},s)),e.slots.inject("sidebar.panellist",()=>e.slots.register({name:"sidebar.panellist",id:"local-vcs",label:()=>t("title"),order:65},Ar))}
95
+ `;function Qt(e,t){return async(o,r,i)=>{let a=await e.rpc.call("/vcs-rpc",o,r,i);if(!a.ok){let p=new Error(a.error?.message||String(a.error||t()));throw p.code=a.error?.code,p}return a.value}}function ut(e=2){if(!Number.isInteger(e)||e<1||e>2)throw new RangeError("Status concurrency must be 1 or 2");let t=0,o=[];function r(){for(;t<e&&o.length;){let i=o.shift();if(i.signal?.removeEventListener("abort",i.abort),i.signal?.aborted){i.reject(new Error("Aborted"));continue}t++,Promise.resolve().then(()=>{if(i.signal?.aborted)throw new Error("Aborted");return i.run()}).then(i.resolve,i.reject).finally(()=>{t--,r()})}}return(i,a)=>new Promise((p,f)=>{let d={run:i,signal:a,resolve:p,reject:f,abort:null};if(d.abort=()=>{let s=o.indexOf(d);s>=0&&(o.splice(s,1),f(new Error("Aborted")))},a?.aborted){f(new Error("Aborted"));return}a?.addEventListener("abort",d.abort,{once:!0}),o.push(d),r()})}var $=R(require("react"),1);function Xt(e){return e===""?[]:e.split(/\r\n|\n|\r/)}function $t(e="",t=""){let o=Xt(e),r=Xt(t),i=0;for(;i<o.length&&i<r.length&&o[i]===r[i];)i++;let a=0;for(;a<o.length-i&&a<r.length-i&&o[o.length-a-1]===r[r.length-a-1];)a++;let p=o.length-a,f=r.length-a,d=p-i,s=f-i,c=d&&s?(d+1)*(s+1):0,h=c>2e5,w=[],v=0;function S(u,x){v++,!(w.length>=2e3)&&w.push({left:u===null?null:{number:u+1,text:o[u]},right:x===null?null:{number:x+1,text:r[x]},kind:u===null?"insert":x===null?"delete":o[u]===r[x]?"equal":"replace"})}for(let u=0;u<i;u++)S(u,u);if(h||!d||!s)for(let u=0;u<Math.max(d,s);u++)S(u<d?i+u:null,u<s?i+u:null);else{let u=s+1,x=new Uint32Array(c);for(let m=d-1;m>=0;m--)for(let y=s-1;y>=0;y--)x[m*u+y]=o[i+m]===r[i+y]?x[(m+1)*u+y+1]+1:Math.max(x[(m+1)*u+y],x[m*u+y+1]);let b=0,g=0;for(;b<d||g<s;)b<d&&g<s&&o[i+b]===r[i+g]?S(i+b++,i+g++):b<d&&(g===s||x[(b+1)*u+g]>=x[b*u+g+1])?S(i+b++,null):S(null,i+g++)}for(let u=0;u<a;u++)S(p+u,f+u);return{rows:w,approximate:h,truncated:v>w.length,totalRows:v,omittedRows:v-w.length,leftLineCount:o.length,rightLineCount:r.length,lcsCells:h?0:c}}var _r={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."},ft={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},Yr={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Qr={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},Xr={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function Be({comparison:e,labels:t={}}){let o=e?.left?.text??"",r=e?.right?.text??"",i=(0,$.useMemo)(()=>$t(o,r),[o,r]),a=f=>t[f]??_r[f],p=(f,d,s)=>{let c=f&&s!=="equal";return $.default.createElement("td",{style:{...ft,background:c?d==="left"?"#d6454520":"#259b4920":void 0}},$.default.createElement("div",{style:Yr},$.default.createElement("span",{style:Qr},f?.number??""),$.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},c?d==="left"?"\u2212":"+":""),$.default.createElement("pre",{style:Xr},f?.text??"")))};return $.default.createElement("section",{className:"vcs-text-comparison","aria-label":a("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},i.approximate&&$.default.createElement("div",{role:"status",style:{padding:8}},a("approximate")),i.truncated&&$.default.createElement("div",{role:"status",style:{padding:8}},a("truncated")," (",2e3," / ",i.totalRows,")"),$.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},$.default.createElement("thead",null,$.default.createElement("tr",null,$.default.createElement("th",{scope:"col",style:{...ft,padding:8,overflowWrap:"anywhere"}},e?.left?.label||a("before")),$.default.createElement("th",{scope:"col",style:{...ft,padding:8,overflowWrap:"anywhere"}},e?.right?.label||a("after")))),$.default.createElement("tbody",null,i.rows.map((f,d)=>$.default.createElement("tr",{key:d,"data-kind":f.kind},p(f.left,"left",f.kind),p(f.right,"right",f.kind))))),!i.rows.length&&$.default.createElement("p",{style:{padding:8}},a("empty")))}var U=R(require("react"),1);function Zt(e,{width:t,height:o,signal:r,timeoutMs:i=1e4,createURL:a=d=>URL.createObjectURL(d),revokeURL:p=d=>URL.revokeObjectURL(d),createImage:f=()=>new Image}={}){return new Promise((d,s)=>{if(r?.aborted){s(r.reason);return}if(!["image/png","image/jpeg","image/webp"].includes(e?.type)||e.size>2*1024*1024||!Number.isInteger(t)||!Number.isInteger(o)||t<1||o<1||t>8192||o>8192||t*o>16e6||!Number.isFinite(i)||i<=0){s(new Error("Invalid image preview"));return}let c,h,w,v=!1,S=!1,u=()=>{S||(S=!0,h&&(h.src=""),c&&p(c))},x=()=>{clearTimeout(w),r?.removeEventListener("abort",g)},b=m=>{v||(v=!0,x(),u(),s(m))},g=()=>b(r.reason||new Error("Image cancelled"));try{c=a(e),h=f(),r?.addEventListener("abort",g,{once:!0}),w=setTimeout(()=>b(new Error("Image decode timed out")),i),h.src=c,Promise.resolve(h.decode()).then(()=>{if(!v){if(r?.aborted){g();return}if(h.naturalWidth!==t||h.naturalHeight!==o){b(new Error("Image dimensions mismatch"));return}v=!0,x(),d({url:c,dispose:u})}},b)}catch(m){b(m)}})}function $r({side:e,sessionId:t,repositoryId:o,commit:r,parentIndex:i,base:a,target:p,workspace:f=!1,mode:d,id:s,rpc:c,t:h,onRediscover:w}){let[v,S]=(0,U.useState)(null),[u,x]=(0,U.useState)(""),[b,g]=(0,U.useState)(0);return(0,U.useEffect)(()=>{let m=new AbortController,y;return S(null),x(""),(async()=>{let k=await c(f?"vcs/workspace-image":a?"vcs/revision-image":"vcs/commit-image",f?{sessionId:t,repositoryId:o,mode:d,id:s,side:e}:a?{sessionId:t,repositoryId:o,base:a,target:p,id:s,side:e}:{sessionId:t,repositoryId:o,commit:r,parentIndex:i,id:s,side:e},m.signal);if(m.signal.aborted)return;if(k.absent){S(k);return}if(!["image/png","image/jpeg","image/webp"].includes(k.mime)||typeof k.base64!="string"||k.base64.length>2796204||!Number.isInteger(k.bytes)||k.bytes<1||k.bytes>2097152)throw Error(h("imageInvalid"));let O=atob(k.base64);if(O.length!==k.bytes)throw Error(h("imageInvalid"));let E=new Blob([Uint8Array.from(O,q=>q.charCodeAt(0))],{type:k.mime});if(y=await Zt(E,{width:k.width,height:k.height,signal:m.signal}),m.signal.aborted){y.dispose();return}S({...k,url:y.url})})().catch(k=>{m.signal.aborted||(x(k.message),k.code==="vcs/rediscover-required"&&w())}),()=>{m.abort(),y?.dispose()}},[e,t,o,r,i,a,p,f,d,s,b]),U.default.createElement("section",{style:{flex:"1 1 280px",minWidth:0},"aria-label":h(e==="left"?"imageBefore":"imageAfter")},U.default.createElement("h5",null,h(e==="left"?"imageBefore":"imageAfter")),u?U.default.createElement("p",{role:"alert"},u," ",U.default.createElement("button",{onClick:()=>g(m=>m+1)},h("retry"))):v?U.default.createElement(U.default.Fragment,null,U.default.createElement("p",null,U.default.createElement("code",null,v.commit)," \xB7 ",v.path),v.absent?U.default.createElement("p",null,h("imageAbsent")):U.default.createElement(U.default.Fragment,null,U.default.createElement("p",null,v.width," \xD7 ",v.height," \xB7 ",v.bytes," B"),U.default.createElement("img",{src:v.url,alt:v.path,style:{maxWidth:"100%",maxHeight:480,objectFit:"contain"}}),v.metadataStripped&&U.default.createElement("p",null,h("imageMetadata")))):U.default.createElement("p",{role:"status"},h("loading")))}function Fe(e){let[t,o]=(0,U.useState)(!1);return U.default.createElement("div",null,U.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("imageCompare")),t&&U.default.createElement(U.default.Fragment,null,U.default.createElement("p",null,e.t("imageScope")),U.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:16}},["left","right"].map(r=>U.default.createElement($r,{key:r,...e,side:r})))))}function ze(e){return{before:e("textBefore"),after:e("textAfter"),readonly:e("textReadonly"),empty:e("textEmpty"),approximate:e("approximate"),truncated:e("textTruncated")}}var G=R(require("react"),1);function mt(e){return G.default.createElement(Zr,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Zr({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:i}){let[a,p]=(0,G.useState)(!1),[f,d]=(0,G.useState)(null),[s,c]=(0,G.useState)(""),[h,w]=(0,G.useState)(0);return(0,G.useEffect)(()=>{if(!a)return;let v=new AbortController;return d(null),c(""),o("vcs/svn-identity",{sessionId:e,repositoryId:t},v.signal).then(S=>{v.signal.aborted||d(S)}).catch(S=>{v.signal.aborted||(c(S.message),S.code==="vcs/rediscover-required"&&i())}),()=>v.abort()},[a,e,t,h]),G.default.createElement("section",null,G.default.createElement("button",{"aria-expanded":a,onClick:()=>p(v=>!v)},r("svnIdentity")),a&&G.default.createElement(G.default.Fragment,null,G.default.createElement("p",null,r("svnOfflineIdentity")),s?G.default.createElement("p",{role:"alert"},s," ",G.default.createElement("button",{onClick:()=>w(v=>v+1)},r("retry"))):f?G.default.createElement(G.default.Fragment,null,G.default.createElement("dl",null,["origin","root","uuid","scope","revision"].map(v=>G.default.createElement(G.default.Fragment,{key:v},G.default.createElement("dt",null,v),G.default.createElement("dd",null,G.default.createElement("code",null,f[v]))))),G.default.createElement("p",{role:"status"},r("svnRemoteDisabled"))):G.default.createElement("p",{role:"status"},r("loading"))))}function Ke(e,t,{now:o=Date.now,schedule:r=setTimeout,cancel:i=clearTimeout}={}){if(!Number.isSafeInteger(e)||e<=o()||e-o()>3e5)throw Error("Invalid SVN consent expiry");let a=!0,p=r(()=>{a&&(a=!1,t())},e-o());return()=>{a&&(a=!1,i(p))}}function Rt(e,t=Date.now()){if(!e||typeof e.token!="string"||!/^[a-f0-9]{64}$/.test(e.token)||typeof e.snapshot!="string"||!/^(0|[1-9][0-9]*)$/.test(e.snapshot)||BigInt(e.snapshot)>9223372036854775807n||!Number.isSafeInteger(e.expiresAt)||e.expiresAt<=t||e.expiresAt-t>3e5)throw Error("Invalid SVN consent response");return e}var X=R(require("react"),1);var M=R(require("react"),1);function ht(e){return M.default.createElement(Rr,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Rr({sessionId:e,repositoryId:t,rpc:o,t:r,onApproved:i,onRediscover:a}){let[p,f]=(0,M.useState)(!1),[d,s]=(0,M.useState)(null),[c,h]=(0,M.useState)(!1),[w,v]=(0,M.useState)(""),[S,u]=(0,M.useState)(!1),[x,b]=(0,M.useState)(0);(0,M.useEffect)(()=>{if(!p)return;let y=new AbortController;return s(null),h(!1),v(""),u(!0),o("vcs/svn-describe",{sessionId:e,repositoryId:t},y.signal).then(k=>{y.signal.aborted||s(k)}).catch(k=>{y.signal.aborted||(v(k.message),k.code==="vcs/rediscover-required"&&a())}).finally(()=>{y.signal.aborted||u(!1)}),()=>y.abort()},[p,e,t,x]);let[g,m]=(0,M.useState)(0);return(0,M.useEffect)(()=>{if(!p||!d||d.expiresAt===void 0)return;let y=()=>{s(null),h(!1),m(0),u(!1),v(r("svnOfferExpired"))};try{return Ke(d.expiresAt,y)}catch{y()}},[p,d]),(0,M.useEffect)(()=>{if(!g||!p||!d)return;let y=new AbortController;return u(!0),v(""),o("vcs/svn-approve",{sessionId:e,repositoryId:t,offer:d.offer,explicit:!0},y.signal).then(k=>{y.signal.aborted||i(k)}).catch(k=>{y.signal.aborted||(v(k.message),h(!1),k.code==="vcs/rediscover-required"&&a())}).finally(()=>{y.signal.aborted||u(!1)}),()=>y.abort()},[g,p,d]),M.default.createElement("section",null,M.default.createElement("button",{"aria-expanded":p,onClick:()=>{m(0),f(y=>!y)}},r("svnConsentReview")),p&&M.default.createElement(M.default.Fragment,null,M.default.createElement("p",null,r("svnConsentScope")),w&&M.default.createElement("p",{role:"alert"},w," ",M.default.createElement("button",{disabled:S,onClick:()=>{m(0),b(y=>y+1)}},r("retry"))),d&&M.default.createElement(M.default.Fragment,null,M.default.createElement("dl",null,["origin","root","uuid","scope"].map(y=>M.default.createElement(M.default.Fragment,{key:y},M.default.createElement("dt",null,y),M.default.createElement("dd",null,M.default.createElement("code",null,d[y]))))),d.remoteEnabled?M.default.createElement(M.default.Fragment,null,M.default.createElement("label",null,M.default.createElement("input",{type:"checkbox",checked:c,disabled:S,onChange:y=>h(y.target.checked)}),r("svnConsentExplicit")),M.default.createElement("button",{disabled:S||!c,onClick:()=>m(y=>y+1)},r("svnConsentApprove"))):M.default.createElement("p",{role:"status"},r("svnRemoteDisabled"))),S&&M.default.createElement("p",{role:"status"},r("loading"))))}var A=R(require("react"),1);var Q=R(require("react"),1);var ie=require("react");function er({load:e,node:t,comparison:o,key:r,single:i=!1,onReady:a=()=>{},onError:p=()=>{},onComputation:f=()=>{}}){let d=new AbortController,s,c=!1,h=()=>{let v=s;s=void 0,v?.dispose()};return{done:Promise.resolve().then(()=>(d.signal.throwIfAborted(),e(d.signal))).then(v=>{c||(s=v.createDiff(t,{single:i,onComputation:S=>{c||f(S)}}),s.setContent(o,r),c||a(s))}).catch(v=>{try{h()}finally{c||p(v)}}),dispose(){c||(c=!0,d.abort(),h())}}}async function _e(e,{signal:t,fetcher:o=fetch,importer:r=i=>import(i)}={}){let i=await o(e,{credentials:"same-origin",cache:"no-cache",signal:t});if(!i.ok)throw new Error("Editor resource HTTP "+i.status+" ("+e+"). "+(i.status===401?"Refresh the authenticated DSH page.":i.status===404?"The editor route is not active in this DSH process.":"Check plugin asset registration."));let a=i.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(a))throw new Error("Editor resource returned "+(a||"no Content-Type")+" instead of JavaScript.");return await i.arrayBuffer(),t?.throwIfAborted(),r(e)}var Ye="0.3.69";function tr({comparison:e,identity:t,enabled:o,single:r,line:i,sideBySide:a,ignoreWhitespace:p,wrap:f}){let d=(0,ie.useRef)(null),s=(0,ie.useRef)(null),[c,h]=(0,ie.useState)(!1),[w,v]=(0,ie.useState)(""),[S,u]=(0,ie.useState)("pending");return(0,ie.useEffect)(()=>{if(h(!1),u("pending"),v(""),!o)return;let x=m=>new URL("vcs-assets/"+m,document.baseURI).href,b=document.createElement("link");b.rel="stylesheet",b.href=x("editor.css"),document.head.appendChild(b);let g=er({node:d.current,comparison:e,key:t,single:r,load:m=>_e(x("editor.js")+"?v="+encodeURIComponent(Ye)+"&retry=0",{signal:m}),onReady:m=>{s.current=m,h(!0)},onError:m=>v(m.message),onComputation:u});return()=>{s.current=null;try{g.dispose()}finally{b.remove()}}},[o,e,t,r]),(0,ie.useEffect)(()=>{c&&r&&i&&s.current?.revealLine(i)},[c,r,i]),(0,ie.useEffect)(()=>{c&&s.current?.options({sideBySide:a,ignoreWhitespace:p,wrap:f})},[c,a,p,f]),{node:d,viewer:s,ready:c,error:w,computation:S}}function le({comparison:e,identity:t,t:o,single:r=!1,line:i=null}){let[a,p]=(0,Q.useState)(!0),[f,d]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(!1),[h,w]=(0,Q.useState)(!0),{node:v,viewer:S,ready:u,error:x,computation:b}=tr({comparison:e,identity:t,enabled:h,single:r,line:i,sideBySide:a,ignoreWhitespace:f,wrap:s});return Q.default.createElement("div",null,Q.default.createElement("button",{"aria-pressed":h,onClick:()=>w(g=>!g)},o(h?"historyBasic":"historyAdvanced")),u&&!r&&Q.default.createElement("div",{key:"controls",style:{display:"flex",flexWrap:"wrap",gap:8}},Q.default.createElement("button",{"aria-pressed":a,onClick:()=>p(g=>!g)},o(a?"side":"inline")),Q.default.createElement("label",null,Q.default.createElement("input",{type:"checkbox",checked:f,onChange:g=>d(g.target.checked)}),o("whitespace")),Q.default.createElement("label",null,Q.default.createElement("input",{type:"checkbox",checked:s,onChange:g=>c(g.target.checked)}),o("wrap")),Q.default.createElement("button",{onClick:()=>S.current?.navigate("previous")},o("previous")),Q.default.createElement("button",{onClick:()=>S.current?.navigate("next")},o("next"))),h&&!u&&!x&&Q.default.createElement("p",{role:"status"},o("loading")),e.large&&!r&&u&&Q.default.createElement("p",{role:"status"},o(b==="complete"?"diffComplete":b==="incomplete"?"diffIncomplete":"diffPending")),e.large&&!u&&Q.default.createElement("p",{role:"status"},o("largeFallback")),x&&Q.default.createElement("p",{role:"status"},o("fallback")," ",x),Q.default.createElement("div",{key:"editor-host",style:{position:"relative",height:360}},Q.default.createElement("div",{ref:v,style:{position:"absolute",inset:0,visibility:u?"visible":"hidden"},"aria-hidden":!u}),!u&&Q.default.createElement(Be,{comparison:e,labels:ze(o)})))}function gt(e){return A.default.createElement(to,{key:JSON.stringify([e.sessionId,e.repositoryId,e.token,e.snapshot]),...e})}function to({sessionId:e,repositoryId:t,token:o,snapshot:r,rpc:i,t:a,onRediscover:p}){let[f,d]=(0,A.useState)(r),[s,c]=(0,A.useState)(null),[h,w]=(0,A.useState)(null),[v,S]=(0,A.useState)(""),[u,x]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let b=new AbortController;return c(null),w(null),S(""),i("vcs/svn-log",{sessionId:e,repositoryId:t,token:o,snapshot:r,cursor:f,limit:50},b.signal).then(g=>{b.signal.aborted||c(g)}).catch(g=>{b.signal.aborted||(S(g.message),g.code==="vcs/rediscover-required"&&p())}),()=>b.abort()},[f,u]),A.default.createElement("section",null,A.default.createElement("p",null,a("svnHistoryScope")," \xB7 r",r),v?A.default.createElement("p",{role:"alert"},v," ",A.default.createElement("button",{onClick:()=>x(b=>b+1)},a("retry"))):s?A.default.createElement(A.default.Fragment,null,A.default.createElement("ol",null,s.entries.map(b=>A.default.createElement("li",{key:b.revision},A.default.createElement("button",{onClick:()=>w(b.revision)},"r",b.revision," \xB7 ",b.message)))),s.nextRevision!==null&&A.default.createElement("button",{onClick:()=>d(s.nextRevision)},a("historyMore"))):A.default.createElement("p",{role:"status"},a("loading")),h&&A.default.createElement(ro,{key:h,sessionId:e,repositoryId:t,token:o,snapshot:r,rpc:i,t:a,onRediscover:p,revision:h}))}function ro({sessionId:e,repositoryId:t,token:o,snapshot:r,revision:i,rpc:a,t:p,onRediscover:f}){let[d,s]=(0,A.useState)(null),[c,h]=(0,A.useState)(null),[w,v]=(0,A.useState)(""),[S,u]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let x=new AbortController;return s(null),h(null),v(""),a("vcs/svn-detail",{sessionId:e,repositoryId:t,token:o,snapshot:r,revision:i},x.signal).then(b=>{x.signal.aborted||s(b)}).catch(b=>{x.signal.aborted||(v(b.message),b.code==="vcs/rediscover-required"&&f())}),()=>x.abort()},[S]),A.default.createElement("section",null,w?A.default.createElement("p",{role:"alert"},w," ",A.default.createElement("button",{onClick:()=>u(x=>x+1)},p("retry"))):d?A.default.createElement(A.default.Fragment,null,A.default.createElement("p",null,d.message),d.changes.map(x=>A.default.createElement("div",{key:x.id},A.default.createElement("span",null,x.action," ",x.path),x.kind==="file"&&A.default.createElement(A.default.Fragment,null,A.default.createElement("button",{onClick:()=>h({id:x.id,mode:"compare"})},p("svnHistoricalDiff")),A.default.createElement("button",{onClick:()=>h({id:x.id,mode:"trace"})},p("fileHistory")))))):A.default.createElement("p",{role:"status"},p("loading")),c&&A.default.createElement(oo,{key:JSON.stringify(c),sessionId:e,repositoryId:t,token:o,snapshot:r,revision:i,rpc:a,t:p,onRediscover:f,...c}))}function oo({sessionId:e,repositoryId:t,token:o,snapshot:r,revision:i,rpc:a,t:p,onRediscover:f,id:d,mode:s}){let[c,h]=(0,A.useState)(null),[w,v]=(0,A.useState)(null),[S,u]=(0,A.useState)(""),[x,b]=(0,A.useState)(0);return(0,A.useEffect)(()=>{let g=new AbortController;return h(null),u(""),a("vcs/svn-"+s,{sessionId:e,repositoryId:t,token:o,snapshot:r,revision:i,id:d,...w===null?{}:{cursor:w}},g.signal).then(m=>{g.signal.aborted||h(m)}).catch(m=>{g.signal.aborted||(u(m.message),m.code==="vcs/rediscover-required"&&f())}),()=>g.abort()},[w,x]),S?A.default.createElement("p",{role:"alert"},S," ",A.default.createElement("button",{onClick:()=>b(g=>g+1)},p("retry"))):c?s==="compare"?c.binary?A.default.createElement("p",null,p("binary")):A.default.createElement(le,{comparison:c,identity:JSON.stringify([e,t,r,i,d]),t:p}):A.default.createElement("section",null,A.default.createElement("p",null,p("svnTraceScope")," \xB7 ",c.path," \xB7 peg r",c.pegRevision),A.default.createElement("ol",null,c.entries.map(g=>A.default.createElement("li",{key:g.revision},"r",g.revision," \xB7 ",g.message))),c.nextRevision!==null&&A.default.createElement("button",{onClick:()=>v(c.nextRevision)},p("historyMore"))):A.default.createElement("p",{role:"status"},p("loading"))}function vt(e){return X.default.createElement(io,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function io({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:i}){let[a,p]=(0,X.useState)(null),[f,d]=(0,X.useState)(!1),[s,c]=(0,X.useState)(""),[h,w]=(0,X.useState)(0);(0,X.useEffect)(()=>{if(a)return()=>{Promise.resolve().then(()=>o("vcs/svn-revoke",{sessionId:e,repositoryId:t,token:a.token})).catch(()=>{})}},[a,e,t]),(0,X.useEffect)(()=>{if(a)try{return Ke(a.expiresAt,()=>{p(null),w(0),d(!1),c(r("svnExpired"))})}catch{p(null),c(r("svnExpired"))}},[a]),(0,X.useEffect)(()=>{if(!h||!a)return;let u=new AbortController;return d(!0),c(""),o("vcs/svn-revoke",{sessionId:e,repositoryId:t,token:a.token},u.signal).then(()=>{u.signal.aborted||p(null)}).catch(x=>{u.signal.aborted||(c(x.message),x.code==="vcs/rediscover-required"&&i())}).finally(()=>{u.signal.aborted||d(!1)}),()=>u.abort()},[h,a]);let v=u=>{try{Rt(u),c(""),w(0),p(u)}catch(x){c(x.message)}},S=async(...u)=>{try{return await o(...u)}catch(x){throw x.code==="vcs/svn-consent-required"&&!u[2]?.aborted&&(p(null),w(0),c(r("svnExpired"))),x}};return X.default.createElement("section",null,!a&&s&&X.default.createElement("p",{role:"status"},s),a?X.default.createElement(X.default.Fragment,null,X.default.createElement("p",null,r("svnGrantScope")),X.default.createElement("button",{disabled:f,onClick:()=>w(u=>u+1)},r("svnRevoke")),s&&X.default.createElement("p",{role:"alert"},s),!f&&X.default.createElement(gt,{sessionId:e,repositoryId:t,t:r,onRediscover:i,rpc:S,token:a.token,snapshot:a.snapshot})):X.default.createElement(ht,{sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:i,onApproved:v}))}var C=R(require("react"),1);function rr(e){let t=new Map;for(let o of e){let r=t.get(o.commit);r||(r={names:[],hidden:0},t.set(o.commit,r)),r.names.length<3?r.names.push(o.name):r.hidden++}return t}var T=R(require("react"),1);var B=R(require("react"),1);var W=R(require("react"),1);var V=R(require("react"),1);function bt(e){return V.default.createElement(so,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.path]),...e})}function so({sessionId:e,repositoryId:t,commit:o,path:r,rpc:i,t:a,onRediscover:p}){let[f,d]=(0,V.useState)(!1),[s,c]=(0,V.useState)([0]),[h,w]=(0,V.useState)(null),[v,S]=(0,V.useState)(""),[u,x]=(0,V.useState)(0),b=s.at(-1);(0,V.useEffect)(()=>{if(!f)return;let m=new AbortController;return w(null),S(""),i("vcs/tree-segment",{sessionId:e,repositoryId:t,commit:o,path:r,offset:b},m.signal).then(y=>{m.signal.aborted||w(y)}).catch(y=>{m.signal.aborted||(S(y.message),y.code==="vcs/rediscover-required"&&p())}),()=>m.abort()},[f,b,e,t,o,r,u]);let g=(0,V.useMemo)(()=>h?{path:r,left:{label:o,text:h.text},right:{label:o,text:h.text}}:null,[h,r,o]);return V.default.createElement("section",null,V.default.createElement("button",{"aria-expanded":f,onClick:()=>d(m=>!m)},a("segments")),f&&V.default.createElement(V.default.Fragment,null,V.default.createElement("p",null,a("segmentScope")),v?V.default.createElement("p",{role:"alert"},v," ",V.default.createElement("button",{onClick:()=>x(m=>m+1)},a("retry"))):h?V.default.createElement(V.default.Fragment,null,V.default.createElement("p",null,a("segmentBytes"),": ",h.offset,"\u2013",h.endOffset," / ",h.totalBytes," \xB7 ",V.default.createElement("code",null,h.oid)),V.default.createElement("button",{disabled:s.length===1,onClick:()=>c(m=>m.slice(0,-1))},a("previous")),V.default.createElement("button",{disabled:h.nextOffset===null,onClick:()=>c(m=>[...m,h.nextOffset])},a("next")),V.default.createElement(le,{single:!0,comparison:g,identity:JSON.stringify([e,t,o,r,b]),t:a})):V.default.createElement("p",{role:"status"},a("loading"))))}function Me({sessionId:e,repositoryId:t,commit:o,path:r,rpc:i,t:a,onRediscover:p,onClose:f,line:d=null}){let[s,c]=(0,W.useState)(null),[h,w]=(0,W.useState)(""),[v,S]=(0,W.useState)(0);(0,W.useEffect)(()=>{let x=new AbortController;return c(null),w(""),i("vcs/tree-file",{sessionId:e,repositoryId:t,commit:o,path:r},x.signal).then(b=>{x.signal.aborted||c(b)}).catch(b=>{x.signal.aborted||(w(b.message),b.code==="vcs/rediscover-required"&&p())}),()=>x.abort()},[e,t,o,r,v]);let u=(0,W.useMemo)(()=>s?{path:r,left:{label:o,text:s.text||""},right:{label:o,text:s.text||""}}:null,[s,r,o]);return W.default.createElement("section",{"aria-label":a("treePreview")},W.default.createElement("h4",null,r),W.default.createElement("button",{onClick:f},a("treeClose")),W.default.createElement("p",null,W.default.createElement("code",null,o)),h?W.default.createElement("p",{role:"alert"},h," ",W.default.createElement("button",{onClick:()=>S(x=>x+1)},a("retry"))):s?W.default.createElement(W.default.Fragment,null,W.default.createElement("p",null,W.default.createElement("code",null,s.oid)," \xB7 ",a("encoding"),": ",s.encoding||"\u2014"),d&&W.default.createElement("p",{role:"status"},a("blameOriginLine"),": ",d,!s.text||d>s.text.split(`
96
+ `).length?" \xB7 "+a("blameUnmapped"):""),s.notice&&W.default.createElement("p",{role:"status"},s.notice),s.binary?W.default.createElement("p",null,a("binary")):s.text===""?W.default.createElement("p",null,a("treeEmpty")):W.default.createElement(le,{single:!0,line:d,comparison:u,identity:JSON.stringify([e,t,o,r]),t:a})):W.default.createElement("p",{role:"status"},a("loading")),W.default.createElement(bt,{sessionId:e,repositoryId:t,commit:o,path:r,rpc:i,t:a,onRediscover:p}))}function or(e=""){let t=[{path:"",name:"/"}];if(e){let o="";for(let r of e.split("/"))o=o?o+"/"+r:r,t.push({path:o,name:r})}return t}function ir(e,t="",o=""){let r=t?t+"/":"",i=o.toLowerCase();return e.filter(a=>{let p=a.path.slice(r.length);return a.path.startsWith(r)&&p.length>0&&!p.includes("/")&&p.toLowerCase().includes(i)}).sort((a,p)=>+(p.type==="tree")-+(a.type==="tree")||(a.path<p.path?-1:a.path>p.path?1:0))}function no({sessionId:e,repositoryId:t,commit:o,rpc:r,t:i,onRediscover:a}){let[p,f]=(0,B.useState)(null),[d,s]=(0,B.useState)(""),[c,h]=(0,B.useState)(0),[w,v]=(0,B.useState)(""),[S,u]=(0,B.useState)(0),[x,b]=(0,B.useState)(""),[g,m]=(0,B.useState)(null);if((0,B.useEffect)(()=>{let E=new AbortController;return f(null),s(""),r("vcs/tree",{sessionId:e,repositoryId:t,commit:o},E.signal).then(q=>{E.signal.aborted||f(q)}).catch(q=>{E.signal.aborted||(s(q.message),q.code==="vcs/rediscover-required"&&a())}),()=>E.abort()},[e,t,o,c]),d)return B.default.createElement("p",{role:"alert"},d," ",B.default.createElement("button",{onClick:()=>h(E=>E+1)},i("retry")));if(!p)return B.default.createElement("p",{role:"status"},i("loading"));let y=w?w+"/":"",k=ir(p.entries,w,x),O=E=>{v(E),u(0),b(""),m(null)};return B.default.createElement("section",{"aria-label":i("historicalTree")},B.default.createElement("p",null,i("historicalTreeScope")),B.default.createElement("code",null,o),B.default.createElement("p",null,w||"/"," ",w&&B.default.createElement("button",{onClick:()=>O(w.includes("/")?w.slice(0,w.lastIndexOf("/")):"")},i("treeUp"))),B.default.createElement("nav",{"aria-label":i("treeBreadcrumbs")},or(w).map(E=>B.default.createElement(B.default.Fragment,{key:E.path},E.path&&" / ",E.path===w?B.default.createElement("span",{"aria-current":"location"},E.name):B.default.createElement("button",{onClick:()=>O(E.path)},E.name)))),B.default.createElement("label",null,i("treeSearch")," ",B.default.createElement("input",{"aria-label":i("treeSearch"),value:x,onChange:E=>{b(E.target.value),u(0),m(null)}})),B.default.createElement("p",null,k.length," ",i("treeEntries")),!k.length&&x&&B.default.createElement("p",{role:"status"},i("emptySearch")),B.default.createElement("ul",null,k.slice(S*100,S*100+100).map(E=>B.default.createElement("li",{key:E.path},E.type==="tree"?B.default.createElement("button",{onClick:()=>O(E.path)},E.path.slice(y.length),"/"):E.type==="blob"&&["100644","100755"].includes(E.mode)?B.default.createElement("button",{"aria-pressed":g===E.path,onClick:()=>m(E.path)},E.path.slice(y.length)):B.default.createElement("span",null,E.path.slice(y.length))," \xB7 ",B.default.createElement("code",null,E.mode," ",E.type," ",B.default.createElement("span",{title:E.oid},E.oid.slice(0,10)))))),S>0&&B.default.createElement("button",{onClick:()=>{u(E=>E-1),m(null)}},i("treePrevious")),(S+1)*100<k.length&&B.default.createElement("button",{onClick:()=>{u(E=>E+1),m(null)}},i("treeNext")),g&&B.default.createElement(Me,{key:JSON.stringify([e,t,o,g]),sessionId:e,repositoryId:t,commit:o,rpc:r,t:i,onRediscover:a,path:g,onClose:()=>m(null)}))}function yt(e){return B.default.createElement(ao,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function ao(e){let[t,o]=(0,B.useState)(!1);return B.default.createElement("div",null,B.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("historicalTree")),t&&B.default.createElement(no,{...e}))}var I=R(require("react"),1);var F=R(require("react"),1);function lo({sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:i,follow:a,rpc:p,t:f,onRediscover:d,onSelectCommit:s}){let[c,h]=(0,F.useState)({commits:[],nextOffset:null}),[w,v]=(0,F.useState)(0),[S,u]=(0,F.useState)(0),[x,b]=(0,F.useState)(!0),[g,m]=(0,F.useState)("");return(0,F.useEffect)(()=>{let y=new AbortController;return b(!0),m(""),p("vcs/file-history",{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:i,offset:w,limit:50,follow:a},y.signal).then(k=>{y.signal.aborted||h(O=>({...k,commits:w?[...O.commits,...k.commits]:k.commits}))}).catch(k=>{y.signal.aborted||(m(k.message),k.code==="vcs/rediscover-required"&&d())}).finally(()=>{y.signal.aborted||b(!1)}),()=>y.abort()},[e,t,o,r,i,w,S]),F.default.createElement("section",{"aria-label":f("fileHistory"),"aria-busy":x},F.default.createElement("p",null,f("fileHistoryScope")),F.default.createElement("p",{style:{overflowWrap:"anywhere"}},c.path," \xB7 ",F.default.createElement("code",null,o)),F.default.createElement("ol",null,c.commits.map(y=>F.default.createElement("li",{key:y.id},F.default.createElement("code",{title:y.id},y.id.slice(0,10))," \xB7 ",s?F.default.createElement("button",{onClick:()=>s(y.id,y.path||c.path)},y.subject):y.subject,F.default.createElement("div",null,y.boundary&&F.default.createElement("span",null,f(y.boundary==="merge-first-parent"?"fileHistoryMergeBoundary":"fileHistoryBoundary")," "),y.path&&F.default.createElement("code",null,y.oldPath?y.oldPath+" \u2192 ":"",y.path)," ",y.author," \xB7 ",F.default.createElement("time",{dateTime:y.date},y.date))))),x&&F.default.createElement("p",{role:"status"},f("loading")),g&&F.default.createElement("p",{role:"alert"},g," ",F.default.createElement("button",{onClick:()=>u(y=>y+1)},f("retry"))),!x&&!g&&!c.commits.length&&F.default.createElement("p",null,f("historyEmpty")),c.truncated&&F.default.createElement("p",{role:"status"},f("historyLimit")),!g&&c.nextOffset!==null&&F.default.createElement("button",{disabled:x,onClick:()=>v(c.nextOffset)},f("historyMore")))}function xt(e){return F.default.createElement(co,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.parentIndex,e.id]),...e})}function co(e){let[t,o]=(0,F.useState)(!1),[r,i]=(0,F.useState)(!1);return F.default.createElement("div",null,F.default.createElement("button",{"aria-expanded":t,onClick:()=>o(a=>!a)},e.t("fileHistory")),t&&F.default.createElement(F.default.Fragment,null,F.default.createElement("label",null,F.default.createElement("input",{type:"checkbox",checked:r,onChange:a=>i(a.target.checked)}),e.t("fileHistoryFollow")),F.default.createElement("p",null,e.t("fileHistoryFollowScope")),F.default.createElement(lo,{key:String(r),follow:r,...e})))}var D=R(require("react"),1);function po({sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:i,rpc:a,t:p,onRediscover:f,onSelectCommit:d}){let[s,c]=(0,D.useState)(null),[h,w]=(0,D.useState)(""),[v,S]=(0,D.useState)(0),[u,x]=(0,D.useState)(1),[b,g]=(0,D.useState)(null);return(0,D.useEffect)(()=>{let m=new AbortController;return c(null),w(""),g(null),a("vcs/blame",{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:i,startLine:u,lineLimit:500},m.signal).then(y=>{m.signal.aborted||c(y)}).catch(y=>{m.signal.aborted||(w(y.message),y.code==="vcs/rediscover-required"&&f())}),()=>m.abort()},[e,t,o,r,i,v,u]),h?D.default.createElement("p",{role:"alert"},h," ",D.default.createElement("button",{onClick:()=>S(m=>m+1)},p("retry"))):s?D.default.createElement("section",{"aria-label":p("blame")},D.default.createElement("p",null,p("blameScope")),d&&D.default.createElement("p",null,p("blameNavigation")),s.notice&&D.default.createElement("p",{role:"status"},s.notice),s.truncated&&D.default.createElement("p",{role:"status"},p("blameLimit")),!s.notice&&!s.lines.length&&D.default.createElement("p",null,p("blameEmpty")),!!s.lines.length&&D.default.createElement("div",{style:{overflow:"auto",maxHeight:480}},D.default.createElement("table",null,D.default.createElement("thead",null,D.default.createElement("tr",null,["blameLine","blameCommit","blameAuthor","blameSummary","blameSource"].map(m=>D.default.createElement("th",{key:m,scope:"col"},p(m))))),D.default.createElement("tbody",null,s.lines.map(m=>D.default.createElement("tr",{key:m.line},D.default.createElement("th",{scope:"row"},m.line),D.default.createElement("td",null,d?D.default.createElement("button",{title:m.commit,onClick:()=>d(m.commit)},D.default.createElement("code",null,m.commit.slice(0,10))):D.default.createElement("code",{title:m.commit},m.commit.slice(0,10))),D.default.createElement("td",null,m.author),D.default.createElement("td",null,m.summary),D.default.createElement("td",null,D.default.createElement("pre",{style:{margin:0}},m.text),m.path&&m.originalLine?D.default.createElement("button",{onClick:()=>g(m)},p("blameOriginLine"),": ",m.path,":",m.originalLine):D.default.createElement("span",null,p("blameUnmapped")))))))),D.default.createElement("p",null,s.startLine||u,"\u2013",s.lines.at(-1)?.line||u," / ",s.totalLines??"\u2014"),D.default.createElement("button",{disabled:u===1,onClick:()=>x(Math.max(1,u-500))},p("blamePrevious")),D.default.createElement("button",{disabled:s.nextLine==null,onClick:()=>x(s.nextLine)},p("blameNext")),b&&D.default.createElement(Me,{key:JSON.stringify([b.commit,b.path,b.originalLine]),sessionId:e,repositoryId:t,commit:b.commit,path:b.path,line:b.originalLine,rpc:a,t:p,onRediscover:f,onClose:()=>g(null)})):D.default.createElement("p",{role:"status"},p("loading"))}function wt(e){let[t,o]=(0,D.useState)(!1);return D.default.createElement("div",null,D.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("blame")),t&&D.default.createElement(po,{...e}))}function Te(e){return I.default.createElement(uo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.parentIndex,e.base,e.target,e.id]),...e})}function uo({sessionId:e,repositoryId:t,commit:o,parentIndex:r,base:i,target:a,id:p,rpc:f,t:d,onRediscover:s,onSelectCommit:c}){let[h,w]=(0,I.useState)(null),[v,S]=(0,I.useState)(""),[u,x]=(0,I.useState)(0),[b,g]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{let m=new AbortController;return w(null),S(""),f(i?"vcs/revision-compare":"vcs/commit-compare",i?{sessionId:e,repositoryId:t,base:i,target:a,id:p,...b?{large:!0}:{}}:{sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p,...b?{large:!0}:{}},m.signal).then(y=>{m.signal.aborted||w(y)}).catch(y=>{m.signal.aborted||(S(y.message),y.code==="vcs/rediscover-required"&&s())}),()=>m.abort()},[e,t,o,r,i,a,p,u,b]),v?I.default.createElement("p",{role:"alert"},v," ",I.default.createElement("button",{onClick:()=>x(m=>m+1)},d("retry")),b&&I.default.createElement("button",{onClick:()=>g(!1)},d("largeClose"))):h?I.default.createElement("section",null,I.default.createElement("h4",null,h.path),I.default.createElement("p",null,h.left.label," \u2194 ",h.right.label),h.notice&&I.default.createElement("p",{role:"status"},h.notice),b?I.default.createElement("p",null,d("largeScope")," ",I.default.createElement("button",{onClick:()=>g(!1)},d("largeClose"))):h.notice?.includes("2 MiB")&&I.default.createElement("p",null,d("largeScope")," ",I.default.createElement("button",{onClick:()=>g(!0)},d("largeLoad"))),h.binary?I.default.createElement("p",null,d("binary")):I.default.createElement(le,{comparison:h,identity:JSON.stringify(i?[e,t,i,a,p]:[e,t,o,r,p]),t:d}),o&&!i&&I.default.createElement(xt,{onSelectCommit:c,key:"file-history:"+JSON.stringify([e,t,o,r,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p,rpc:f,t:d,onRediscover:s}),o&&!i&&I.default.createElement(wt,{onSelectCommit:c,key:"blame:"+JSON.stringify([e,t,o,r,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,id:p,rpc:f,t:d,onRediscover:s}),(o||i)&&I.default.createElement(Fe,{key:"image:"+JSON.stringify([e,t,o,r,i,a,p]),sessionId:e,repositoryId:t,commit:o,parentIndex:r,base:i,target:a,id:p,rpc:f,t:d,onRediscover:s})):I.default.createElement("p",{role:"status"},d("loading"),b&&I.default.createElement("button",{onClick:()=>g(!1)},d("largeClose")))}function sr(e,t){if(typeof t!="string"||!t)return null;let o=e.filter(r=>r.path===t);return o.length===1&&typeof o[0].id=="string"&&o[0].id?o[0].id:null}function nr(e,t=""){let o=t.trim().toLowerCase();return o?e.filter(r=>[r.id,r.author,r.subject].some(i=>i?.toLowerCase().includes(o))):e}function Qe(e,t=""){let o=t.trim().toLowerCase();return o?e.filter(r=>[r.path,r.oldPath].some(i=>i?.toLowerCase().includes(o))):e}function St(e){return T.default.createElement(fo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function fo({sessionId:e,repositoryId:t,commit:o,rpc:r,t:i,onRediscover:a,onSelectCommit:p,initialPath:f}){let d=(0,T.useRef)(!0),[s,c]=(0,T.useState)(null),[h,w]=(0,T.useState)(""),[v,S]=(0,T.useState)(0),[u,x]=(0,T.useState)(null),[b,g]=(0,T.useState)(""),[m,y]=(0,T.useState)(0);if((0,T.useEffect)(()=>{let O=new AbortController;return x(null),g(""),r("vcs/commit",{sessionId:e,repositoryId:t,commit:o,parentIndex:v},O.signal).then(E=>{O.signal.aborted||(x(E),d.current&&(d.current=!1,c(sr(E.changes,f))))}).catch(E=>{O.signal.aborted||(g(E.message),E.code==="vcs/rediscover-required"&&a())}),()=>O.abort()},[e,t,o,v,m]),b)return T.default.createElement("p",{role:"alert"},b," ",T.default.createElement("button",{onClick:()=>y(O=>O+1)},i("retry")));if(!u)return T.default.createElement("p",{role:"status"},i("loading"));let k=Qe(u.changes,h);return T.default.createElement("section",{"aria-label":i("commitDetails")},T.default.createElement("h3",null,u.subject),T.default.createElement("code",null,u.id),T.default.createElement("p",null,u.author," \xB7 ",u.date),u.messageTruncated&&T.default.createElement("p",{role:"status"},i("commitMessageLimit")),u.message&&T.default.createElement("pre",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",maxHeight:240,overflow:"auto"}},u.message),u.parents.length>1&&T.default.createElement("label",null,i("commitParent")," ",T.default.createElement("select",{"aria-label":i("commitParent"),value:v,onChange:O=>{c(null),x(null),S(Number(O.target.value))}},u.parents.map((O,E)=>T.default.createElement("option",{key:O,value:E},E+1,": ",O.slice(0,10))))),T.default.createElement("p",null,u.parent||i("commitRoot")," \u2192 ",u.id.slice(0,10)),T.default.createElement("label",null,i("commitFileSearch")," ",T.default.createElement("input",{"aria-label":i("commitFileSearch"),value:h,onChange:O=>{w(O.target.value),c(null)}})),T.default.createElement("span",null," ",k.length," / ",u.changes.length),T.default.createElement("ul",null,k.map(O=>T.default.createElement("li",{key:O.id},T.default.createElement("button",{"aria-pressed":s===O.id,onClick:()=>c(O.id)},O.status," \xB7 ",O.oldPath?O.oldPath+" \u2192 ":"",O.path)))),!!u.changes.length&&!k.length&&T.default.createElement("p",{role:"status"},i("emptySearch")),!u.changes.length&&T.default.createElement("p",null,i("commitNoChanges")),s&&T.default.createElement(Te,{key:s,sessionId:e,repositoryId:t,commit:o,parentIndex:v,id:s,onSelectCommit:p,rpc:r,t:i,onRediscover:a}),T.default.createElement(yt,{key:JSON.stringify([e,t,o]),sessionId:e,repositoryId:t,commit:o,rpc:r,t:i,onRediscover:a}))}var K=R(require("react"),1);function ar(e){if(!Array.isArray(e))throw new Error("Invalid graph commits");let t=e.slice(0,200),o=new Map,r=[],i=[],a=f=>typeof f=="string"&&/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(f);for(let[f,d]of t.entries()){if(!d||!a(d.id)||!Array.isArray(d.parents)||o.has(d.id))throw new Error("Invalid graph node");o.set(d.id,f),r.push({id:d.id,row:f})}let p=!1;for(let f of t){let d=new Set;for(let s of f.parents){if(i.length===1e3){p=!0;break}if(!a(s)||s.length!==f.id.length||s===f.id||d.has(s))throw new Error("Invalid graph parent");d.add(s);let c=o.get(s);if(c!==void 0&&c<=o.get(f.id))throw new Error("Graph requires child-before-parent order");i.push({from:f.id,to:s,missing:c===void 0})}if(p)break}return{nodes:r,edges:i,nodesTruncated:e.length>200,edgesTruncated:p}}function lr(e){let t=Array(32).fill(null),o=new Map,r=[],i=new Set,a=!1,p=s=>{if(i.has(s))return null;let c=t.indexOf(s);return c>=0?c:(c=t.indexOf(null),c<0?(a=!0,i.add(s),null):(t[c]=s,c))},f=new Map;for(let s of e.edges){if(s.missing)continue;let c=f.get(s.from)||[];c.push(s.to),f.set(s.from,c)}for(let s of e.nodes){let c=p(s.id);if(o.set(s.id,{...s,lane:c}),r.push({...s,lane:c}),c===null)continue;t[c]=null;let h=f.get(s.id)||[];for(let[w,v]of h.entries())t.includes(v)||(w===0&&t[c]===null?t[c]=v:p(v))}let d=e.edges.filter(s=>!s.missing).flatMap(s=>{let c=o.get(s.from),h=o.get(s.to);return c.lane===null||h.lane===null?[]:[{...s,start:c.row,end:h.row,fromLane:c.lane,toLane:h.lane}]});return{nodes:r,edges:d,lanesTruncated:a,laneCount:Math.max(1,...r.map(s=>(s.lane??0)+1))}}function mo({commits:e,selected:t,onSelect:o,t:r}){let i;try{i=ar(e)}catch{return K.default.createElement("p",{role:"alert"},r("graphInvalid"))}let a=lr(i),p=a.edges,f=Math.max(100,24+18*a.laneCount),d=Math.max(40,i.nodes.length*36);return K.default.createElement("section",{"aria-label":r("historyGraph")},K.default.createElement("p",null,r("graphScope")),a.lanesTruncated&&K.default.createElement("p",{role:"status"},r("graphLaneLimit")),(i.nodesTruncated||i.edgesTruncated)&&K.default.createElement("p",{role:"status"},r("graphLimit")),K.default.createElement("div",{style:{maxHeight:480,overflow:"auto",display:"flex"}},K.default.createElement("svg",{width:f,height:d,"aria-hidden":"true",style:{flexShrink:0}},p.map(s=>{let c=s.start*36+18,h=s.end*36+18,w=12+s.fromLane*18,v=12+s.toLane*18;return K.default.createElement("path",{key:s.from+s.to,d:"M "+w+" "+c+" C "+w+" "+(c+18)+", "+v+" "+(h-18)+", "+v+" "+h,fill:"none",stroke:"currentColor",opacity:"0.45"})}),a.nodes.filter(s=>s.lane!==null).map(s=>K.default.createElement("circle",{key:s.id,cx:12+s.lane*18,cy:s.row*36+18,r:"4",fill:"currentColor"}))),K.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},i.nodes.map(s=>K.default.createElement("li",{key:s.id,style:{height:36,whiteSpace:"nowrap"}},K.default.createElement("button",{title:s.id,"aria-current":t===s.id?!0:void 0,style:t===s.id?{fontWeight:700,textDecoration:"underline"}:void 0,onKeyDown:c=>{if(c.altKey||c.ctrlKey||c.metaKey||c.shiftKey)return;let h=c.key==="ArrowDown"?Math.min(s.row+1,i.nodes.length-1):c.key==="ArrowUp"?Math.max(0,s.row-1):c.key==="Home"?0:c.key==="End"?i.nodes.length-1:null;h!==null&&(c.preventDefault(),c.stopPropagation(),c.currentTarget.closest("ol").querySelectorAll("button")[h]?.focus())},onClick:()=>o(s.id)},K.default.createElement("code",null,s.id.slice(0,10))," ",e[s.row].subject))))),K.default.createElement("details",null,K.default.createElement("summary",null,r("graphRelations")),K.default.createElement("ul",null,i.edges.map(s=>K.default.createElement("li",{key:s.from+s.to},K.default.createElement("code",null,s.from)," \u2192 ",K.default.createElement("code",null,s.to),s.missing?" \xB7 "+r("graphMissing"):"")))))}function kt(e){let[t,o]=(0,K.useState)(!1);return K.default.createElement("div",null,K.default.createElement("button",{"aria-expanded":t,onClick:()=>o(r=>!r)},e.t("historyGraph")),t&&K.default.createElement(mo,{...e}))}var P=R(require("react"),1);function ho({sessionId:e,repositoryId:t,base:o,target:r,rpc:i,t:a,onRediscover:p}){let[f,d]=(0,P.useState)(null),[s,c]=(0,P.useState)(""),[h,w]=(0,P.useState)(0),[v,S]=(0,P.useState)(null),[u,x]=(0,P.useState)("");if((0,P.useEffect)(()=>{let g=new AbortController;return d(null),c(""),S(null),i("vcs/revision-changes",{sessionId:e,repositoryId:t,base:o,target:r},g.signal).then(m=>{g.signal.aborted||d(m)}).catch(m=>{g.signal.aborted||(c(m.message),m.code==="vcs/rediscover-required"&&p())}),()=>g.abort()},[e,t,o,r,h]),s)return P.default.createElement("p",{role:"alert"},s," ",P.default.createElement("button",{onClick:()=>w(g=>g+1)},a("retry")));if(!f)return P.default.createElement("p",{role:"status"},a("loading"));let b=Qe(f.changes,u);return P.default.createElement("div",null,P.default.createElement("label",null,a("commitFileSearch")," ",P.default.createElement("input",{"aria-label":a("commitFileSearch"),value:u,onChange:g=>{x(g.target.value),S(null)}})),P.default.createElement("span",null," ",b.length," / ",f.changes.length),!!f.changes.length&&!b.length&&P.default.createElement("p",{role:"status"},a("emptySearch")),!f.changes.length&&P.default.createElement("p",null,a("revisionEmpty")),P.default.createElement("ul",null,b.map(g=>P.default.createElement("li",{key:g.id},P.default.createElement("button",{"aria-pressed":v===g.id,onClick:()=>S(g.id)},g.status," \xB7 ",g.oldPath?g.oldPath+" \u2192 ":"",g.path)))),v&&P.default.createElement(Te,{key:v,sessionId:e,repositoryId:t,base:o,target:r,id:v,rpc:i,t:a,onRediscover:p}))}function Ct(e){return P.default.createElement(go,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function go({commits:e,sessionId:t,repositoryId:o,rpc:r,t:i,onRediscover:a,onReferencesLoaded:p}){let[f,d]=(0,P.useState)(""),[s,c]=(0,P.useState)(""),[h,w]=(0,P.useState)([]),[v,S]=(0,P.useState)(!1),[u,x]=(0,P.useState)(0),[b,g]=(0,P.useState)(!1),[m,y]=(0,P.useState)("");return(0,P.useEffect)(()=>{if(!u)return;let k=new AbortController;return g(!0),y(""),r("vcs/references",{sessionId:t,repositoryId:o},k.signal).then(O=>{k.signal.aborted||(w(O.references),S(!0),p?.(O.references))}).catch(O=>{k.signal.aborted||(y(O.message),O.code==="vcs/rediscover-required"&&a())}).finally(()=>{k.signal.aborted||g(!1)}),()=>k.abort()},[t,o,u]),P.default.createElement("section",{"aria-label":i("revisionTitle")},P.default.createElement("h3",null,i("revisionTitle")),P.default.createElement("p",null,i("revisionScope")),P.default.createElement("button",{disabled:b,onClick:()=>x(k=>k+1)},i("revisionLoadRefs")),P.default.createElement("p",null,i("revisionRefsScope")),v&&!b&&!m&&P.default.createElement("p",{role:"status"},h.length?`${i("revisionRefsCount")}: ${h.length}`:i("revisionRefsEmpty")),b&&P.default.createElement("p",{role:"status"},i("loading")),m&&P.default.createElement("p",{role:"alert"},m),[[f,d,"revisionBase"],[s,c,"revisionTarget"]].map(([k,O,E])=>P.default.createElement("label",{key:E},i(E)," ",P.default.createElement("select",{"aria-label":i(E),value:k,onChange:q=>O(q.target.value)},P.default.createElement("option",{value:""},"\u2014"),!!e.length&&P.default.createElement("optgroup",{label:i("revisionLoadedCommits")},e.map(q=>P.default.createElement("option",{key:q.id,value:q.id},q.id.slice(0,10)," \xB7 ",q.subject))),!!h.length&&P.default.createElement("optgroup",{label:i("revisionLocalRefs")},h.map(q=>P.default.createElement("option",{key:q.name,value:q.commit},q.name," \xB7 ",q.commit.slice(0,10)))),k&&!e.some(q=>q.id===k)&&!h.some(q=>q.commit===k)&&P.default.createElement("option",{value:k},k)))),P.default.createElement("button",{disabled:!f||!s,onClick:()=>{d(s),c(f)}},i("revisionSwap")),P.default.createElement("p",{style:{overflowWrap:"anywhere"}},P.default.createElement("code",null,f||"\u2014")," \u2192 ",P.default.createElement("code",null,s||"\u2014")),f&&s&&P.default.createElement(ho,{key:JSON.stringify([t,o,f,s]),sessionId:t,repositoryId:o,base:f,target:s,rpc:r,t:i,onRediscover:a}))}function dr(e,t,o){let r=o?[...e.commits.filter(i=>!t.commits.some(a=>a.id===i.id)),...t.commits]:t.commits;return{...t,windowEnd:o+t.commits.length,commits:r.slice(-200)}}function Nt(e){return C.default.createElement(vo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function vo({sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:i}){let[a,p]=(0,C.useState)({id:null,path:null,revision:0}),[f,d]=(0,C.useState)(""),[s,c]=(0,C.useState)(null),[h,w]=(0,C.useState)(""),[v,S]=(0,C.useState)(""),u=L=>{let Z=(s||[]).find(ee=>JSON.stringify([ee.name,ee.commit])===L)?.commit||"";S(L),w(Z),m(ee=>ee?{...ee,snapshot:Z||null}:null),de(0),d(""),q(null),ge({commits:[],snapshot:null,nextOffset:null})},[x,b]=(0,C.useState)({message:"",author:"",path:""}),[g,m]=(0,C.useState)(null),y=L=>{m({values:L,snapshot:_.snapshot}),de(0),d(""),q(null),ge(Y=>({...Y,commits:[],nextOffset:null}))},k=(0,C.useMemo)(()=>rr(s||[]),[s]),O=a.id,E=(L,Y=null)=>p(Z=>({id:L,path:Y,revision:Z.revision+1})),q=(L,Y=null)=>p(Z=>({id:L,path:Y,revision:Z.revision+(Y||Z.path?1:0)})),[_,ge]=(0,C.useState)({commits:[],snapshot:null,nextOffset:null}),[J,de]=(0,C.useState)(0),[H,ce]=(0,C.useState)(0),[re,Ce]=(0,C.useState)(!0),[ve,Ne]=(0,C.useState)("");(0,C.useEffect)(()=>{let L=new AbortController;return Ce(!0),Ne(""),o("vcs/history",{sessionId:e,repositoryId:t,offset:J,limit:50,...g?{search:g.values}:{},...g?.snapshot||h||J?{snapshot:g?.snapshot||h||_.snapshot}:{}},L.signal).then(Y=>{L.signal.aborted||(ge(Z=>dr(Z,Y,J)),J>=200&&(q(null),d("")))}).catch(Y=>{L.signal.aborted||(Ne(Y.message),Y.code==="vcs/rediscover-required"&&i())}).finally(()=>{L.signal.aborted||Ce(!1)}),()=>L.abort()},[e,t,J,H,g,h]);let se=nr(_.commits,f);return C.default.createElement("section",{className:"vcs-history","aria-label":r("history"),"aria-busy":re},C.default.createElement("div",{className:"vcs-history-list"},C.default.createElement("p",null,r("historyListOnly")),s!==null&&C.default.createElement("p",null,r("historyRefsScope")),C.default.createElement("label",null,r("historyBranch")," ",C.default.createElement("select",{"aria-label":r("historyBranch"),value:v,disabled:re,onChange:L=>u(L.target.value)},C.default.createElement("option",{value:""},"HEAD"),v&&!(s||[]).some(L=>JSON.stringify([L.name,L.commit])===v)&&C.default.createElement("option",{value:v},JSON.parse(v)[0]," \xB7 ",h.slice(0,10)," \xB7 ",r("historyPinned")),(s||[]).map(L=>{let Y=JSON.stringify([L.name,L.commit]);return C.default.createElement("option",{key:Y,value:Y},L.name," \xB7 ",L.commit.slice(0,10))}))),C.default.createElement("p",null,r("historyBranchScope"),h&&C.default.createElement(C.default.Fragment,null," \xB7 ",C.default.createElement("code",null,h))),C.default.createElement("form",{"aria-label":r("historyServerSearch"),onSubmit:L=>{L.preventDefault(),y({...x})}},C.default.createElement("fieldset",{disabled:re},C.default.createElement("legend",null,r("historyServerSearch")),C.default.createElement("p",null,r("historyServerScope")),["message","author","path"].map(L=>C.default.createElement("label",{key:L},r("historyServer_"+L)," ",C.default.createElement("input",{maxLength:1024,"aria-label":r("historyServer_"+L),value:x[L],onChange:Y=>b(Z=>({...Z,[L]:Y.target.value}))}))),C.default.createElement("button",{type:"submit"},r("historyServerApply")),C.default.createElement("button",{type:"button",onClick:()=>{b({message:"",author:"",path:""}),y({})}},r("historyServerClear")))),g&&C.default.createElement("p",{role:"status"},r("historyServerActive"),": ",JSON.stringify(g.values)," \xB7 ",C.default.createElement("code",null,g.snapshot||_.snapshot)),C.default.createElement("label",null,r("historySearch")," ",C.default.createElement("input",{"aria-label":r("historySearch"),value:f,onChange:L=>{d(L.target.value),q(null)}})),C.default.createElement("span",null," ",se.length," / ",_.commits.length),!!_.commits.length&&C.default.createElement("p",{role:"status"},r("historyWindow"),": ",Math.max(0,(_.windowEnd??_.commits.length)-_.commits.length),"\u2013",_.windowEnd??_.commits.length," \xB7 ",r("historyWindowScope")),!!_.commits.length&&!se.length&&C.default.createElement("p",{role:"status"},r("historyNoMatch")),C.default.createElement("ol",null,se.map(L=>C.default.createElement("li",{key:L.id},C.default.createElement("button",{"aria-pressed":O===L.id,onClick:()=>q(L.id)},L.subject),C.default.createElement("div",null,C.default.createElement("code",{title:L.id},L.id.slice(0,10))," \xB7 ",L.author," \xB7 ",C.default.createElement("time",{dateTime:L.date},L.date)),k.has(L.id)&&C.default.createElement("div",{"aria-label":r("historyRefsLabel"),style:{overflowWrap:"anywhere"}},k.get(L.id).names.map(Y=>C.default.createElement("span",{key:Y},C.default.createElement("code",null,Y)," ")),k.get(L.id).hidden>0&&C.default.createElement("span",null,r("historyRefsMore"),": ",k.get(L.id).hidden))))),re&&C.default.createElement("p",{role:"status"},r("loading")),ve&&C.default.createElement("p",{role:"alert"},ve," ",C.default.createElement("button",{onClick:()=>ce(L=>L+1)},r("retry"))),!re&&!ve&&!_.commits.length&&C.default.createElement("p",null,r("historyEmpty")),_.truncated&&C.default.createElement("p",{role:"status"},r("historyLimit")),!ve&&_.nextOffset!==null&&C.default.createElement("button",{disabled:re,onClick:()=>de(_.nextOffset)},r("historyMore")),!!_.commits.length&&C.default.createElement(kt,{commits:_.commits,selected:O,onSelect:q,t:r}),C.default.createElement(Ct,{onReferencesLoaded:c,commits:_.commits,sessionId:e,repositoryId:t,rpc:o,t:r,onRediscover:i})),C.default.createElement("div",{className:"vcs-history-details"},O&&C.default.createElement(St,{key:JSON.stringify([O,a.revision]),initialPath:a.path,sessionId:e,repositoryId:t,commit:O,onSelectCommit:E,rpc:o,t:r,onRediscover:i})))}var cr={zh:{svnOfferExpired:"\u7F51\u7EDC\u8BBF\u95EE\u63D0\u6848\u5DF2\u8FC7\u671F\uFF1B\u8BF7\u624B\u52A8\u91CD\u8BD5\uFF0C\u5E76\u91CD\u65B0\u52FE\u9009\u540C\u610F\u3002",svnExpired:"SVN \u7F51\u7EDC\u6388\u6743\u5DF2\u8FC7\u671F\uFF0C\u5386\u53F2\u8BF7\u6C42\u5DF2\u505C\u6B62\uFF1B\u8BF7\u91CD\u65B0\u5BA1\u9605\u5E76\u540C\u610F\u3002",svnConsentReview:"\u5BA1\u9605 SVN \u7F51\u7EDC\u8BBF\u95EE\u8303\u56F4",svnConsentScope:"\u540C\u610F\u524D\u4EC5\u8BFB\u53D6\u672C\u5730\u8EAB\u4EFD\u3002\u6388\u6743\u53EA\u9002\u7528\u4E8E\u6240\u5217\u4ED3\u5E93\u3001Session \u4E0E\u76EE\u5F55\uFF0C\u4E94\u5206\u949F\u6709\u6548\uFF1B\u4E0D\u6388\u6743\u91CD\u5B9A\u5411\u6216\u5199\u64CD\u4F5C\u3002",svnConsentExplicit:"\u6211\u540C\u610F\u8BBF\u95EE\u4EE5\u4E0A HTTPS SVN \u4ED3\u5E93",svnConsentApprove:"\u540C\u610F\u5E76\u8BFB\u53D6\u5386\u53F2",svnHistoryScope:"\u56FA\u5B9A\u672C\u5730 revision \u5FEB\u7167\u7684 SVN \u5386\u53F2\uFF1B\u5206\u9875\u66FF\u6362\u663E\u793A",svnHistoricalDiff:"\u5386\u53F2\u53EA\u8BFB Diff",svnTraceScope:"\u6587\u4EF6\u8FFD\u6EAF\u5728\u590D\u5236\u8FB9\u754C\u505C\u6B62\uFF0C\u4E0D\u8DDF\u968F\u8303\u56F4\u5916\u6765\u6E90",svnGrantScope:"\u7F51\u7EDC\u6388\u6743\u4E94\u5206\u949F\u6709\u6548\uFF1B\u53EF\u968F\u65F6\u64A4\u9500\uFF0C\u5386\u53F2\u64CD\u4F5C\u4E0D\u4FEE\u6539\u5DE5\u4F5C\u526F\u672C\u3002",svnRevoke:"\u64A4\u9500 SVN \u7F51\u7EDC\u6388\u6743",svnIdentity:"\u67E5\u770B SVN \u672C\u5730\u5386\u53F2\u8BBF\u95EE\u8EAB\u4EFD",svnOfflineIdentity:"\u4EC5\u4ECE\u6388\u6743\u5DE5\u4F5C\u526F\u672C\u8BFB\u53D6\u672C\u5730\u5143\u6570\u636E\uFF0C\u4E0D\u53D1\u8D77\u8FDC\u7A0B\u8BF7\u6C42\u3002",svnRemoteDisabled:"\u8FDC\u7A0B SVN \u5386\u53F2\u4F20\u8F93\u5C1A\u672A\u542F\u7528\uFF1B\u6CA1\u6709\u7F51\u7EDC\u6388\u6743\u6216\u53EF\u7528\u8BBF\u95EE\u51ED\u636E\u3002\u672C\u9875\u4E0D\u662F\u5DF2\u6388\u6743\u5386\u53F2\u5165\u53E3\u3002",historyWindow:"\u5DF2\u52A0\u8F7D\u5386\u53F2\u7A97\u53E3\uFF08\u5E8F\u53F7\u5DE6\u95ED\u53F3\u5F00\uFF09",historyWindowScope:"\u5217\u8868\u53CA\u56FE\u6700\u591A\u4FDD\u7559200\u6761\uFF1B\u7EE7\u7EED\u52A0\u8F7D\u66FF\u6362\u8F83\u65B0\u884C\uFF0C\u8DE8\u7A97\u53E3\u8FB9\u4E0D\u8868\u793A\u5B8C\u6574\u56FE\u3002\u5C40\u90E8\u7B5B\u9009\u4EC5\u5F53\u524D\u7A97\u53E3\u3002",segments:"\u5206\u6BB5\u6D4F\u89C8\u5386\u53F2\u6B63\u6587",segmentBytes:"\u5B57\u8282\u8303\u56F4\uFF08\u5DE6\u95ED\u53F3\u5F00\uFF09",segmentScope:"\u4EC5\u56FA\u5B9A\u5386\u53F2 UTF-8 \u666E\u901A\u6587\u4EF6\uFF0C\u6700\u5927 16 MiB\uFF1B\u6BCF\u7247\u6700\u591A 64 KiB\uFF0C\u66FF\u6362\u663E\u793A\u4E0D\u7D2F\u79EF\u3002\u7247\u6BB5\u884C\u53F7\u4E0D\u662F\u539F\u6587\u4EF6\u884C\u53F7\uFF0C\u4E0D\u662F\u5168\u6587\u4EF6 Diff\u3002",blameOriginLine:"\u67E5\u770B\u6765\u6E90\u5386\u53F2\u884C",blameUnmapped:"\u65E0\u6CD5\u7CBE\u786E\u5B9A\u4F4D\u6765\u6E90\u884C",blamePrevious:"\u4E0A\u4E00\u884C\u9875",blameNext:"\u4E0B\u4E00\u884C\u9875",fileHistoryMergeBoundary:"\u8EAB\u4EFD\u8FB9\u754C\uFF1A\u5408\u5E76\u63D0\u4EA4\uFF0C\u6B64\u5904\u505C\u6B62\uFF0C\u4E0D\u63A8\u65AD\u591A\u7236\u6765\u6E90",fileHistoryBoundary:"\u8EAB\u4EFD\u8FB9\u754C\uFF1A\u590D\u5236\u6216\u975E\u7CBE\u786E\u91CD\u547D\u540D\uFF0C\u6B64\u5904\u505C\u6B62",fileHistoryFollow:"\u8DDF\u968F\u5185\u5BB9\u76F8\u540C\u7684\u91CD\u547D\u540D\uFF08\u7B2C\u4E00\u7236\u94FE\uFF09",fileHistoryFollowScope:"\u4EC5\u8DDF\u968FGit\u68C0\u51FA\u7684100%\u91CD\u547D\u540D\uFF1B\u4E0D\u63A8\u65AD\u76F8\u4F3C\u5185\u5BB9\u3001\u590D\u5236\u6216\u5408\u5E76\u591A\u7236\u6765\u6E90\u3002\u65B0\u589E\u6587\u4EF6\u5904\u505C\u6B62\uFF0C\u53D7\u8F93\u51FA/\u65F6\u95F4\u9650\u5236\uFF1B\u6BCF\u6761\u8BB0\u5F55\u6309\u5F53\u65F6\u8DEF\u5F84\u5B9A\u4F4D\u3002",graphLaneLimit:"\u6CF3\u9053\u6700\u591A32\u6761\uFF1B\u8D85\u51FA\u90E8\u5206\u7701\u7565\u56FE\u5F62\uFF0C\u5B8C\u6574\u5DF2\u52A0\u8F7D\u8282\u70B9\u4E0E\u5173\u7CFB\u4ECD\u53EF\u5728\u6587\u5B57\u4E2D\u67E5\u770B\u3002",historyBranch:"\u5386\u53F2\u8D77\u70B9\uFF08\u672C\u5730\u5F15\u7528\uFF09",historyPinned:"\u56FA\u5B9A\u5FEB\u7167",historyBranchScope:"\u5F15\u7528\u7531\u4E0B\u65B9\u624B\u52A8\u52A0\u8F7D\uFF1B\u9009\u62E9\u540E\u56FA\u5B9A\u8BE5\u6B21OID\uFF0C\u5237\u65B0\u5F15\u7528\u4E0D\u4F1A\u79FB\u52A8\u5386\u53F2\u8D77\u70B9\u3002\u9009\u62E9HEAD\u91CD\u65B0\u8BFB\u53D6\u5F53\u524DHEAD\uFF0C\u4E0D\u5207\u6362\u5DE5\u4F5C\u533A\u3002",historyServerSearch:"\u5168\u5386\u53F2\u67E5\u8BE2",historyServerScope:"\u67E5\u8BE2\u56FA\u5B9A\u5FEB\u7167\u53EF\u8FBE\u7684\u5B8C\u6574\u5386\u53F2\uFF1B\u8BF4\u660E/\u4F5C\u8005\u4E3A\u5FFD\u7565\u5927\u5C0F\u5199\u7684\u5B57\u9762\u5339\u914D\uFF0C\u8DEF\u5F84\u4E3A\u7CBE\u786E\u8DEF\u5F84\u6216\u76EE\u5F55\uFF0C\u4E0D\u8FFD\u8E2A\u91CD\u547D\u540D\u3002\u5206\u9875\u4E0E\u8FD0\u884C\u65F6\u95F4\u6709\u754C\u3002",historyServer_message:"\u63D0\u4EA4\u8BF4\u660E",historyServer_author:"\u4F5C\u8005",historyServer_path:"\u8DEF\u5F84",historyServerApply:"\u6267\u884C\u67E5\u8BE2",historyServerClear:"\u6E05\u9664\u67E5\u8BE2",historyServerActive:"\u5F53\u524D\u5DF2\u63D0\u4EA4\u67E5\u8BE2",reviewView:"\u5BA1\u9605\u89C6\u56FE",workspaceView:"\u5DE5\u4F5C\u533A\u6539\u52A8",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",textBefore:"\u4FEE\u6539\u524D",textAfter:"\u4FEE\u6539\u540E",textReadonly:"\u53EA\u8BFB\u6587\u672C\u6BD4\u8F83",textEmpty:"\u4E24\u4E2A\u7248\u672C\u5747\u4E3A\u7A7A\u3002",commitDetails:"\u63D0\u4EA4\u8BE6\u60C5",commitFileSearch:"\u7B5B\u9009\u672C\u6B21\u63D0\u4EA4\u6587\u4EF6",commitParent:"\u6BD4\u8F83\u7236\u63D0\u4EA4",commitRoot:"\u7A7A\u57FA\u7EBF\uFF08\u6839\u63D0\u4EA4\uFF09",commitNoChanges:"\u76F8\u5BF9\u6B64\u57FA\u7EBF\u65E0\u6587\u4EF6\u53D8\u66F4",history:"\u63D0\u4EA4\u5386\u53F2",largeLoad:"\u52A0\u8F7D\u5B8C\u6574\u5927\u6587\u4EF6\u6BD4\u8F83",largeClose:"\u53D6\u6D88\u5927\u6587\u4EF6\u6A21\u5F0F",largeScope:"\u4EC5Git\u5386\u53F2UTF-8\u666E\u901A\u6587\u4EF6\uFF0C\u6BCF\u4FA7\u6700\u591A8MiB\u300110\u4E07\u884C\uFF1B\u4E0D\u662F\u5DE5\u4F5C\u533A\u6216SVN\u5927\u6587\u4EF6\u3002",diffPending:"\u6B63\u5728\u8BA1\u7B97\u5DEE\u5F02\uFF0C\u5C1A\u4E0D\u80FD\u5224\u65AD\u662F\u5426\u76F8\u540C\u3002",diffIncomplete:"\u5DEE\u5F02\u8BA1\u7B97\u672A\u5B8C\u6210\u6216\u8D85\u65F6\uFF0C\u5F53\u524D\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574\u3002",diffComplete:"\u5DEE\u5F02\u8BA1\u7B97\u5B8C\u6210\u3002",largeFallback:"\u57FA\u7840\u89C6\u56FE\u53EA\u5C55\u793A\u6709\u754C\u7247\u6BB5\uFF0C\u4E0D\u4EE3\u8868\u5B8C\u6574\u5927\u6587\u4EF6\u5DEE\u5F02\u3002",historyAdvanced:"\u52A0\u8F7D\u9AD8\u7EA7\u53EA\u8BFB Diff",historyBasic:"\u8FD4\u56DE\u57FA\u7840\u6587\u672C Diff",historyListOnly:"\u672C\u5730 HEAD \u5386\u53F2\uFF1B\u9009\u62E9\u63D0\u4EA4\u53CA\u6587\u4EF6\u67E5\u770B\u53EA\u8BFB\u6587\u672C\u5DEE\u5F02\u3002",historyEmpty:"\u5C1A\u65E0\u63D0\u4EA4",historyRefsScope:"\u6807\u8BB0\u6765\u81EA\u6700\u8FD1\u4E00\u6B21\u624B\u52A8\u52A0\u8F7D\u7684\u672C\u5730\u5F15\u7528\uFF0C\u4E0D\u4EE3\u8868\u63D0\u4EA4\u521B\u5EFA\u65F6\u7684\u5206\u652F\u72B6\u6001\uFF1B\u5237\u65B0\u5931\u8D25\u65F6\u4FDD\u7559\u4E0A\u6B21\u6210\u529F\u7ED3\u679C\u3002",historyRefsLabel:"\u5DF2\u52A0\u8F7D\u672C\u5730\u5F15\u7528",historyRefsMore:"\u5176\u4ED6\u5F15\u7528",historySearch:"\u7B5B\u9009\u5DF2\u52A0\u8F7D\u63D0\u4EA4\uFF08\u4F5C\u8005 / \u6458\u8981 / SHA\uFF09",historyNoMatch:"\u5DF2\u52A0\u8F7D\u63D0\u4EA4\u4E2D\u65E0\u5339\u914D\u9879\uFF1B\u53EF\u7EE7\u7EED\u52A0\u8F7D\u66F4\u591A\u3002",historyMore:"\u52A0\u8F7D\u66F4\u591A\u63D0\u4EA4",historyLimit:"\u5DF2\u8FBE\u5230\u5386\u53F2\u6D4F\u89C8\u8303\u56F4\u4E0A\u9650\uFF0C\u4ECD\u6709\u66F4\u65E9\u63D0\u4EA4\u672A\u663E\u793A\u3002",autoRefresh:"\u624B\u52A8\u6216\u7A97\u53E3\u805A\u7126\u65F6\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",revisionTitle:"\u672C\u5730\u7248\u672C A/B \u6BD4\u8F83",revisionScope:"\u53EF\u9009\u62E9\u5DF2\u52A0\u8F7D\u7684\u63D0\u4EA4\uFF0C\u6216\u624B\u52A8\u52A0\u8F7D\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E\uFF1B\u76F4\u63A5\u6BD4\u8F83 A \u2192 B\uFF0C\u4E0D\u4F7F\u7528\u5408\u5E76\u57FA\u70B9\u3002",revisionBase:"A\uFF08\u5DE6\u4FA7\uFF09",revisionTarget:"B\uFF08\u53F3\u4FA7\uFF09",revisionSwap:"\u4EA4\u6362 A/B",revisionEmpty:"\u4E24\u4E2A\u7248\u672C\u6CA1\u6709\u6587\u4EF6\u53D8\u66F4\u3002",fileHistory:"\u8DEF\u5F84\u5386\u53F2",fileHistoryScope:"\u56FA\u5B9A\u63D0\u4EA4\u5FEB\u7167\u4E0B\u7684\u7CBE\u786E\u8DEF\u5F84\u5386\u53F2\uFF1B\u4E0D\u8FFD\u8E2A\u91CD\u547D\u540D\u524D\u8DEF\u5F84\uFF0C\u5305\u542B\u540C\u8DEF\u5F84\u5220\u9664\u540E\u91CD\u5EFA\u3002\u70B9\u51FB\u63D0\u4EA4\u540E\uFF0C\u4EC5\u5728\u76F8\u5BF9\u9996\u4E2A\u7236\u63D0\u4EA4\uFF08\u6839\u63D0\u4EA4\u4E3A\u7A7A\u6811\uFF09\u7684\u53D8\u66F4\u4E2D\u552F\u4E00\u5339\u914D\u540C\u8DEF\u5F84\u65F6\u6253\u5F00 Diff\uFF1B\u5426\u5219\u53EA\u663E\u793A\u8BE6\u60C5\u3002",blame:"\u884C\u5F52\u5C5E\uFF08Blame\uFF09",blameNavigation:"\u70B9\u51FB\u5F52\u5C5E\u63D0\u4EA4\u67E5\u770B\u8BE6\u60C5\uFF1B\u9ED8\u8BA4\u9009\u62E9\u9996\u4E2A\u7236\u63D0\u4EA4\uFF0C\u4E0D\u81EA\u52A8\u5B9A\u4F4D\u5386\u53F2\u6587\u4EF6\u6216\u884C\u53F7\u3002",blameScope:"\u6240\u9009\u63D0\u4EA4\u7684 UTF-8 \u666E\u901A\u6587\u672C\uFF0C\u6700\u591A\u663E\u793A\u524D 500 \u884C\uFF1B\u4E0D\u5305\u542B\u5DE5\u4F5C\u533A\u4FEE\u6539\u3002",blameLimit:"\u4EC5\u663E\u793A\u524D 500 \u884C\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\u3002",blameEmpty:"\u6587\u4EF6\u6CA1\u6709\u53EF\u663E\u793A\u7684\u884C\u3002",blameLine:"\u884C\u53F7",blameCommit:"\u5F52\u5C5E\u63D0\u4EA4",blameAuthor:"\u4F5C\u8005",blameSummary:"\u63D0\u4EA4\u6458\u8981",blameSource:"\u6E90\u7801",historicalTree:"\u5386\u53F2\u76EE\u5F55",historicalTreeScope:"\u6240\u9009\u63D0\u4EA4\u7684\u76EE\u5F55\u6761\u76EE\uFF1B\u6BCF\u9875 100 \u9879\u3002\u70B9\u51FB\u666E\u901A\u6587\u4EF6\u53EA\u8BFB\u9884\u89C8\uFF1B\u4E0D\u8DDF\u968F\u7B26\u53F7\u94FE\u63A5\u6216\u5B50\u6A21\u5757\u3002",treePreview:"\u5386\u53F2\u6587\u4EF6\u9884\u89C8",treeClose:"\u5173\u95ED\u6587\u4EF6\u9884\u89C8",treeEmpty:"\u7A7A\u6587\u4EF6\u6216\u65E0\u53EF\u663E\u793A\u7684\u6587\u672C\u3002",treeSearch:"\u7B5B\u9009\u5F53\u524D\u76EE\u5F55\u540D\u79F0",treeBreadcrumbs:"\u5386\u53F2\u76EE\u5F55\u8DEF\u5F84",treeUp:"\u4E0A\u7EA7\u76EE\u5F55",treeEntries:"\u4E2A\u6761\u76EE",treePrevious:"\u4E0A\u4E00\u9875",treeNext:"\u4E0B\u4E00\u9875",historyGraph:"\u5C40\u90E8\u63D0\u4EA4\u56FE",graphScope:"\u4EC5\u5C55\u793A\u5DF2\u52A0\u8F7D\u5386\u53F2\u7684\u524D 200 \u4E2A\u63D0\u4EA4\uFF0C\u6700\u591A 1000 \u6761\u7236\u5B50\u8FB9\uFF1B\u4E0D\u53D7\u6587\u672C\u7B5B\u9009\u5F71\u54CD\uFF0C\u4E0D\u4EE3\u8868\u5B8C\u6574\u5206\u652F\u56FE\u3002\u8282\u70B9\u70B9\u51FB\u53EF\u67E5\u770B\u8BE6\u60C5\u3002",graphLimit:"\u56FE\u5DF2\u8FBE\u5230\u8282\u70B9\u6216\u8FB9\u4E0A\u9650\uFF0C\u90E8\u5206\u5173\u7CFB\u672A\u5C55\u793A\u3002",graphMissing:"\u7236\u63D0\u4EA4\u672A\u5728\u5F53\u524D\u56FE\u4E2D",graphRelations:"\u7236\u5B50\u5173\u7CFB\uFF08\u6587\u672C\uFF09",graphInvalid:"\u5F53\u524D\u63D0\u4EA4\u987A\u5E8F\u65E0\u6CD5\u7ED8\u56FE\uFF1B\u8BF7\u4F7F\u7528\u5386\u53F2\u5217\u8868\u3002",imageCompare:"PNG \u56FE\u7247\u6BD4\u8F83",imageBefore:"\u6240\u9009\u7236\u63D0\u4EA4",imageAfter:"\u6240\u9009\u63D0\u4EA4",imageAbsent:"\u6B64\u4FA7\u6CA1\u6709\u6587\u4EF6\u3002",imageInvalid:"\u56FE\u7247\u54CD\u5E94\u65E0\u6548\u3002",imageMetadata:"\u9884\u89C8\u5DF2\u79FB\u9664\u9644\u52A0\u5143\u6570\u636E\u3002",imageScope:"\u652F\u6301\u975E\u4EA4\u9519\u9759\u6001 PNG \u4E0E 8 \u4F4D\u5355\u626B\u63CF baseline JPEG \u666E\u901A\u6587\u4EF6\uFF0C\u4EE5\u53CA\u5355\u5757 simple \u9759\u6001 WebP\uFF08\u4E0D\u652F\u6301\u6E10\u8FDB\u5F0F/CMYK JPEG\u3001\u6269\u5C55/\u52A8\u753B WebP\uFF09\uFF1B\u6BCF\u4FA7\u6700\u591A 2 MiB\u30011600 \u4E07\u50CF\u7D20\u3002\u5143\u6570\u636E\u88AB\u79FB\u9664\uFF0C\u4E0D\u9002\u7528\u4E8E\u8272\u5F69\u7CBE\u786E\u6027\u5BA1\u9605\u3002\u652F\u6301\u5386\u53F2\u63D0\u4EA4\u3001\u56FA\u5B9A A/B \u53CA Git \u5DE5\u4F5C\u533A\uFF1B\u6309\u6240\u9009\u6A21\u5F0F\u8BFB\u53D6 HEAD\u3001\u6682\u5B58\u533A\u6216\u5DE5\u4F5C\u6587\u4EF6\u3002\u51B2\u7A81\u56FE\u7247\u4E0D\u652F\u6301\u3002",commitMessageLimit:"\u5B8C\u6574\u63D0\u4EA4\u8BF4\u660E\u8D85\u8FC7 2 MiB \u9884\u89C8\u4E0A\u9650\uFF0C\u5DF2\u7701\u7565\u3002",revisionLoadRefs:"\u52A0\u8F7D / \u5237\u65B0\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E",revisionRefsScope:"\u4EC5\u672C\u5730\u5206\u652F\u548C\u6307\u5411\u63D0\u4EA4\u7684\u6807\u7B7E\uFF0C\u6700\u591A 1000 \u6761\uFF1B\u4E0D fetch\u3002\u9009\u62E9\u56FA\u5B9A\u4E3A\u52A0\u8F7D\u65F6\u7684\u63D0\u4EA4 OID\uFF1B\u5237\u65B0\u5F15\u7528\u4E0D\u4F1A\u79FB\u52A8\u5DF2\u9009\u7248\u672C\u3002",revisionRefsEmpty:"\u6CA1\u6709\u53EF\u7528\u7684\u672C\u5730\u5206\u652F\u6216\u63D0\u4EA4\u6807\u7B7E\u3002",revisionLoadedCommits:"\u5DF2\u52A0\u8F7D\u7684\u63D0\u4EA4",revisionLocalRefs:"\u672C\u5730\u5206\u652F\u4E0E\u6807\u7B7E",revisionRefsCount:"\u5DF2\u52A0\u8F7D\u53EF\u9009\u5F15\u7528"},en:{svnOfferExpired:"Network access offer expired. Retry manually and check consent again.",svnExpired:"SVN network consent expired; history requests stopped. Review and consent again.",svnConsentReview:"Review SVN network access",svnConsentScope:"Before consent, read local identity only. Access binds this repository, Session and cwd for five minutes; redirects and writes are not authorized.",svnConsentExplicit:"I consent to access the HTTPS SVN repository above",svnConsentApprove:"Consent and read history",svnHistoryScope:"SVN history at a fixed local revision snapshot; pages replace displayed rows",svnHistoricalDiff:"Historical read-only Diff",svnTraceScope:"File trace stops at copy boundaries and does not follow out-of-scope sources",svnGrantScope:"Network consent lasts five minutes; revoke at any time. History operations do not modify the working copy.",svnRevoke:"Revoke SVN network consent",svnIdentity:"Inspect local SVN history identity",svnOfflineIdentity:"Read local metadata from the authorized working copy only; no remote request.",svnRemoteDisabled:"Remote SVN history transport is not enabled; no network grant or usable access token. This is not an authorized history entry point.",historyWindow:"Loaded history window (start inclusive, end exclusive)",historyWindowScope:"List and graph retain at most 200 rows; more loads replace newer rows. Boundary edges are not a complete graph. Local filtering covers this window only.",segments:"Browse historical text segments",segmentBytes:"Byte range (start inclusive, end exclusive)",segmentScope:"Committed UTF-8 regular files up to 16 MiB; replaceable 64 KiB segments. Segment line numbers are not original file lines; this is not a full-file Diff.",blameOriginLine:"View origin historical line",blameUnmapped:"Origin line cannot be located precisely",blamePrevious:"Previous line page",blameNext:"Next line page",fileHistoryMergeBoundary:"Identity boundary: merge commit; stopped without inferring parent origin",fileHistoryBoundary:"Identity boundary: copy or inexact rename; stopped here",fileHistoryFollow:"Follow exact renames (first-parent)",fileHistoryFollowScope:"Only Git-detected 100% renames. No identity inference for similarity, copies or merge-parent origins. Stops at creation; output/runtime bounded. Each row uses its historical path.",graphLaneLimit:"At most 32 lanes. Overflow geometry is omitted; loaded nodes and relations remain available as text.",historyBranch:"History tip (local reference)",historyPinned:"Pinned snapshot",historyBranchScope:"Load references manually below. Selection pins that OID; refreshing references does not move the history tip. Selecting HEAD reads current HEAD without checking out.",historyServerSearch:"Full history query",historyServerScope:"Search all history reachable from the pinned snapshot. Message/author use case-insensitive literal matching; path is an exact path or directory, without rename following. Pagination and runtime are bounded.",historyServer_message:"Commit message",historyServer_author:"Author",historyServer_path:"Path",historyServerApply:"Run query",historyServerClear:"Clear query",historyServerActive:"Submitted query",reviewView:"Review view",workspaceView:"Working changes",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.",textBefore:"Before",textAfter:"After",textReadonly:"Read-only text comparison",textEmpty:"Both versions are empty.",commitDetails:"Commit details",commitFileSearch:"Filter files in this commit",commitParent:"Compare parent",commitRoot:"Empty baseline (root commit)",commitNoChanges:"No file changes against this baseline",history:"Commit history",largeLoad:"Load complete large-file comparison",largeClose:"Cancel large-file mode",largeScope:"Git historical UTF-8 regular files only: 8 MiB and 100000 lines per side, not working-copy or SVN large files.",diffPending:"Computing differences; equality is not yet known.",diffIncomplete:"Difference computation is incomplete or timed out; displayed results may be partial.",diffComplete:"Difference computation completed.",largeFallback:"The basic view shows bounded excerpts, not the complete large-file diff.",historyAdvanced:"Load advanced read-only diff",historyBasic:"Return to basic text diff",historyListOnly:"Local HEAD history. Select a commit and file to view a read-only text diff.",historyEmpty:"No commits yet",historyRefsScope:"Labels reflect the last manually loaded local refs, not branches at commit creation. Failed refreshes retain the last successful result.",historyRefsLabel:"Loaded local references",historyRefsMore:"Additional references",historySearch:"Filter loaded commits (author / subject / SHA)",historyNoMatch:"No matches in loaded commits; you can load more if available.",historyMore:"Load more commits",historyLimit:"History browsing limit reached; older commits are not shown.",autoRefresh:"Refresh manually or on window focus",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})",revisionTitle:"Local A/B revision comparison",revisionScope:"Choose loaded commits or manually load local branches and tags. Compare A \u2192 B directly, not via merge-base.",revisionBase:"A (left)",revisionTarget:"B (right)",revisionSwap:"Swap A/B",revisionEmpty:"No file changes between these revisions.",fileHistory:"Path history",fileHistoryScope:"Exact-path history at the pinned commit; no rename following, including deletion and recreation. Selecting a commit opens its Diff only for a unique same-path change against the first parent (empty tree for a root); otherwise only details are shown.",blame:"Blame",blameNavigation:"Select an attributed commit to view details with its first parent selected; no automatic historical file or line navigation.",blameScope:"UTF-8 regular text at the selected commit, first 500 lines at most. Working changes are excluded.",blameLimit:"Only the first 500 lines are shown; result truncated.",blameEmpty:"No source lines to display.",blameLine:"Line",blameCommit:"Commit",blameAuthor:"Author",blameSummary:"Summary",blameSource:"Source",historicalTree:"Historical tree",historicalTreeScope:"Entries at the selected commit; 100 per page. Select regular files for read-only preview; symlinks and submodules are not followed.",treePreview:"Historical file preview",treeClose:"Close file preview",treeEmpty:"Empty file or no displayable text.",treeSearch:"Filter names in this directory",treeBreadcrumbs:"Historical directory path",treeUp:"Parent directory",treeEntries:"entries",treePrevious:"Previous page",treeNext:"Next page",historyGraph:"Local commit graph",graphScope:"First 200 loaded commits, at most 1000 parent edges. Independent of text filtering; not a complete branch graph. Select a node for details.",graphLimit:"Node or edge limit reached; some relationships are omitted.",graphMissing:"Parent outside this graph",graphRelations:"Parent relationships (text)",graphInvalid:"Cannot graph this commit order; use the history list.",imageCompare:"PNG image comparison",imageBefore:"Selected parent",imageAfter:"Selected commit",imageAbsent:"No file on this side.",imageInvalid:"Invalid image response.",imageMetadata:"Ancillary metadata was removed from this preview.",imageScope:"Non-interlaced static PNG or 8-bit single-scan baseline JPEG regular files , or single-chunk simple static WebP (no progressive/CMYK JPEG or extended/animated WebP); at most 2 MiB and 16 million pixels per side. Metadata is removed; not suitable for color-critical review. Supports commits, fixed A/B and Git working changes; HEAD, index or working bytes follow the selected mode. Conflicted images are unsupported.",commitMessageLimit:"Full commit message exceeds the 2 MiB preview limit and was omitted.",revisionLoadRefs:"Load / refresh local branches and tags",revisionRefsScope:"Local branches and commit tags only, at most 1000 refs; no fetch. Selections pin the loaded commit OID; refreshing refs does not move selected versions.",revisionRefsEmpty:"No local branches or commit tags are available.",revisionLoadedCommits:"Loaded commits",revisionLocalRefs:"Local branches and tags",revisionRefsCount:"Selectable references loaded"}};function pr(e,t,o,r){let i=e.target;if(!t?.contains(i)||e.defaultPrevented||e.isComposing||i?.closest?.(".monaco-editor")||i?.closest?.(".vcs-history"))return null;if(e.key==="Escape"&&i===o&&r)return"clear";let a=i?.isContentEditable||i?.closest?.('input,textarea,select,[role="textbox"]');if(a&&i!==o)return null;if((e.ctrlKey||e.metaKey)&&!e.altKey&&!e.shiftKey&&e.key?.toLowerCase()==="f")return"search";if(!a&&e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){if(e.key==="ArrowLeft")return"previous";if(e.key==="ArrowRight")return"next"}return null}function ur(e,t){let o=t?[...t.querySelectorAll("button[data-vcs-item]")]:[],r=o.indexOf(e.target);if(r<0)return;let i;if(e.key==="ArrowDown")i=o[r+1];else if(e.key==="ArrowUp")i=o[r-1];else if(e.key==="Home")i=o[0];else if(e.key==="End")i=o.at(-1);else if(e.key==="ArrowRight"&&e.target.dataset.vcsDirectory==="closed"||e.key==="ArrowLeft"&&e.target.dataset.vcsDirectory==="open"){e.preventDefault(),e.target.click();return}else return;e.preventDefault(),i?.focus()}var fr=e=>"dsh-vcs:project:v1:"+e;function mr(e,t){if(!e)return"";try{let o=(t??globalThis.localStorage)?.getItem(fr(e));return typeof o=="string"&&o.length<=1024?o:""}catch{return""}}function hr(e,t,o){if(!(!e||!t))try{(o??globalThis.localStorage)?.setItem(fr(e),t)}catch{}}function vr(e,t=""){return e.find(o=>o.id===t)?.id||e.find(o=>o.relativePath===".")?.id||e[0]?.id||""}var je=(e,t)=>JSON.stringify([e,t]),qe=(e,t=".")=>[e.type.toUpperCase(),e.relativePath==="."?t:e.relativePath||".",e.branch].filter(Boolean).join(" \xB7 "),Xe=(e,t="all")=>e.type==="git"&&["staged","unstaged"].includes(t)?t:"all",gr=(e="",t="")=>e===t?0:e<t?-1:1;function Et(e=[]){let t={id:"",name:"",directories:new Map,files:[],count:0};for(let r of e){let i=String(r.path||"").split("/").filter(Boolean);if(!i.length)continue;let a=t;for(let p of i.slice(0,-1)){let f=a.id?a.id+"/"+p:p;a.directories.has(p)||a.directories.set(p,{id:f,name:p,directories:new Map,files:[],count:0}),a=a.directories.get(p),a.count++}a.files.push(r)}let o=r=>({...r,directories:[...r.directories.values()].sort((i,a)=>gr(i.name,a.name)).map(o),files:[...r.files].sort((i,a)=>gr(i.path,a.path))});return o(t)}function br(e=[],t){let o=e.findIndex(r=>r.id===t);return{index:o<0?0:o+1,total:e.length}}function yr(e=[],t,o){if(!e.length||!["previous","next"].includes(o))return null;let r=e.findIndex(p=>p.id===t),i=o==="next"?1:-1,a=r<0?o==="next"?-1:0:r;return e[(a+i+e.length)%e.length]||null}function xr(e=""){let t=String(e).split("/").filter(Boolean);return t.slice(0,-1).map((o,r)=>t.slice(0,r+1).join("/"))}function At(e,t=[]){for(let o of e?.directories||[])t.push(o.id),At(o,t);return t}function wr(e=""){return{missing:"deleted",unversioned:"untracked",replaced:"modified",obstructed:"conflicted",copied:"renamed"}[e]||e}function Sr(e=[]){return e.reduce((t,o)=>{let r=wr(o.status);return t.all++,t[r]=(t[r]||0)+1,t},{all:0})}function yo(e=[],t="",o="all"){let r=t.toLowerCase();return e.filter(i=>(o==="all"||wr(i.status)===o)&&i.path.toLowerCase().includes(r)).sort((i,a)=>i.path.localeCompare(a.path))}function kr(e,t,o="",r="all"){return e.map(i=>({...t[i.id],repository:i,changes:yo(t[i.id]?.changes,o,r)}))}function Cr(e,t,o=""){if(!o||!e||e.cwd!==t.cwd)return t;let r=new Map(e.repositories.map(i=>[i.id,i]));for(let i of t.repositories)r.set(i.id,i);return{...t,repositories:[...r.values()],truncated:e.truncated||t.truncated,warnings:[...e.warnings||[],...t.warnings||[]]}}var Nr={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},Er=e=>new URL("vcs-assets/"+e,document.baseURI).href;function Ar(){return n.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.6","aria-hidden":"true"},n.default.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),n.default.createElement("path",{d:"M12 4v16M6 10h3M7.5 8.5v3M15 14h3"}))}var xo=["slots","layout","locale","connection","uiSession"];function wo(e){e.effect(()=>e.locale.register("local.vcs",cr));let t=e.locale.bind("local.vcs"),o=ut(2),r=Qt(e.connection,()=>t("error"));function i(f){let d=f.useSessions(s=>Object.values(s.byId).find(c=>(c.retainedBy.mainView??0)>0));return n.default.createElement(a,{key:JSON.stringify([d?.id,d?.cwd])},n.default.createElement(p,{session:d}))}class a extends n.default.Component{state={error:null};static getDerivedStateFromError(d){return{error:d}}render(){return this.state.error?n.default.createElement("section",{className:"vcs-root"},n.default.createElement("style",null,pt),n.default.createElement("div",{className:"vcs-message vcs-error"},t("error"),n.default.createElement("button",{onClick:()=>this.setState({error:null})},t("retry")),n.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")))):this.props.children}}function p({session:f}){(0,n.useSyncExternalStore)(l=>e.locale.subscribe(l),()=>e.locale.getSnapshot(),()=>e.locale.getSnapshot());let d=f?.id,[s,c]=(0,n.useState)("all"),[h,w]=(0,n.useState)(0),[v,S]=(0,n.useState)(0),[u,x]=(0,n.useState)(null),[b,g]=(0,n.useState)({}),[m,y]=(0,n.useState)(()=>mr(f?.cwd)),[k,O]=(0,n.useState)(0),[E,q]=(0,n.useState)(""),[_,ge]=(0,n.useState)(""),[J,de]=(0,n.useState)(null),[H,ce]=(0,n.useState)(null),[re,Ce]=(0,n.useState)(!1),[ve,Ne]=(0,n.useState)(!1),[se,L]=(0,n.useState)(""),[Y,Z]=(0,n.useState)(""),[ee,Lt]=(0,n.useState)(""),[Pt,Ht]=(0,n.useState)(!1),[ue,$e]=(0,n.useState)(""),[Je,Ot]=(0,n.useState)("all"),[be,Dt]=(0,n.useState)(!0),[Bt,Ze]=(0,n.useState)({}),[Ee,Lr]=(0,n.useState)(!0),[Re,Pr]=(0,n.useState)(!1),[et,Hr]=(0,n.useState)(!1),[Ue,Ae]=(0,n.useState)("content"),[Ft,Mt]=(0,n.useState)(0),[Or,Tt]=(0,n.useState)(!1),[tt,rt]=(0,n.useState)({added:0,deleted:0,count:0}),[oe,jt]=(0,n.useState)(!1),qt=(0,n.useRef)(null),Jt=(0,n.useRef)(null),ye=(0,n.useRef)(null),ot=(0,n.useRef)(null),Ve=(0,n.useRef)(null),it=(0,n.useRef)(null),Ut=(0,n.useRef)(null),Le=(0,n.useRef)(null),st=(0,n.useRef)(null),nt=(0,n.useRef)(null),at=(0,n.useRef)(!1),We=(0,n.useRef)(!1),fe=u?.repositories||[],me=fe.filter(l=>l.id===m),ne=Or&&me.some(l=>l.type==="git"),Dr=()=>{Le.current?.abort(),ce(null),de(null),Z(""),Tt(!0)};(0,n.useEffect)(()=>{fe.some(l=>l.id===m)&&hr(f?.cwd,m)},[f?.cwd,m,u]);let Pe=()=>{Ut.current?.abort(),Le.current?.abort(),ce(null),de(null),Z(""),Ae("content"),rt({added:0,deleted:0,count:0})},Ie=()=>{We.current=!1,Pe(),st.current?.abort(),nt.current=u,x(null),g({}),ge(E.trim()),O(l=>l+1)},xe=()=>{We.current||(We.current=!0,Pe(),st.current?.abort(),nt.current=null,x(null),g({}),ge(""),O(l=>l+1))},Vt=(l=!1)=>{l||S(N=>N+1),at.current=l,l||Pe(),l||g({}),w(N=>N+1)};(0,n.useEffect)(()=>{let l=new AbortController;return st.current=l,L(""),Ce(!!d),d&&r("vcs/repositories",{sessionId:d,..._?{subdirectory:_}:{}},l.signal).then(N=>{if(!l.signal.aborted){let j=Cr(nt.current,N,_);We.current=!1,y(z=>vr(j.repositories,z)),x(j)}}).catch(N=>{l.signal.aborted||L(N.message)}).finally(()=>{l.signal.aborted||Ce(!1)}),()=>l.abort()},[d,k,_]),(0,n.useEffect)(()=>{let l=new AbortController,N=at.current;Ut.current=l,at.current=!1,N||(g({}),Z(""));for(let j of me){let z=Xe(j,s);o(()=>r("vcs/status",{sessionId:d,repositoryId:j.id,mode:z},l.signal),l.signal).then(te=>{l.signal.aborted||g(ae=>({...ae,[j.id]:{...te,mode:z}}))}).catch(te=>{if(!l.signal.aborted){if(te.code==="vcs/rediscover-required"){xe();return}g(ae=>({...ae,[j.id]:{error:te.message,changes:[],mode:z}}))}})}return()=>l.abort()},[d,u,m,s,h]),(0,n.useEffect)(()=>{let l=N=>{N.target===window&&d&&m&&document.visibilityState==="visible"&&Vt(!0)};return window.addEventListener("focus",l),()=>window.removeEventListener("focus",l)},[d,m,s]);let He=fe.find(l=>l.id===J?.repositoryId),we=J?b[J.repositoryId]:null;(0,n.useEffect)(()=>{let l=new AbortController;return Le.current=l,ce(null),Z(""),rt({added:0,deleted:0,count:0}),Ae("content"),Ne(!!J&&!!we),!ne&&J&&we&&He&&r("vcs/compare",{sessionId:d,repositoryId:J.repositoryId,mode:Xe(He,s),id:J.id},l.signal).then(N=>{l.signal.aborted||ce(N)}).catch(N=>{if(!l.signal.aborted){if(N.code==="vcs/rediscover-required"){xe();return}Z(N.message)}}).finally(()=>{l.signal.aborted||Ne(!1)}),()=>l.abort()},[J,we,d,s,ne]),(0,n.useEffect)(()=>{let l=!1,N,j=new AbortController;jt(!1),Lt("");let z=document.createElement("link");return z.rel="stylesheet",z.href=Er("editor.css"),document.head.appendChild(z),_e(Er("editor.js")+"?v="+encodeURIComponent(Ye)+"&retry="+Ft,{signal:j.signal}).then(te=>{l||(N=te.createDiff(Jt.current,{onStats:rt}),ye.current=N,jt(!0))}).catch(te=>{l||Lt(te.message)}),()=>{l=!0,j.abort(),N?.dispose(),ye.current=null,z.remove()}},[Ft]),(0,n.useEffect)(()=>{oe&&H&&!H.binary&&ye.current?.setContent(H,JSON.stringify([d,u?.cwd,J?.repositoryId,s,J?.id,H.path]))},[oe,H,d,u,J,s]),(0,n.useEffect)(()=>{ye.current?.options({sideBySide:Ee,ignoreWhitespace:Re,wrap:et})},[oe,Ee,Re,et]);let Oe=kr(me,b,ue,Je),Se=Oe.flatMap(l=>l.changes),Br=Sr(we?.changes),lt=br(Se,J?.id),Wt=()=>{$e(""),Ot("all")},Fr=async()=>{let l=H?.path||pe?.path;if(l)try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(l);else{let N=document.createElement("textarea");try{if(N.value=l,N.style.cssText="position:fixed;opacity:0",document.body.appendChild(N),N.select(),!document.execCommand("copy"))throw Error("copy failed")}finally{N.remove()}}Ht(!0),window.setTimeout(()=>Ht(!1),1500)}catch{Z(t("copyFailed"))}};(0,n.useEffect)(()=>{let l=N=>{if(ne)return;let j=pr(N,qt.current,Ve.current,!!ue);j&&(N.preventDefault(),j==="search"?(Ve.current?.focus(),Ve.current?.select()):j==="clear"?$e(""):dt(j))};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[ue,Se,J,ne]);let It=l=>Ze(N=>{let j={...N};for(let z of Oe)for(let te of At(Et(z.changes)))j[z.repository.id+"\0"+te]=!l;return j}),Mr=()=>{let l=pe;!l||!J||(Dt(!0),Wt(),Ze(N=>{let j={...N};for(let z of xr(l.path))j[J.repositoryId+"\0"+z]=!1;return j}),it.current=je(J.repositoryId,l.id))};(0,n.useEffect)(()=>{let l=it.current;if(!l)return;let N=[...ot.current?.querySelectorAll("button[data-vcs-change]")||[]].find(j=>j.dataset.vcsChange===l);N&&(N.scrollIntoView({block:"nearest"}),N.focus(),it.current=null)},[be,ue,Je,Bt,Oe]);let dt=l=>{let N=yr(Se,J?.id,l);N&&(Le.current?.abort(),ce(null),Ae("content"),de({repositoryId:m,id:N.id}))},Gt=re||me.some(l=>!b[l.id]),pe=we?.changes?.find(l=>l.id===J?.id),he=H?.properties,ct=he?[...new Set([...Object.keys(he.left||{}),...Object.keys(he.right||{})])].filter(l=>he.left?.[l]!==he.right?.[l]):[],De=l=>Nr[l?.status]||l?.status?.slice(0,1).toUpperCase()||"M",zt=H?.binary?[H.left.label,H.right.label].filter(Boolean).join(" \u2194 "):"",ke=Y||(ve?t("loading"):d?Gt&&!pe?t("loading"):se||(fe.length?pe?H?.binary?t("binary")+(zt?" "+t("binaryComparison",{files:zt}):""):H?!oe&&!ee?t("loading"):"":t("pick"):t("pick"):t("noRepo")):t("noSession")),Tr=l=>ur(l,ot.current),Kt=({entry:l,compact:N=!1,depth:j=0})=>{let z=l.path.lastIndexOf("/");return n.default.createElement("button",{className:"vcs-file","data-vcs-item":!0,"data-vcs-change":je(m,l.id),"aria-current":J?.repositoryId===m&&J?.id===l.id?"true":void 0,style:{paddingInlineStart:8+j*14},title:(l.oldPath?l.oldPath+" \u2192 ":"")+l.path+" \xB7 "+t(De(l)),onClick:()=>{Le.current?.abort(),ce(null),Ae("content"),de({repositoryId:m,id:l.id})}},n.default.createElement("span",{className:"vcs-status","data-status":De(l)},De(l)),n.default.createElement("span",{className:"vcs-filename"},N?l.path.slice(z+1):l.path,l.oldPath&&n.default.createElement("small",{className:"vcs-filepath"},"\u2190 ",l.oldPath)))},_t=({node:l,repository:N,depth:j=0})=>n.default.createElement(n.default.Fragment,null,l.directories.map(z=>{let te=N.id+"\0"+z.id,ae=!!Bt[te];return n.default.createElement(n.default.Fragment,{key:te},n.default.createElement("button",{className:"vcs-dir vcs-dir-toggle","data-vcs-item":!0,"data-vcs-directory":ae?"closed":"open","aria-expanded":!ae,style:{paddingInlineStart:8+j*14},onClick:()=>Ze(jr=>({...jr,[te]:!ae}))},n.default.createElement("span",{"aria-hidden":"true"},ae?"\u203A":"\u2304"),z.name,n.default.createElement("small",null,z.count)),!ae&&n.default.createElement(_t,{node:z,repository:N,depth:j+1}))}),l.files.map(z=>n.default.createElement(Kt,{key:je(N.id,z.id),entry:z,compact:l.id!=="",depth:j})));return n.default.createElement("section",{ref:qt,className:"vcs-root","aria-label":t("title")},n.default.createElement("style",null,pt),n.default.createElement("header",{className:"vcs-top"},n.default.createElement(Ar,null),n.default.createElement("h1",{className:"vcs-title"},t("title")),n.default.createElement("span",{className:"vcs-badge"},t("readonly")),n.default.createElement("span",{className:"vcs-spacer"}),n.default.createElement("select",{"aria-label":t("repositories"),value:m,disabled:re||!fe.length,onChange:l=>{Pe(),g({}),y(l.target.value)}},!fe.length&&n.default.createElement("option",{value:""},t("repositories")),fe.map(l=>n.default.createElement("option",{key:l.id,value:l.id},qe(l,t("workspaceRoot"))))),n.default.createElement("label",{className:"vcs-mode"},t("gitMode")," ",n.default.createElement("select",{"aria-label":t("gitMode"),value:s,disabled:ne||!me.some(l=>l.type==="git"),onChange:l=>{Pe(),g({}),c(l.target.value)}},["all","unstaged","staged"].map(l=>n.default.createElement("option",{key:l,value:l},t(l))))),n.default.createElement("button",{onClick:()=>Vt(!1),disabled:Gt||!d},t("refresh")),n.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")),n.default.createElement("div",{className:"vcs-path",title:u?.cwd||f?.cwd},t("session"),": ",u?.cwd||f?.cwd||"\u2014"),n.default.createElement("form",{className:"vcs-discovery",onSubmit:l=>{l.preventDefault(),Ie()}},n.default.createElement("input",{"aria-label":t("subdirectory"),placeholder:t("subdirectory"),value:E,onChange:l=>q(l.target.value)}),n.default.createElement("button",{disabled:!d||re},t("rescan")),n.default.createElement("span",null,t("scanHint"))),u?.truncated&&n.default.createElement("div",{className:"vcs-notice"},t("truncated")),(u?.warnings||[]).map((l,N)=>n.default.createElement("div",{className:"vcs-notice",key:N},typeof l=="string"?l:l.message||JSON.stringify(l)))),me.filter(l=>l.type==="svn").map(l=>n.default.createElement(n.default.Fragment,{key:JSON.stringify([d,l.id,k,h])},n.default.createElement(mt,{repositoryId:l.id,sessionId:d,rpc:r,t,onRediscover:xe}),n.default.createElement(vt,{repositoryId:l.id,sessionId:d,rpc:r,t,onRediscover:xe}))),me.some(l=>l.type==="git")&&n.default.createElement(n.default.Fragment,null,n.default.createElement("nav",{className:"vcs-review-views","aria-label":t("reviewView")},n.default.createElement("button",{"aria-pressed":!ne,onClick:()=>Tt(!1)},t("workspaceView")),n.default.createElement("button",{"aria-pressed":ne,"aria-expanded":ne,onClick:Dr},t("history"))),ne&&n.default.createElement(Nt,{key:JSON.stringify([d,m,v,k]),sessionId:d,repositoryId:m,rpc:r,t,onRediscover:xe})),n.default.createElement("div",{className:"vcs-body",hidden:ne,"aria-label":t("workspaceView")},n.default.createElement("aside",{className:"vcs-files"},n.default.createElement("div",{className:"vcs-filter"},n.default.createElement("input",{ref:Ve,"aria-label":t("search"),placeholder:t("search"),title:t("searchShortcut"),value:ue,onChange:l=>$e(l.target.value)}),(ue||Je!=="all")&&n.default.createElement("button",{className:"vcs-clear-filter",onClick:Wt},t("clearFilters"))),n.default.createElement("div",{className:"vcs-status-filter","aria-label":t("filterStatus")},["all","modified","added","deleted","renamed","conflicted","untracked"].map(l=>n.default.createElement("button",{key:l,"aria-pressed":Je===l,onClick:()=>Ot(l)},t(l==="all"?"allFiles":Nr[l]||"M")," ",n.default.createElement("small",null,Br[l]||0)))),n.default.createElement("div",{className:"vcs-count"},n.default.createElement("span",null,Se.length," ",t("files")),n.default.createElement("span",{className:"vcs-auto"},t("autoRefresh")),n.default.createElement("button",{"aria-pressed":be,onClick:()=>Dt(!be)},t(be?"tree":"list"))),be&&n.default.createElement("div",{className:"vcs-tree-actions"},n.default.createElement("button",{onClick:()=>It(!0)},t("expandAll")),n.default.createElement("button",{onClick:()=>It(!1)},t("collapseAll")),n.default.createElement("button",{onClick:Mr,disabled:!pe},t("revealSelected"))),n.default.createElement("nav",{className:"vcs-filelist","aria-label":t("title"),ref:ot,onKeyDown:Tr},Oe.map(l=>{let N=l.repository;return n.default.createElement("section",{className:"vcs-repository",key:N.id,"aria-label":qe(N,t("workspaceRoot"))},n.default.createElement("div",{className:"vcs-repository-heading",title:N.root},n.default.createElement("strong",null,qe(N,t("workspaceRoot"))),n.default.createElement("small",null,N.type==="svn"?t("svnBase"):t(Xe(N,s)))),l.error?n.default.createElement("div",{className:"vcs-message vcs-error",role:"status"},l.error,n.default.createElement("button",{onClick:Ie},t("rescan"))):b[N.id]?be?n.default.createElement(_t,{node:Et(l.changes),repository:N}):l.changes.map(j=>n.default.createElement(Kt,{key:je(N.id,j.id),entry:j})):n.default.createElement("div",{className:"vcs-message"},t("loading")),!l.error&&b[N.id]&&!l.changes.length&&n.default.createElement("div",{className:"vcs-message"},t(ue?"emptySearch":"clean")))}),!Oe.length&&n.default.createElement("div",{className:"vcs-message"},re?t("loading"):se||t(d?"noRepo":"noSession"),se&&n.default.createElement("button",{onClick:Ie},t("rescan"))))),n.default.createElement("main",{className:"vcs-detail"},n.default.createElement("div",{className:"vcs-filehead"},n.default.createElement("strong",{title:H?.path||pe?.path},He?qe(He,t("workspaceRoot"))+" / ":"",H?.path||pe?.path||t("pick")),n.default.createElement("button",{className:"vcs-copy-path",disabled:!(H?.path||pe?.path),onClick:Fr},t(Pt?"copied":"copyPath")),Pt&&n.default.createElement("span",{className:"vcs-sr-only",role:"status"},t("pathCopied")),n.default.createElement("span",{className:"vcs-spacer"}),H&&!H.binary&&oe&&n.default.createElement(n.default.Fragment,null,n.default.createElement("span",{className:"vcs-add"},"+",tt.added),n.default.createElement("span",{className:"vcs-del"},"\u2212",tt.deleted))),ee&&n.default.createElement("div",{className:"vcs-notice",role:"status"},t("fallback")," ",n.default.createElement("button",{onClick:()=>Mt(l=>l+1)},t("retry")),n.default.createElement("details",null,n.default.createElement("summary",null,t("diagnostics")),ee)),H&&n.default.createElement("div",{className:"vcs-context","aria-label":t("comparisonContext")},n.default.createElement("span",{className:"vcs-context-status","data-status":De(H)},t(De(H))),H.oldPath&&n.default.createElement("span",{className:"vcs-context-rename",title:H.oldPath+" \u2192 "+H.path},H.oldPath," ",n.default.createElement("b",null,"\u2192")," ",H.path),n.default.createElement("span",null,H.left.label||"\u2014"," ",n.default.createElement("b",null,"\u2194")," ",H.right.label||"\u2014"),(H.left.encoding||H.right.encoding)&&n.default.createElement("span",null,t("encoding"),": ",H.left.encoding||"\u2014"," / ",H.right.encoding||"\u2014")),H&&He?.type==="git"&&n.default.createElement(Fe,{key:JSON.stringify([d,u?.cwd,J.repositoryId,s,J.id,h,we]),workspace:!0,sessionId:d,repositoryId:J.repositoryId,mode:s,id:J.id,rpc:r,t,onRediscover:xe}),H?.notice&&n.default.createElement("div",{className:"vcs-notice"},H.notice),ct.length>0&&n.default.createElement("div",{className:"vcs-tabs"},["content","properties"].map(l=>n.default.createElement("button",{key:l,"aria-pressed":Ue===l,onClick:()=>Ae(l)},t(l),l==="properties"?" ("+ct.length+")":""))),n.default.createElement("div",{className:"vcs-labels"},n.default.createElement("span",null,H?.left.label||"\u2014",H?.left.encoding?" \xB7 "+H.left.encoding:""),n.default.createElement("span",null,H?.right.label||"\u2014",H?.right.encoding?" \xB7 "+H.right.encoding:"")),n.default.createElement("div",{className:"vcs-editorbox","data-hidden":!!ke||Ue!=="content",style:Ue==="properties"?{display:"none"}:void 0},n.default.createElement("div",{className:"vcs-editor",ref:Jt,style:ee?{display:"none"}:void 0}),ee&&H&&!H.binary&&!ke&&n.default.createElement(Be,{comparison:H,labels:ze(t)}),ke&&n.default.createElement("div",{className:"vcs-message "+(se||Y||ee?"vcs-error":""),role:"status"},ke,(se||Y||ee)&&n.default.createElement("button",{onClick:()=>ee?Mt(l=>l+1):Ie()},t(ee?"retry":"rescan")))),Ue==="properties"&&n.default.createElement("div",{className:"vcs-properties"},n.default.createElement("table",null,n.default.createElement("thead",null,n.default.createElement("tr",null,n.default.createElement("th",null,t("properties")),n.default.createElement("th",null,H?.left.label||t("before")),n.default.createElement("th",null,H?.right.label||t("after")))),n.default.createElement("tbody",null,ct.map(l=>n.default.createElement("tr",{key:l},n.default.createElement("th",null,l),n.default.createElement("td",null,he.left?.[l]??"\u2014"),n.default.createElement("td",null,he.right?.[l]??"\u2014")))))),n.default.createElement("footer",{className:"vcs-toolbar"},n.default.createElement("button",{disabled:!oe,"aria-pressed":Ee,onClick:()=>Lr(!Ee)},t(Ee?"side":"inline")),n.default.createElement("label",null,n.default.createElement("input",{type:"checkbox",disabled:!oe,checked:Re,onChange:l=>Pr(l.target.checked)}),t("whitespace")),n.default.createElement("label",null,n.default.createElement("input",{type:"checkbox",disabled:!oe,checked:et,onChange:l=>Hr(l.target.checked)}),t("wrap")),n.default.createElement("span",{className:"vcs-spacer"}),oe&&n.default.createElement("span",null,tt.count," ",t("changes")),n.default.createElement("button",{disabled:!oe||!H||!!ke,onClick:()=>ye.current?.navigate("previous")},t("previous")),n.default.createElement("button",{disabled:!oe||!H||!!ke,onClick:()=>ye.current?.navigate("next")},t("next")),lt.index>0&&n.default.createElement("span",{className:"vcs-review-position"},t("reviewPosition",{index:lt.index,total:lt.total})),n.default.createElement("span",{className:"vcs-toolbar-separator"}),n.default.createElement("button",{title:t("fileShortcut"),disabled:!Se.length,onClick:()=>dt("previous")},t("previousFile")),n.default.createElement("button",{title:t("fileShortcut"),disabled:!Se.length,onClick:()=>dt("next")},t("nextFile"))))))}e.slots.inject("main",()=>e.slots.register({name:"main",key:"local-vcs"},i)),e.slots.inject("sidebar.panellist",()=>e.slots.register({name:"sidebar.panellist",id:"local-vcs",label:()=>t("title"),order:65},Ar))}
97
97
  return module.exports; }});