@feng0531/dsh-vcs 0.4.7 → 0.4.9
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 +1 -1
- package/dist/frontend.json +1 -1
- package/dist/interface.js +1 -1
- package/dist/svn-host.mjs +1 -1
- package/package.json +1 -1
- package/vcs.mjs +9 -6
package/dist/client.js
CHANGED
|
@@ -176,6 +176,6 @@ var Eo=Object.create;var ut=Object.defineProperty;var Ho=Object.getOwnPropertyDe
|
|
|
176
176
|
.vcs-root .vcs-svn-remote>p,.vcs-root .vcs-svn-remote>button{flex-shrink:0;margin:4px 16px;align-self:flex-start}
|
|
177
177
|
.vcs-root .vcs-history-browser>.vcs-history-details>p{grid-column:2;grid-row:1;overflow:auto;padding:12px}
|
|
178
178
|
@container(max-width:650px){.vcs-root .vcs-history-browser{grid-template-columns:minmax(130px,42%) minmax(0,1fr);grid-template-rows:minmax(120px,38%) minmax(0,1fr)}.vcs-root .vcs-history-browser .vcs-commit-sidebar,.vcs-root .vcs-history-browser .vcs-commit-review{padding:8px}}
|
|
179
|
-
`;function mt(e,r){return async(o,t,i)=>{let s=await e.rpc.call("/vcs-rpc",o,t,i);if(!s.ok){let c=new Error(s.error?.message||String(s.error||r()));throw c.code=s.error?.code,c}return s.value}}function It(e=2){if(!Number.isInteger(e)||e<1||e>2)throw new RangeError("Status concurrency must be 1 or 2");let r=0,o=[];function t(){for(;r<e&&o.length;){let i=o.shift();if(i.signal?.removeEventListener("abort",i.abort),i.signal?.aborted){i.reject(new Error("Aborted"));continue}r++,Promise.resolve().then(()=>{if(i.signal?.aborted)throw new Error("Aborted");return i.run()}).then(i.resolve,i.reject).finally(()=>{r--,t()})}}return(i,s)=>new Promise((c,m)=>{let p={run:i,signal:s,resolve:c,reject:m,abort:null};if(p.abort=()=>{let n=o.indexOf(p);n>=0&&(o.splice(n,1),m(new Error("Aborted")))},s?.aborted){m(new Error("Aborted"));return}s?.addEventListener("abort",p.abort,{once:!0}),o.push(p),t()})}var ae=R(require("react"),1);function Pr(e){return e===""?[]:e.split(/\r\n|\n|\r/)}function Lr(e="",r=""){let o=Pr(e),t=Pr(r),i=0;for(;i<o.length&&i<t.length&&o[i]===t[i];)i++;let s=0;for(;s<o.length-i&&s<t.length-i&&o[o.length-s-1]===t[t.length-s-1];)s++;let c=o.length-s,m=t.length-s,p=c-i,n=m-i,l=p&&n?(p+1)*(n+1):0,u=l>2e5,k=[],f=0;function C(b,N){f++,!(k.length>=2e3)&&k.push({left:b===null?null:{number:b+1,text:o[b]},right:N===null?null:{number:N+1,text:t[N]},kind:b===null?"insert":N===null?"delete":o[b]===t[N]?"equal":"replace"})}for(let b=0;b<i;b++)C(b,b);if(u||!p||!n)for(let b=0;b<Math.max(p,n);b++)C(b<p?i+b:null,b<n?i+b:null);else{let b=n+1,N=new Uint32Array(l);for(let h=p-1;h>=0;h--)for(let x=n-1;x>=0;x--)N[h*b+x]=o[i+h]===t[i+x]?N[(h+1)*b+x+1]+1:Math.max(N[(h+1)*b+x],N[h*b+x+1]);let y=0,w=0;for(;y<p||w<n;)y<p&&w<n&&o[i+y]===t[i+w]?C(i+y++,i+w++):y<p&&(w===n||N[(y+1)*b+w]>=N[y*b+w+1])?C(i+y++,null):C(null,i+w++)}for(let b=0;b<s;b++)C(c+b,m+b);return{rows:k,approximate:u,truncated:f>k.length,totalRows:f,omittedRows:f-k.length,leftLineCount:o.length,rightLineCount:t.length,lcsCells:u?0:l}}var Fo={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."},Ut={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},To={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Vo={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},jo={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function Xe({comparison:e,labels:r={}}){let o=e?.left?.text??"",t=e?.right?.text??"",i=(0,ae.useMemo)(()=>Lr(o,t),[o,t]),s=m=>r[m]??Fo[m],c=(m,p,n)=>{let l=m&&n!=="equal";return ae.default.createElement("td",{style:{...Ut,background:l?p==="left"?"#d6454520":"#259b4920":void 0}},ae.default.createElement("div",{style:To},ae.default.createElement("span",{style:Vo},m?.number??""),ae.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},l?p==="left"?"\u2212":"+":""),ae.default.createElement("pre",{style:jo},m?.text??"")))};return ae.default.createElement("section",{className:"vcs-text-comparison","aria-label":s("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},i.approximate&&ae.default.createElement("div",{role:"status",style:{padding:8}},s("approximate")),i.truncated&&ae.default.createElement("div",{role:"status",style:{padding:8}},s("truncated")," (",2e3," / ",i.totalRows,")"),ae.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},ae.default.createElement("thead",null,ae.default.createElement("tr",null,ae.default.createElement("th",{scope:"col",style:{...Ut,padding:8,overflowWrap:"anywhere"}},e?.left?.label||s("before")),ae.default.createElement("th",{scope:"col",style:{...Ut,padding:8,overflowWrap:"anywhere"}},e?.right?.label||s("after")))),ae.default.createElement("tbody",null,i.rows.map((m,p)=>ae.default.createElement("tr",{key:p,"data-kind":m.kind},c(m.left,"left",m.kind),c(m.right,"right",m.kind))))),!i.rows.length&&ae.default.createElement("p",{style:{padding:8}},s("empty")))}var K=R(require("react"),1);function Dr(e,{width:r,height:o,signal:t,timeoutMs:i=1e4,createURL:s=p=>URL.createObjectURL(p),revokeURL:c=p=>URL.revokeObjectURL(p),createImage:m=()=>new Image}={}){return new Promise((p,n)=>{if(t?.aborted){n(t.reason);return}if(!["image/png","image/jpeg","image/webp"].includes(e?.type)||e.size>2*1024*1024||!Number.isInteger(r)||!Number.isInteger(o)||r<1||o<1||r>8192||o>8192||r*o>16e6||!Number.isFinite(i)||i<=0){n(new Error("Invalid image preview"));return}let l,u,k,f=!1,C=!1,b=()=>{C||(C=!0,u&&(u.src=""),l&&c(l))},N=()=>{clearTimeout(k),t?.removeEventListener("abort",w)},y=h=>{f||(f=!0,N(),b(),n(h))},w=()=>y(t.reason||new Error("Image cancelled"));try{l=s(e),u=m(),t?.addEventListener("abort",w,{once:!0}),k=setTimeout(()=>y(new Error("Image decode timed out")),i),u.src=l,Promise.resolve(u.decode()).then(()=>{if(!f){if(t?.aborted){w();return}if(u.naturalWidth!==r||u.naturalHeight!==o){y(new Error("Image dimensions mismatch"));return}f=!0,N(),p({url:l,dispose:b})}},y)}catch(h){y(h)}})}function Io({side:e,sessionId:r,repositoryId:o,commit:t,parentIndex:i,base:s,target:c,workspace:m=!1,mode:p,id:n,rpc:l,t:u,onRediscover:k}){let[f,C]=(0,K.useState)(null),[b,N]=(0,K.useState)(""),[y,w]=(0,K.useState)(0);return(0,K.useEffect)(()=>{let h=new AbortController,x;return C(null),N(""),(async()=>{let v=await l(m?"vcs/workspace-image":s?"vcs/revision-image":"vcs/commit-image",m?{sessionId:r,repositoryId:o,mode:p,id:n,side:e}:s?{sessionId:r,repositoryId:o,base:s,target:c,id:n,side:e}:{sessionId:r,repositoryId:o,commit:t,parentIndex:i,id:n,side:e},h.signal);if(h.signal.aborted)return;if(v.absent){C(v);return}if(!["image/png","image/jpeg","image/webp"].includes(v.mime)||typeof v.base64!="string"||v.base64.length>2796204||!Number.isInteger(v.bytes)||v.bytes<1||v.bytes>2097152)throw Error(u("imageInvalid"));let H=atob(v.base64);if(H.length!==v.bytes)throw Error(u("imageInvalid"));let L=new Blob([Uint8Array.from(H,g=>g.charCodeAt(0))],{type:v.mime});if(x=await Dr(L,{width:v.width,height:v.height,signal:h.signal}),h.signal.aborted){x.dispose();return}C({...v,url:x.url})})().catch(v=>{h.signal.aborted||(N(v.message),v.code==="vcs/rediscover-required"&&k())}),()=>{h.abort(),x?.dispose()}},[e,r,o,t,i,s,c,m,p,n,y]),K.default.createElement("section",{style:{flex:"1 1 280px",minWidth:0},"aria-label":u(e==="left"?"imageBefore":"imageAfter")},K.default.createElement("h5",null,u(e==="left"?"imageBefore":"imageAfter")),b?K.default.createElement("p",{role:"alert"},b," ",K.default.createElement("button",{onClick:()=>w(h=>h+1)},u("retry"))):f?K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,K.default.createElement("code",null,f.commit)," \xB7 ",f.path),f.absent?K.default.createElement("p",null,u("imageAbsent")):K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,f.mime,f.encoding?" \xB7 "+f.encoding:""," \xB7 ",f.width," \xD7 ",f.height," \xB7 ",f.bytes," B"),K.default.createElement("img",{src:f.url,alt:f.path,style:{maxWidth:"100%",maxHeight:480,objectFit:"contain"}}),f.metadataStripped&&K.default.createElement("p",null,u("imageMetadata")))):K.default.createElement("p",{role:"status"},u("loading")))}function Ze(e){let[r,o]=(0,K.useState)(!1);return K.default.createElement("div",null,K.default.createElement("button",{"aria-expanded":r,onClick:()=>o(t=>!t)},e.t("imageCompare")),r&&K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,e.t("imageScope")),K.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:16}},["left","right"].map(t=>K.default.createElement(Io,{key:t,...e,side:t})))))}var z=R(require("react"),1);var oe=R(require("react"),1);function ft(e){return{before:e("textBefore"),after:e("textAfter"),readonly:e("textReadonly"),empty:e("textEmpty"),approximate:e("approximate"),truncated:e("textTruncated")}}var ge=require("react");function Mr({load:e,node:r,comparison:o,key:t,single:i=!1,onReady:s=()=>{},onError:c=()=>{},onComputation:m=()=>{}}){let p=new AbortController,n,l=!1,u=()=>{let f=n;n=void 0,f?.dispose()};return{done:Promise.resolve().then(()=>(p.signal.throwIfAborted(),e(p.signal))).then(f=>{l||(n=f.createDiff(r,{single:i,onComputation:C=>{l||m(C)}}),n.setContent(o,t),l||s(n))}).catch(f=>{try{u()}finally{l||c(f)}}),dispose(){l||(l=!0,p.abort(),u())}}}async function ht(e,{signal:r,fetcher:o=fetch,importer:t=i=>import(i)}={}){let i=await o(e,{credentials:"same-origin",cache:"no-cache",signal:r});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 s=i.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(s))throw new Error("Editor resource returned "+(s||"no Content-Type")+" instead of JavaScript.");return await i.arrayBuffer(),r?.throwIfAborted(),t(e)}var Ge="0.4.7";function Br({comparison:e,identity:r,enabled:o,single:t,line:i,sideBySide:s,ignoreWhitespace:c,wrap:m}){let p=(0,ge.useRef)(null),n=(0,ge.useRef)(null),[l,u]=(0,ge.useState)(!1),[k,f]=(0,ge.useState)(""),[C,b]=(0,ge.useState)("pending");return(0,ge.useEffect)(()=>{if(u(!1),b("pending"),f(""),!o)return;let N=h=>new URL("vcs-assets/"+h,document.baseURI).href,y=document.createElement("link");y.rel="stylesheet",y.href=N("editor.css"),document.head.appendChild(y);let w=Mr({node:p.current,comparison:e,key:r,single:t,load:h=>ht(N("editor.js")+"?v="+encodeURIComponent(Ge)+"&retry=0",{signal:h}),onReady:h=>{n.current=h,u(!0)},onError:h=>f(h.message),onComputation:b});return()=>{n.current=null;try{w.dispose()}finally{y.remove()}}},[o,e,r,t]),(0,ge.useEffect)(()=>{l&&t&&i&&n.current?.revealLine(i)},[l,t,i]),(0,ge.useEffect)(()=>{l&&n.current?.options({sideBySide:s,ignoreWhitespace:c,wrap:m})},[l,s,c,m]),{node:p,viewer:n,ready:l,error:k,computation:C}}function ye({comparison:e,identity:r,t:o,single:t=!1,line:i=null}){let[s,c]=(0,oe.useState)(!0),[m,p]=(0,oe.useState)(!1),[n,l]=(0,oe.useState)(!1),[u,k]=(0,oe.useState)(!0),{node:f,viewer:C,ready:b,error:N,computation:y}=Br({comparison:e,identity:r,enabled:u,single:t,line:i,sideBySide:s,ignoreWhitespace:m,wrap:n});return oe.default.createElement("div",{className:"vcs-history-viewer"},oe.default.createElement("div",{className:"vcs-history-viewer-toolbar"},oe.default.createElement("button",{"aria-pressed":u,onClick:()=>k(w=>!w)},o(u?"historyBasic":"historyAdvanced")),b&&!t&&oe.default.createElement("div",{key:"controls",style:{display:"flex",flexWrap:"wrap",gap:8}},oe.default.createElement("button",{"aria-pressed":s,onClick:()=>c(w=>!w)},o(s?"side":"inline")),oe.default.createElement("label",null,oe.default.createElement("input",{type:"checkbox",checked:m,onChange:w=>p(w.target.checked)}),o("whitespace")),oe.default.createElement("label",null,oe.default.createElement("input",{type:"checkbox",checked:n,onChange:w=>l(w.target.checked)}),o("wrap")),oe.default.createElement("button",{onClick:()=>C.current?.navigate("previous")},o("previous")),oe.default.createElement("button",{onClick:()=>C.current?.navigate("next")},o("next")))),u&&!b&&!N&&oe.default.createElement("p",{role:"status"},o("loading")),e.large&&!t&&b&&oe.default.createElement("p",{role:"status"},o(y==="complete"?"diffComplete":y==="incomplete"?"diffIncomplete":"diffPending")),e.large&&!b&&oe.default.createElement("p",{role:"status"},o("largeFallback")),N&&oe.default.createElement("p",{role:"status"},o("fallback")," ",N),oe.default.createElement("div",{key:"editor-host",className:"vcs-history-editor-host",style:{position:"relative",height:"var(--vcs-history-editor-height, 360px)"}},oe.default.createElement("div",{ref:f,style:{position:"absolute",inset:0,visibility:b?"visible":"hidden"},"aria-hidden":!b}),!b&&oe.default.createElement(Xe,{comparison:e,labels:ft(o)})))}function qt({sessionId:e,repositoryId:r,mode:o,id:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,z.useState)(null),[n,l]=(0,z.useState)(""),[u,k]=(0,z.useState)(0),[f,C]=(0,z.useState)(1),[b,N]=(0,z.useState)(3);(0,z.useEffect)(()=>{let g=new AbortController;return p(null),l(""),i("vcs/conflict-stages",{sessionId:e,repositoryId:r,mode:o,id:t},g.signal).then(B=>{g.signal.aborted||p(B)}).catch(B=>{g.signal.aborted||(l(B.message),B.code==="vcs/rediscover-required"&&c())}),()=>g.abort()},[e,r,o,t,u]);let y={1:s("conflictStage1"),2:s("conflictStage2"),3:s("conflictStage3")},w=s("conflictStageMissing"),h=y[f],x=y[b],v=(0,z.useMemo)(()=>{if(!m)return null;let g=A=>m.stages.find(O=>O.stage===A),B=A=>{let O=g(A);return!O||!O.present?{text:"",label:y[A]}:{text:O.text,label:y[A],...O.binary?{binary:!0}:{},...O.encoding?{encoding:O.encoding}:{},...O.notice?{notice:O.notice}:{}}},q=B(f),se=B(b),ue=[q.notice,se.notice].filter(Boolean);return g(f)?.present&&g(b)?.present||ue.push(w),{path:m.path,left:q,right:se,binary:!!(q.binary||se.binary),...ue.length?{notice:[...new Set(ue)].join(" \xB7 ")}:{}}},[m,f,b,h,x,w]);if(n)return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",{role:"alert"},n," ",z.default.createElement("button",{onClick:()=>k(g=>g+1)},s("retry"))));if(!m||!v)return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",{role:"status"},s("loading")));let H=g=>m.stages.find(B=>B.stage===g),L=v.binary&&!v.left.text&&!v.right.text;return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",null,s("conflictStagesScope")),z.default.createElement("ul",null,[1,2,3].map(g=>z.default.createElement("li",{key:g},z.default.createElement("code",null,y[g])," \xB7 ",H(g)?.present?s("conflictStagePresent"):s("conflictStageAbsent"),H(g)?.kind==="gitlink"&&" \xB7 "+s("conflictStageGitlink"),H(g)?.kind==="symlink"&&" \xB7 "+s("conflictStageSymlink"),H(g)?.present&&H(g)?.notice&&" \xB7 "+H(g).notice))),z.default.createElement("label",null,s("conflictStageLeft")," ",z.default.createElement("select",{"aria-label":s("conflictStageLeft"),value:f,onChange:g=>C(Number(g.target.value))},[1,2,3].map(g=>z.default.createElement("option",{key:g,value:g},y[g])))),z.default.createElement("label",null,s("conflictStageRight")," ",z.default.createElement("select",{"aria-label":s("conflictStageRight"),value:b,onChange:g=>N(Number(g.target.value))},[1,2,3].map(g=>z.default.createElement("option",{key:g,value:g},y[g])))),v.notice&&z.default.createElement("p",{role:"status"},v.notice),L?z.default.createElement("p",{role:"status"},s("binary")):z.default.createElement(ye,{key:JSON.stringify([t,f,b,m.snapshot]),comparison:v,identity:JSON.stringify([e,r,o,t,f,b,m.snapshot]),t:s}))}var Or=R(require("react"),1);function Gt({submodule:e,t:r}){if(!e||typeof e.recorded!="string")return null;let o=e.checkout,t=[];e.pointerMoved&&t.push(r("submodulePointerMoved")),(e.dirty||e.untracked)&&t.push(r("submoduleDirty"));let i=[e.recorded+" \xB7 "+r("submoduleCheckout_"+o),...t].join(" \xB7 ");return Or.default.createElement("span",{className:"vcs-submodule","data-checkout":o,"data-pointer-moved":e.pointerMoved?"true":void 0,"data-untracked":e.untracked?"true":void 0,title:i},r("submoduleBadge")," ",e.recorded.slice(0,10),t.length?` \xB7 ${t.join(", ")}`:"")}var ee=R(require("react"),1);function Jt(e){return ee.default.createElement(qo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function qo({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,ee.useState)(!1),[m,p]=(0,ee.useState)(null),[n,l]=(0,ee.useState)(""),[u,k]=(0,ee.useState)(0);return(0,ee.useEffect)(()=>{if(!s)return;let f=new AbortController;return p(null),l(""),o("vcs/svn-identity",{sessionId:e,repositoryId:r},f.signal).then(C=>{f.signal.aborted||p(C)}).catch(C=>{f.signal.aborted||(l(C.message),C.code==="vcs/rediscover-required"&&i())}),()=>f.abort()},[s,e,r,u]),ee.default.createElement("section",null,ee.default.createElement("button",{"aria-expanded":s,onClick:()=>c(f=>!f)},t("svnIdentity")),s&&ee.default.createElement(ee.default.Fragment,null,ee.default.createElement("p",null,t("svnOfflineIdentity")),n?ee.default.createElement("p",{role:"alert"},n," ",ee.default.createElement("button",{onClick:()=>k(f=>f+1)},t("retry"))):m?ee.default.createElement(ee.default.Fragment,null,ee.default.createElement("dl",null,["origin","root","uuid","scope","revision"].map(f=>ee.default.createElement(ee.default.Fragment,{key:f},ee.default.createElement("dt",null,f),ee.default.createElement("dd",null,ee.default.createElement("code",null,m[f]))))),ee.default.createElement("p",{role:"status"},t("svnRemoteDisabled"))):ee.default.createElement("p",{role:"status"},t("loading"))))}function vt(e,r,{now:o=Date.now,schedule:t=setTimeout,cancel:i=clearTimeout}={}){if(!Number.isSafeInteger(e)||e<=o()||e-o()>3e5)throw Error("Invalid SVN consent expiry");let s=!0,c=t(()=>{s&&(s=!1,r())},e-o());return()=>{s&&(s=!1,i(c))}}function Fr(e,r=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<=r||e.expiresAt-r>3e5)throw Error("Invalid SVN consent response");return e}var ne=R(require("react"),1);var G=R(require("react"),1);function zt(e){return G.default.createElement(Go,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Go({sessionId:e,repositoryId:r,rpc:o,t,onApproved:i,onRediscover:s}){let[c,m]=(0,G.useState)(!1),[p,n]=(0,G.useState)(null),[l,u]=(0,G.useState)(!1),[k,f]=(0,G.useState)(""),[C,b]=(0,G.useState)(!1),[N,y]=(0,G.useState)(0);(0,G.useEffect)(()=>{if(!c)return;let x=new AbortController;return n(null),u(!1),f(""),b(!0),o("vcs/svn-describe",{sessionId:e,repositoryId:r},x.signal).then(v=>{x.signal.aborted||n(v)}).catch(v=>{x.signal.aborted||(f(v.message),v.code==="vcs/rediscover-required"&&s())}).finally(()=>{x.signal.aborted||b(!1)}),()=>x.abort()},[c,e,r,N]);let[w,h]=(0,G.useState)(0);return(0,G.useEffect)(()=>{if(!c||!p||p.expiresAt===void 0)return;let x=()=>{n(null),u(!1),h(0),b(!1),f(t("svnOfferExpired"))};try{return vt(p.expiresAt,x)}catch{x()}},[c,p]),(0,G.useEffect)(()=>{if(!w||!c||!p)return;let x=new AbortController;return b(!0),f(""),o("vcs/svn-approve",{sessionId:e,repositoryId:r,offer:p.offer,explicit:!0},x.signal).then(v=>{x.signal.aborted||i(v)}).catch(v=>{x.signal.aborted||(f(v.message),u(!1),v.code==="vcs/rediscover-required"&&s())}).finally(()=>{x.signal.aborted||b(!1)}),()=>x.abort()},[w,c,p]),G.default.createElement("section",null,G.default.createElement("button",{"aria-expanded":c,onClick:()=>{h(0),m(x=>!x)}},t("svnConsentReview")),c&&G.default.createElement(G.default.Fragment,null,G.default.createElement("p",null,t("svnConsentScope")),k&&G.default.createElement("p",{role:"alert"},k," ",G.default.createElement("button",{disabled:C,onClick:()=>{h(0),y(x=>x+1)}},t("retry"))),p&&G.default.createElement(G.default.Fragment,null,G.default.createElement("dl",null,["origin","root","uuid","scope"].map(x=>G.default.createElement(G.default.Fragment,{key:x},G.default.createElement("dt",null,x),G.default.createElement("dd",null,G.default.createElement("code",null,p[x]))))),p.remoteEnabled?G.default.createElement(G.default.Fragment,null,G.default.createElement("label",null,G.default.createElement("input",{type:"checkbox",checked:l,disabled:C,onChange:x=>u(x.target.checked)}),t("svnConsentExplicit")),G.default.createElement("button",{disabled:C||!l,onClick:()=>h(x=>x+1)},t("svnConsentApprove"))):G.default.createElement("p",{role:"status"},t("svnRemoteDisabled"))),C&&G.default.createElement("p",{role:"status"},t("loading"))))}var S=R(require("react"),1);function Tr(e,{since:r,until:o}={}){let t=c=>{if(c==null||c==="")return null;if(typeof c!="string")throw new Error("Invalid SVN history date bound.");let m=c.trim();if(!m)return null;if(!/^\d{4}-\d{2}-\d{2}(?:T\S{0,40})?$/.test(m))throw new Error("Invalid SVN history date bound.");return m.slice(0,10)},i=t(r),s=t(o);return!i&&!s?e:Array.isArray(e)?e.filter(c=>{let m=c&&typeof c.date=="string"?c.date.trim():"",p=/^\d{4}-\d{2}-\d{2}/.test(m)?m.slice(0,10):"";return!(!p||i&&p<i||s&&p>s)}):[]}function gt(e,r,o){let t=o?[...e.commits.filter(i=>!r.commits.some(s=>s.id===i.id)),...r.commits]:r.commits;return{...r,windowEnd:o+r.commits.length,commits:t.slice(-200)}}function Vr(e,r,o){let t=gt({commits:(e?.entries||[]).map(i=>({...i,id:i.revision}))},{...r,commits:r.entries.map(i=>({...i,id:i.revision}))},o);return{...r,windowEnd:t.windowEnd,entries:t.commits.map(({id:i,...s})=>s)}}var Jo=9223372036854775807n;function zo(e){if(typeof e!="string"||e.length>19||!/^(0|[1-9][0-9]*)$/.test(e))throw new Error("Invalid SVN revision");let r=BigInt(e);if(r>Jo)throw new Error("SVN revision exceeds supported range");return r}function Wt(e){let r=zo(e);return r===0n?null:String(r-1n)}function _t(e){return S.default.createElement(Wo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.token,e.snapshot]),...e})}function Wo({sessionId:e,repositoryId:r,token:o,snapshot:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,S.useState)({cursor:t,offset:0,trail:[]}),[n,l]=(0,S.useState)(null),[u,k]=(0,S.useState)(null),[f,C]=(0,S.useState)(!0),[b,N]=(0,S.useState)(""),[y,w]=(0,S.useState)(0),[h,x]=(0,S.useState)(""),[v,H]=(0,S.useState)(""),{cursor:L,offset:g}=m;(0,S.useEffect)(()=>{let A=new AbortController;return C(!0),N(""),i("vcs/svn-log",{sessionId:e,repositoryId:r,token:o,snapshot:t,cursor:L,limit:50},A.signal).then(O=>{if(!A.signal.aborted){let D=Vr(n,O,g);l(D);let ce=new Set((n?.entries||[]).filter(de=>!D.entries.some(Fe=>Fe.revision===de.revision)).map(de=>de.revision));k(de=>ce.has(de)?null:de)}}).catch(O=>{A.signal.aborted||(N(O.message),O.code==="vcs/rediscover-required"&&c())}).finally(()=>{A.signal.aborted||C(!1)}),()=>A.abort()},[L,g,y]);let B=()=>p(A=>({cursor:n.nextRevision,offset:n.windowEnd,trail:[...A.trail,{cursor:L,offset:g}].slice(-200)})),q=()=>{let A=m.trail.at(-1);A&&(k(null),l(null),p({...A,trail:m.trail.slice(0,-1)}))},se=n?.entries||[],ue="";try{se=Tr(se,{since:h,until:v})}catch(A){ue=A.message}return S.default.createElement("section",{className:"vcs-history vcs-history-browser vcs-svn-history","aria-label":s("history"),"aria-busy":f},S.default.createElement("div",{className:"vcs-history-list"},S.default.createElement("p",null,s("svnHistoryScope")," \xB7 r",t),S.default.createElement("details",{className:"vcs-help"},S.default.createElement("summary",null,s("historySearchHelp")),S.default.createElement("p",null,s("svnHistoryDateScope")),["historyServer_since","historyServer_until"].map((A,O)=>S.default.createElement("label",{key:A},s(A)," ",S.default.createElement("input",{maxLength:40,placeholder:"YYYY-MM-DD","aria-label":s(A),value:O?v:h,onChange:D=>{k(null),O?H(D.target.value):x(D.target.value)}})))),ue&&S.default.createElement("p",{role:"alert"},ue),!!n?.entries.length&&S.default.createElement("p",{role:"status"},s("historyWindow"),": ",n.windowEnd-n.entries.length,"\u2013",n.windowEnd),S.default.createElement("ol",{className:"vcs-commit-list"},se.map(A=>S.default.createElement("li",{key:A.revision},S.default.createElement("button",{className:"vcs-commit-row","aria-pressed":u===A.revision,onClick:()=>k(A.revision)},S.default.createElement("span",{className:"vcs-commit-subject"},"r",A.revision," \xB7 ",A.message.split(/\r?\n/)[0])),S.default.createElement("div",{className:"vcs-commit-meta"},S.default.createElement("code",null,"r",A.revision)," \xB7 ",A.author," \xB7 ",S.default.createElement("time",{dateTime:A.date},A.date))))),f&&S.default.createElement("p",{role:"status"},s("loading")),b&&S.default.createElement("p",{role:"alert"},b," ",S.default.createElement("button",{onClick:()=>w(A=>A+1)},s("retry"))),!f&&!b&&!n?.entries.length&&S.default.createElement("p",null,s("historyEmpty")),!!n?.entries.length&&!se.length&&S.default.createElement("p",{role:"status"},s("historyNoMatch")),!!m.trail.length&&S.default.createElement("button",{disabled:f,onClick:q},s("historyBack")),!b&&n?.nextRevision!=null&&S.default.createElement("button",{disabled:f,onClick:B},s("historyMore"))),S.default.createElement("div",{className:"vcs-history-details"},u&&S.default.createElement(_o,{key:u,sessionId:e,repositoryId:r,token:o,snapshot:t,rpc:i,t:s,onRediscover:c,revision:u})))}function _o({sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m}){let[p,n]=(0,S.useState)(null),[l,u]=(0,S.useState)(null),[k,f]=(0,S.useState)(""),[C,b]=(0,S.useState)(0),[N,y]=(0,S.useState)(""),[w,h]=(0,S.useState)(!1);(0,S.useEffect)(()=>{let v=new AbortController;return n(null),u(null),f(""),s("vcs/svn-detail",{sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i},v.signal).then(H=>{v.signal.aborted||n(H)}).catch(H=>{v.signal.aborted||(f(H.message),H.code==="vcs/rediscover-required"&&m())}),()=>v.abort()},[C]);let x=(p?.changes||[]).filter(v=>v.path.toLocaleLowerCase().includes(N.toLocaleLowerCase()));return S.default.createElement("section",{className:"vcs-commit-details"+(w?" vcs-commit-focused":""),"aria-label":c("commitDetails")},k?S.default.createElement("p",{role:"alert"},k," ",S.default.createElement("button",{onClick:()=>b(v=>v+1)},c("retry"))):p?S.default.createElement("div",{className:"vcs-commit-sidebar"},S.default.createElement("header",{className:"vcs-commit-summary"},S.default.createElement("h3",null,p.message?.split(/\r?\n/)[0]||"r"+i),S.default.createElement("code",{className:"vcs-commit-oid"},"r",i),S.default.createElement("p",null,p.author," \xB7 ",p.date),S.default.createElement("pre",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},p.message),S.default.createElement("p",null,Wt(i)===null?c("commitRoot"):"r"+Wt(i)," \u2192 r",i)),S.default.createElement("aside",{className:"vcs-commit-picker"},S.default.createElement("label",null,c("commitFileSearch")," ",S.default.createElement("input",{"aria-label":c("commitFileSearch"),value:N,onChange:v=>{y(v.target.value),u(null)}})),S.default.createElement("span",null,x.length," / ",p.changes.length),S.default.createElement("ul",{className:"vcs-commit-files"},x.map(v=>S.default.createElement("li",{key:v.id},S.default.createElement("button",{disabled:v.kind!=="file","aria-pressed":l?.id===v.id&&l.mode==="compare",onClick:()=>u({id:v.id,mode:"compare"})},S.default.createElement("span",{className:"vcs-file-status"},v.action," \xB7 "),S.default.createElement("span",{className:"vcs-file-path",title:v.path},v.path,v.copyFromPath&&S.default.createElement("small",null,"\u2190 ",v.copyFromPath," @r",v.copyFromRevision))),v.kind==="file"&&S.default.createElement("div",{className:"vcs-svn-file-actions"},S.default.createElement("button",{onClick:()=>u({id:v.id,mode:"trace"})},c("fileHistory")),v.copyFromPath&&v.copyFromRevision&&!v.copySourceOutsideScope&&S.default.createElement("button",{onClick:()=>u({id:v.id,mode:"copytrace"})},c("svnCopyHistory")," \xB7 ",v.copyFromPath," @r",v.copyFromRevision),v.copySourceOutsideScope&&S.default.createElement("span",null,c("svnCopyOutside")))))),!!p.changes.length&&!x.length&&S.default.createElement("p",{role:"status"},c("emptySearch")),!p.changes.length&&S.default.createElement("p",null,c("commitNoChanges")))):S.default.createElement("p",{role:"status"},c("loading")),S.default.createElement("div",{className:"vcs-commit-review"},S.default.createElement("div",{className:"vcs-commit-comparison","aria-label":c("comparisonContext")},l&&S.default.createElement("button",{className:"vcs-comparison-focus","aria-pressed":w,onClick:()=>h(v=>!v)},c(w?"comparisonRestore":"comparisonFocus")),l?S.default.createElement(Ko,{key:JSON.stringify(l),sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m,...l}):S.default.createElement("p",{role:"status"},c("pick")))))}function Ko({sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m,id:p,mode:n}){let[l,u]=(0,S.useState)(null),[k,f]=(0,S.useState)({cursor:null,trail:[]}),[C,b]=(0,S.useState)(""),[N,y]=(0,S.useState)(0),{cursor:w,trail:h}=k;return(0,S.useEffect)(()=>{let x=new AbortController;return u(null),b(""),s("vcs/svn-"+n,{sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,id:p,...w===null?{}:{cursor:w}},x.signal).then(v=>{x.signal.aborted||u(v)}).catch(v=>{x.signal.aborted||(b(v.message),v.code==="vcs/rediscover-required"&&m())}),()=>x.abort()},[w,N]),C?S.default.createElement("p",{role:"alert"},C," ",S.default.createElement("button",{onClick:()=>y(x=>x+1)},c("retry"))):l?n==="compare"?S.default.createElement("section",{className:"vcs-history-comparison"},S.default.createElement("header",{className:"vcs-comparison-heading"},S.default.createElement("h4",null,l.path),S.default.createElement("p",null,l.left?.label," \u2194 ",l.right?.label),l.notice&&S.default.createElement("p",{role:"status"},l.notice)),l.binary?S.default.createElement("p",null,c("binary")):S.default.createElement(ye,{comparison:l,identity:JSON.stringify([e,r,t,i,p]),t:c})):S.default.createElement("section",null,S.default.createElement("p",null,c(n==="copytrace"?"svnCopyTraceScope":"svnTraceScope")," \xB7 ",l.path," \xB7 peg r",l.pegRevision),S.default.createElement("ol",null,l.entries.map(x=>S.default.createElement("li",{key:x.revision},"r",x.revision," \xB7 ",x.message))),!!h.length&&S.default.createElement("button",{onClick:()=>f({cursor:h.at(-1),trail:h.slice(0,-1)})},c("historyBack")),l.nextRevision!==null&&S.default.createElement("button",{onClick:()=>f({cursor:l.nextRevision,trail:[...h,w].slice(-200)})},c("historyMore"))):S.default.createElement("p",{role:"status"},c("loading"))}function Kt(e){return ne.default.createElement(Yo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Yo({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,ne.useState)(null),[m,p]=(0,ne.useState)(!1),[n,l]=(0,ne.useState)(""),[u,k]=(0,ne.useState)(0);(0,ne.useEffect)(()=>{if(s)return()=>{Promise.resolve().then(()=>o("vcs/svn-revoke",{sessionId:e,repositoryId:r,token:s.token})).catch(()=>{})}},[s,e,r]),(0,ne.useEffect)(()=>{if(s)try{return vt(s.expiresAt,()=>{c(null),k(0),p(!1),l(t("svnExpired"))})}catch{c(null),l(t("svnExpired"))}},[s]),(0,ne.useEffect)(()=>{if(!u||!s)return;let b=new AbortController;return p(!0),l(""),o("vcs/svn-revoke",{sessionId:e,repositoryId:r,token:s.token},b.signal).then(()=>{b.signal.aborted||c(null)}).catch(N=>{b.signal.aborted||(l(N.message),N.code==="vcs/rediscover-required"&&i())}).finally(()=>{b.signal.aborted||p(!1)}),()=>b.abort()},[u,s]);let f=b=>{try{Fr(b),l(""),k(0),c(b)}catch(N){l(N.message)}},C=async(...b)=>{try{return await o(...b)}catch(N){throw N.code==="vcs/svn-consent-required"&&!b[2]?.aborted&&(c(null),k(0),l(t("svnExpired"))),N}};return ne.default.createElement("section",{className:"vcs-svn-remote"},!s&&n&&ne.default.createElement("p",{role:"status"},n),s?ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("p",null,t("svnGrantScope")),ne.default.createElement("button",{disabled:m,onClick:()=>k(b=>b+1)},t("svnRevoke")),n&&ne.default.createElement("p",{role:"alert"},n),!m&&ne.default.createElement(_t,{sessionId:e,repositoryId:r,t,onRediscover:i,rpc:C,token:s.token,snapshot:s.snapshot})):ne.default.createElement(zt,{sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i,onApproved:f}))}var E=R(require("react"),1);function jr(e){let r=new Map;for(let o of e){let t=r.get(o.commit);t||(t={names:[],hidden:0},r.set(o.commit,t)),t.names.length<3?t.names.push(o.name):t.hidden++}return r}var T=R(require("react"),1);var U=R(require("react"),1);var Q=R(require("react"),1);var Z=R(require("react"),1);function Yt(e){return Z.default.createElement($o,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.path]),...e})}function $o({sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,Z.useState)(!1),[n,l]=(0,Z.useState)([0]),[u,k]=(0,Z.useState)(null),[f,C]=(0,Z.useState)(""),[b,N]=(0,Z.useState)(0),y=n.at(-1);(0,Z.useEffect)(()=>{if(!m)return;let h=new AbortController;return k(null),C(""),i("vcs/tree-segment",{sessionId:e,repositoryId:r,commit:o,path:t,offset:y},h.signal).then(x=>{h.signal.aborted||k(x)}).catch(x=>{h.signal.aborted||(C(x.message),x.code==="vcs/rediscover-required"&&c())}),()=>h.abort()},[m,y,e,r,o,t,b]);let w=(0,Z.useMemo)(()=>u?{path:t,left:{label:o,text:u.text},right:{label:o,text:u.text}}:null,[u,t,o]);return Z.default.createElement("section",null,Z.default.createElement("button",{"aria-expanded":m,onClick:()=>p(h=>!h)},s("segments")),m&&Z.default.createElement(Z.default.Fragment,null,Z.default.createElement("p",null,s("segmentScope")),f?Z.default.createElement("p",{role:"alert"},f," ",Z.default.createElement("button",{onClick:()=>N(h=>h+1)},s("retry"))):u?Z.default.createElement(Z.default.Fragment,null,Z.default.createElement("p",null,s("segmentBytes"),": ",u.offset,"\u2013",u.endOffset," / ",u.totalBytes," \xB7 ",Z.default.createElement("code",null,u.oid)),Z.default.createElement("button",{disabled:n.length===1,onClick:()=>l(h=>h.slice(0,-1))},s("previous")),Z.default.createElement("button",{disabled:u.nextOffset===null,onClick:()=>l(h=>[...h,u.nextOffset])},s("next")),Z.default.createElement(ye,{single:!0,comparison:w,identity:JSON.stringify([e,r,o,t,y]),t:s})):Z.default.createElement("p",{role:"status"},s("loading"))))}var V=R(require("react"),1);function Qo({sessionId:e,repositoryId:r,commit:o,path:t,follow:i,since:s,until:c,rpc:m,t:p,onRediscover:n,onSelectCommit:l}){let[u,k]=(0,V.useState)({commits:[],nextOffset:null}),[f,C]=(0,V.useState)(0),[b,N]=(0,V.useState)(0),[y,w]=(0,V.useState)(!0),[h,x]=(0,V.useState)("");(0,V.useEffect)(()=>{let H=new AbortController;return w(!0),x(""),m("vcs/tree-history",{sessionId:e,repositoryId:r,commit:o,path:t,offset:f,limit:50,follow:i,...s?{since:s}:{},...c?{until:c}:{}},H.signal).then(L=>{H.signal.aborted||k(g=>({...L,commits:f?[...g.commits,...L.commits]:L.commits}))}).catch(L=>{H.signal.aborted||(x(L.message),L.code==="vcs/rediscover-required"&&n())}).finally(()=>{H.signal.aborted||w(!1)}),()=>H.abort()},[e,r,o,t,f,b,i,s,c]);let v=H=>p(H.boundary==="merge-first-parent"?"fileHistoryMergeBoundary":H.boundary==="ambiguous-rename"?"fileHistoryAmbiguous":H.boundary==="rename-check-limit"?"fileHistoryRenameLimit":"fileHistoryBoundary");return V.default.createElement("section",{"aria-label":p("pathHistory"),"aria-busy":y},V.default.createElement("p",null,p("pathHistoryScope")),V.default.createElement("p",{style:{overflowWrap:"anywhere"}},V.default.createElement("code",null,u.path||t)," \xB7 ",V.default.createElement("code",null,o),u.followsRenames!==void 0&&V.default.createElement(V.default.Fragment,null," \xB7 ",p(u.followsRenames?"fileHistoryFollow":"pathHistoryNoFollow"))),V.default.createElement("ol",null,u.commits.map(H=>V.default.createElement("li",{key:H.id},V.default.createElement("code",{title:H.id},H.id.slice(0,10))," \xB7 ",l?V.default.createElement("button",{onClick:()=>l(H.id,H.path||t)},H.subject):H.subject,V.default.createElement("div",null,H.boundary&&V.default.createElement("span",null,v(H)," "),H.path&&V.default.createElement("code",null,H.oldPath?H.oldPath+" \u2192 ":"",H.path)," ",H.similarity!==void 0&&V.default.createElement("span",null,p("fileHistorySimilarity"),": ",H.similarity,"% \xB7 "),H.author," \xB7 ",V.default.createElement("time",{dateTime:H.date},H.date))))),y&&V.default.createElement("p",{role:"status"},p("loading")),h&&V.default.createElement("p",{role:"alert"},h," ",V.default.createElement("button",{onClick:()=>N(H=>H+1)},p("retry"))),!y&&!h&&!u.commits.length&&V.default.createElement("p",null,p("historyEmpty")),u.truncated&&V.default.createElement("p",{role:"status"},p("historyLimit")),!h&&u.nextOffset!==null&&V.default.createElement("button",{disabled:y,onClick:()=>C(u.nextOffset)},p("historyMore")))}function $t(e){let[r,o]=(0,V.useState)(!1),[t,i]=(0,V.useState)(!1),[s,c]=(0,V.useState)(""),[m,p]=(0,V.useState)("");return V.default.createElement("div",null,V.default.createElement("button",{"aria-expanded":r,onClick:()=>o(n=>!n)},e.t("pathHistory")),r&&V.default.createElement(V.default.Fragment,null,V.default.createElement("label",null,V.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>i(n.target.checked)}),e.t("fileHistoryFollow")),V.default.createElement("p",null,e.t("pathHistoryFollowScope")),V.default.createElement("p",null,e.t("fileHistoryDateScope")),["historyServer_since","historyServer_until"].map((n,l)=>V.default.createElement("label",{key:n},e.t(n)," ",V.default.createElement("input",{maxLength:40,placeholder:"YYYY-MM-DD[THH:MM[:SS][\xB1HH:MM]]","aria-label":e.t(n),value:l?m:s,onChange:u=>l?p(u.target.value):c(u.target.value)}))),V.default.createElement(Qo,{key:JSON.stringify([t,s.trim(),m.trim()]),follow:t,since:s.trim()||null,until:m.trim()||null,...e})))}function Re({sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c,onClose:m,onSelectCommit:p,line:n=null}){let[l,u]=(0,Q.useState)(null),[k,f]=(0,Q.useState)(""),[C,b]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let y=new AbortController;return u(null),f(""),i("vcs/tree-file",{sessionId:e,repositoryId:r,commit:o,path:t},y.signal).then(w=>{y.signal.aborted||u(w)}).catch(w=>{y.signal.aborted||(f(w.message),w.code==="vcs/rediscover-required"&&c())}),()=>y.abort()},[e,r,o,t,C]);let N=(0,Q.useMemo)(()=>l?{path:t,left:{label:o,text:l.text||""},right:{label:o,text:l.text||""}}:null,[l,t,o]);return Q.default.createElement("section",{"aria-label":s("treePreview")},Q.default.createElement("h4",null,t),Q.default.createElement("button",{onClick:m},s("treeClose")),Q.default.createElement("p",null,Q.default.createElement("code",null,o)),k?Q.default.createElement("p",{role:"alert"},k," ",Q.default.createElement("button",{onClick:()=>b(y=>y+1)},s("retry"))):l?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("p",null,Q.default.createElement("code",null,l.oid)," \xB7 ",s("encoding"),": ",l.encoding||"\u2014"),n&&Q.default.createElement("p",{role:"status"},s("blameOriginLine"),": ",n,!l.text||n>l.text.split(`
|
|
179
|
+
`;function mt(e,r){return async(o,t,i)=>{let s=await e.rpc.call("/vcs-rpc",o,t,i);if(!s.ok){let c=new Error(s.error?.message||String(s.error||r()));throw c.code=s.error?.code,c}return s.value}}function It(e=2){if(!Number.isInteger(e)||e<1||e>2)throw new RangeError("Status concurrency must be 1 or 2");let r=0,o=[];function t(){for(;r<e&&o.length;){let i=o.shift();if(i.signal?.removeEventListener("abort",i.abort),i.signal?.aborted){i.reject(new Error("Aborted"));continue}r++,Promise.resolve().then(()=>{if(i.signal?.aborted)throw new Error("Aborted");return i.run()}).then(i.resolve,i.reject).finally(()=>{r--,t()})}}return(i,s)=>new Promise((c,m)=>{let p={run:i,signal:s,resolve:c,reject:m,abort:null};if(p.abort=()=>{let n=o.indexOf(p);n>=0&&(o.splice(n,1),m(new Error("Aborted")))},s?.aborted){m(new Error("Aborted"));return}s?.addEventListener("abort",p.abort,{once:!0}),o.push(p),t()})}var ae=R(require("react"),1);function Pr(e){return e===""?[]:e.split(/\r\n|\n|\r/)}function Lr(e="",r=""){let o=Pr(e),t=Pr(r),i=0;for(;i<o.length&&i<t.length&&o[i]===t[i];)i++;let s=0;for(;s<o.length-i&&s<t.length-i&&o[o.length-s-1]===t[t.length-s-1];)s++;let c=o.length-s,m=t.length-s,p=c-i,n=m-i,l=p&&n?(p+1)*(n+1):0,u=l>2e5,k=[],f=0;function C(b,N){f++,!(k.length>=2e3)&&k.push({left:b===null?null:{number:b+1,text:o[b]},right:N===null?null:{number:N+1,text:t[N]},kind:b===null?"insert":N===null?"delete":o[b]===t[N]?"equal":"replace"})}for(let b=0;b<i;b++)C(b,b);if(u||!p||!n)for(let b=0;b<Math.max(p,n);b++)C(b<p?i+b:null,b<n?i+b:null);else{let b=n+1,N=new Uint32Array(l);for(let h=p-1;h>=0;h--)for(let x=n-1;x>=0;x--)N[h*b+x]=o[i+h]===t[i+x]?N[(h+1)*b+x+1]+1:Math.max(N[(h+1)*b+x],N[h*b+x+1]);let y=0,w=0;for(;y<p||w<n;)y<p&&w<n&&o[i+y]===t[i+w]?C(i+y++,i+w++):y<p&&(w===n||N[(y+1)*b+w]>=N[y*b+w+1])?C(i+y++,null):C(null,i+w++)}for(let b=0;b<s;b++)C(c+b,m+b);return{rows:k,approximate:u,truncated:f>k.length,totalRows:f,omittedRows:f-k.length,leftLineCount:o.length,rightLineCount:t.length,lcsCells:u?0:l}}var Fo={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."},Ut={verticalAlign:"top",padding:0,width:"50%",borderRight:"1px solid var(--border, #8884)"},To={display:"flex",minHeight:"1.5em",fontFamily:"monospace",fontSize:12,lineHeight:1.5},Vo={flex:"0 0 6ch",textAlign:"right",paddingRight:8,opacity:.65,userSelect:"none"},jo={margin:0,flex:1,minWidth:0,whiteSpace:"pre-wrap",overflowWrap:"anywhere",tabSize:4,font:"inherit"};function Xe({comparison:e,labels:r={}}){let o=e?.left?.text??"",t=e?.right?.text??"",i=(0,ae.useMemo)(()=>Lr(o,t),[o,t]),s=m=>r[m]??Fo[m],c=(m,p,n)=>{let l=m&&n!=="equal";return ae.default.createElement("td",{style:{...Ut,background:l?p==="left"?"#d6454520":"#259b4920":void 0}},ae.default.createElement("div",{style:To},ae.default.createElement("span",{style:Vo},m?.number??""),ae.default.createElement("span",{"aria-hidden":"true",style:{flex:"0 0 2ch",userSelect:"none"}},l?p==="left"?"\u2212":"+":""),ae.default.createElement("pre",{style:jo},m?.text??"")))};return ae.default.createElement("section",{className:"vcs-text-comparison","aria-label":s("readonly"),style:{flex:"1 1 0",minHeight:0,minWidth:0,overflow:"auto",position:"absolute",inset:0},tabIndex:0},i.approximate&&ae.default.createElement("div",{role:"status",style:{padding:8}},s("approximate")),i.truncated&&ae.default.createElement("div",{role:"status",style:{padding:8}},s("truncated")," (",2e3," / ",i.totalRows,")"),ae.default.createElement("table",{style:{width:"100%",tableLayout:"fixed",borderCollapse:"collapse",textAlign:"left"}},ae.default.createElement("thead",null,ae.default.createElement("tr",null,ae.default.createElement("th",{scope:"col",style:{...Ut,padding:8,overflowWrap:"anywhere"}},e?.left?.label||s("before")),ae.default.createElement("th",{scope:"col",style:{...Ut,padding:8,overflowWrap:"anywhere"}},e?.right?.label||s("after")))),ae.default.createElement("tbody",null,i.rows.map((m,p)=>ae.default.createElement("tr",{key:p,"data-kind":m.kind},c(m.left,"left",m.kind),c(m.right,"right",m.kind))))),!i.rows.length&&ae.default.createElement("p",{style:{padding:8}},s("empty")))}var K=R(require("react"),1);function Dr(e,{width:r,height:o,signal:t,timeoutMs:i=1e4,createURL:s=p=>URL.createObjectURL(p),revokeURL:c=p=>URL.revokeObjectURL(p),createImage:m=()=>new Image}={}){return new Promise((p,n)=>{if(t?.aborted){n(t.reason);return}if(!["image/png","image/jpeg","image/webp"].includes(e?.type)||e.size>2*1024*1024||!Number.isInteger(r)||!Number.isInteger(o)||r<1||o<1||r>8192||o>8192||r*o>16e6||!Number.isFinite(i)||i<=0){n(new Error("Invalid image preview"));return}let l,u,k,f=!1,C=!1,b=()=>{C||(C=!0,u&&(u.src=""),l&&c(l))},N=()=>{clearTimeout(k),t?.removeEventListener("abort",w)},y=h=>{f||(f=!0,N(),b(),n(h))},w=()=>y(t.reason||new Error("Image cancelled"));try{l=s(e),u=m(),t?.addEventListener("abort",w,{once:!0}),k=setTimeout(()=>y(new Error("Image decode timed out")),i),u.src=l,Promise.resolve(u.decode()).then(()=>{if(!f){if(t?.aborted){w();return}if(u.naturalWidth!==r||u.naturalHeight!==o){y(new Error("Image dimensions mismatch"));return}f=!0,N(),p({url:l,dispose:b})}},y)}catch(h){y(h)}})}function Io({side:e,sessionId:r,repositoryId:o,commit:t,parentIndex:i,base:s,target:c,workspace:m=!1,mode:p,id:n,rpc:l,t:u,onRediscover:k}){let[f,C]=(0,K.useState)(null),[b,N]=(0,K.useState)(""),[y,w]=(0,K.useState)(0);return(0,K.useEffect)(()=>{let h=new AbortController,x;return C(null),N(""),(async()=>{let v=await l(m?"vcs/workspace-image":s?"vcs/revision-image":"vcs/commit-image",m?{sessionId:r,repositoryId:o,mode:p,id:n,side:e}:s?{sessionId:r,repositoryId:o,base:s,target:c,id:n,side:e}:{sessionId:r,repositoryId:o,commit:t,parentIndex:i,id:n,side:e},h.signal);if(h.signal.aborted)return;if(v.absent){C(v);return}if(!["image/png","image/jpeg","image/webp"].includes(v.mime)||typeof v.base64!="string"||v.base64.length>2796204||!Number.isInteger(v.bytes)||v.bytes<1||v.bytes>2097152)throw Error(u("imageInvalid"));let H=atob(v.base64);if(H.length!==v.bytes)throw Error(u("imageInvalid"));let L=new Blob([Uint8Array.from(H,g=>g.charCodeAt(0))],{type:v.mime});if(x=await Dr(L,{width:v.width,height:v.height,signal:h.signal}),h.signal.aborted){x.dispose();return}C({...v,url:x.url})})().catch(v=>{h.signal.aborted||(N(v.message),v.code==="vcs/rediscover-required"&&k())}),()=>{h.abort(),x?.dispose()}},[e,r,o,t,i,s,c,m,p,n,y]),K.default.createElement("section",{style:{flex:"1 1 280px",minWidth:0},"aria-label":u(e==="left"?"imageBefore":"imageAfter")},K.default.createElement("h5",null,u(e==="left"?"imageBefore":"imageAfter")),b?K.default.createElement("p",{role:"alert"},b," ",K.default.createElement("button",{onClick:()=>w(h=>h+1)},u("retry"))):f?K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,K.default.createElement("code",null,f.commit)," \xB7 ",f.path),f.absent?K.default.createElement("p",null,u("imageAbsent")):K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,f.mime,f.encoding?" \xB7 "+f.encoding:""," \xB7 ",f.width," \xD7 ",f.height," \xB7 ",f.bytes," B"),K.default.createElement("img",{src:f.url,alt:f.path,style:{maxWidth:"100%",maxHeight:480,objectFit:"contain"}}),f.metadataStripped&&K.default.createElement("p",null,u("imageMetadata")))):K.default.createElement("p",{role:"status"},u("loading")))}function Ze(e){let[r,o]=(0,K.useState)(!1);return K.default.createElement("div",null,K.default.createElement("button",{"aria-expanded":r,onClick:()=>o(t=>!t)},e.t("imageCompare")),r&&K.default.createElement(K.default.Fragment,null,K.default.createElement("p",null,e.t("imageScope")),K.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:16}},["left","right"].map(t=>K.default.createElement(Io,{key:t,...e,side:t})))))}var z=R(require("react"),1);var oe=R(require("react"),1);function ft(e){return{before:e("textBefore"),after:e("textAfter"),readonly:e("textReadonly"),empty:e("textEmpty"),approximate:e("approximate"),truncated:e("textTruncated")}}var ge=require("react");function Mr({load:e,node:r,comparison:o,key:t,single:i=!1,onReady:s=()=>{},onError:c=()=>{},onComputation:m=()=>{}}){let p=new AbortController,n,l=!1,u=()=>{let f=n;n=void 0,f?.dispose()};return{done:Promise.resolve().then(()=>(p.signal.throwIfAborted(),e(p.signal))).then(f=>{l||(n=f.createDiff(r,{single:i,onComputation:C=>{l||m(C)}}),n.setContent(o,t),l||s(n))}).catch(f=>{try{u()}finally{l||c(f)}}),dispose(){l||(l=!0,p.abort(),u())}}}async function ht(e,{signal:r,fetcher:o=fetch,importer:t=i=>import(i)}={}){let i=await o(e,{credentials:"same-origin",cache:"no-cache",signal:r});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 s=i.headers.get("content-type")||"";if(!/(?:java|ecma)script/i.test(s))throw new Error("Editor resource returned "+(s||"no Content-Type")+" instead of JavaScript.");return await i.arrayBuffer(),r?.throwIfAborted(),t(e)}var Ge="0.4.9";function Br({comparison:e,identity:r,enabled:o,single:t,line:i,sideBySide:s,ignoreWhitespace:c,wrap:m}){let p=(0,ge.useRef)(null),n=(0,ge.useRef)(null),[l,u]=(0,ge.useState)(!1),[k,f]=(0,ge.useState)(""),[C,b]=(0,ge.useState)("pending");return(0,ge.useEffect)(()=>{if(u(!1),b("pending"),f(""),!o)return;let N=h=>new URL("vcs-assets/"+h,document.baseURI).href,y=document.createElement("link");y.rel="stylesheet",y.href=N("editor.css"),document.head.appendChild(y);let w=Mr({node:p.current,comparison:e,key:r,single:t,load:h=>ht(N("editor.js")+"?v="+encodeURIComponent(Ge)+"&retry=0",{signal:h}),onReady:h=>{n.current=h,u(!0)},onError:h=>f(h.message),onComputation:b});return()=>{n.current=null;try{w.dispose()}finally{y.remove()}}},[o,e,r,t]),(0,ge.useEffect)(()=>{l&&t&&i&&n.current?.revealLine(i)},[l,t,i]),(0,ge.useEffect)(()=>{l&&n.current?.options({sideBySide:s,ignoreWhitespace:c,wrap:m})},[l,s,c,m]),{node:p,viewer:n,ready:l,error:k,computation:C}}function ye({comparison:e,identity:r,t:o,single:t=!1,line:i=null}){let[s,c]=(0,oe.useState)(!0),[m,p]=(0,oe.useState)(!1),[n,l]=(0,oe.useState)(!1),[u,k]=(0,oe.useState)(!0),{node:f,viewer:C,ready:b,error:N,computation:y}=Br({comparison:e,identity:r,enabled:u,single:t,line:i,sideBySide:s,ignoreWhitespace:m,wrap:n});return oe.default.createElement("div",{className:"vcs-history-viewer"},oe.default.createElement("div",{className:"vcs-history-viewer-toolbar"},oe.default.createElement("button",{"aria-pressed":u,onClick:()=>k(w=>!w)},o(u?"historyBasic":"historyAdvanced")),b&&!t&&oe.default.createElement("div",{key:"controls",style:{display:"flex",flexWrap:"wrap",gap:8}},oe.default.createElement("button",{"aria-pressed":s,onClick:()=>c(w=>!w)},o(s?"side":"inline")),oe.default.createElement("label",null,oe.default.createElement("input",{type:"checkbox",checked:m,onChange:w=>p(w.target.checked)}),o("whitespace")),oe.default.createElement("label",null,oe.default.createElement("input",{type:"checkbox",checked:n,onChange:w=>l(w.target.checked)}),o("wrap")),oe.default.createElement("button",{onClick:()=>C.current?.navigate("previous")},o("previous")),oe.default.createElement("button",{onClick:()=>C.current?.navigate("next")},o("next")))),u&&!b&&!N&&oe.default.createElement("p",{role:"status"},o("loading")),e.large&&!t&&b&&oe.default.createElement("p",{role:"status"},o(y==="complete"?"diffComplete":y==="incomplete"?"diffIncomplete":"diffPending")),e.large&&!b&&oe.default.createElement("p",{role:"status"},o("largeFallback")),N&&oe.default.createElement("p",{role:"status"},o("fallback")," ",N),oe.default.createElement("div",{key:"editor-host",className:"vcs-history-editor-host",style:{position:"relative",height:"var(--vcs-history-editor-height, 360px)"}},oe.default.createElement("div",{ref:f,style:{position:"absolute",inset:0,visibility:b?"visible":"hidden"},"aria-hidden":!b}),!b&&oe.default.createElement(Xe,{comparison:e,labels:ft(o)})))}function qt({sessionId:e,repositoryId:r,mode:o,id:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,z.useState)(null),[n,l]=(0,z.useState)(""),[u,k]=(0,z.useState)(0),[f,C]=(0,z.useState)(1),[b,N]=(0,z.useState)(3);(0,z.useEffect)(()=>{let g=new AbortController;return p(null),l(""),i("vcs/conflict-stages",{sessionId:e,repositoryId:r,mode:o,id:t},g.signal).then(B=>{g.signal.aborted||p(B)}).catch(B=>{g.signal.aborted||(l(B.message),B.code==="vcs/rediscover-required"&&c())}),()=>g.abort()},[e,r,o,t,u]);let y={1:s("conflictStage1"),2:s("conflictStage2"),3:s("conflictStage3")},w=s("conflictStageMissing"),h=y[f],x=y[b],v=(0,z.useMemo)(()=>{if(!m)return null;let g=A=>m.stages.find(O=>O.stage===A),B=A=>{let O=g(A);return!O||!O.present?{text:"",label:y[A]}:{text:O.text,label:y[A],...O.binary?{binary:!0}:{},...O.encoding?{encoding:O.encoding}:{},...O.notice?{notice:O.notice}:{}}},q=B(f),se=B(b),ue=[q.notice,se.notice].filter(Boolean);return g(f)?.present&&g(b)?.present||ue.push(w),{path:m.path,left:q,right:se,binary:!!(q.binary||se.binary),...ue.length?{notice:[...new Set(ue)].join(" \xB7 ")}:{}}},[m,f,b,h,x,w]);if(n)return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",{role:"alert"},n," ",z.default.createElement("button",{onClick:()=>k(g=>g+1)},s("retry"))));if(!m||!v)return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",{role:"status"},s("loading")));let H=g=>m.stages.find(B=>B.stage===g),L=v.binary&&!v.left.text&&!v.right.text;return z.default.createElement("section",{"aria-label":s("conflictStages")},z.default.createElement("h4",null,s("conflictStages")),z.default.createElement("p",null,s("conflictStagesScope")),z.default.createElement("ul",null,[1,2,3].map(g=>z.default.createElement("li",{key:g},z.default.createElement("code",null,y[g])," \xB7 ",H(g)?.present?s("conflictStagePresent"):s("conflictStageAbsent"),H(g)?.kind==="gitlink"&&" \xB7 "+s("conflictStageGitlink"),H(g)?.kind==="symlink"&&" \xB7 "+s("conflictStageSymlink"),H(g)?.present&&H(g)?.notice&&" \xB7 "+H(g).notice))),z.default.createElement("label",null,s("conflictStageLeft")," ",z.default.createElement("select",{"aria-label":s("conflictStageLeft"),value:f,onChange:g=>C(Number(g.target.value))},[1,2,3].map(g=>z.default.createElement("option",{key:g,value:g},y[g])))),z.default.createElement("label",null,s("conflictStageRight")," ",z.default.createElement("select",{"aria-label":s("conflictStageRight"),value:b,onChange:g=>N(Number(g.target.value))},[1,2,3].map(g=>z.default.createElement("option",{key:g,value:g},y[g])))),v.notice&&z.default.createElement("p",{role:"status"},v.notice),L?z.default.createElement("p",{role:"status"},s("binary")):z.default.createElement(ye,{key:JSON.stringify([t,f,b,m.snapshot]),comparison:v,identity:JSON.stringify([e,r,o,t,f,b,m.snapshot]),t:s}))}var Or=R(require("react"),1);function Gt({submodule:e,t:r}){if(!e||typeof e.recorded!="string")return null;let o=e.checkout,t=[];e.pointerMoved&&t.push(r("submodulePointerMoved")),(e.dirty||e.untracked)&&t.push(r("submoduleDirty"));let i=[e.recorded+" \xB7 "+r("submoduleCheckout_"+o),...t].join(" \xB7 ");return Or.default.createElement("span",{className:"vcs-submodule","data-checkout":o,"data-pointer-moved":e.pointerMoved?"true":void 0,"data-untracked":e.untracked?"true":void 0,title:i},r("submoduleBadge")," ",e.recorded.slice(0,10),t.length?` \xB7 ${t.join(", ")}`:"")}var ee=R(require("react"),1);function Jt(e){return ee.default.createElement(qo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function qo({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,ee.useState)(!1),[m,p]=(0,ee.useState)(null),[n,l]=(0,ee.useState)(""),[u,k]=(0,ee.useState)(0);return(0,ee.useEffect)(()=>{if(!s)return;let f=new AbortController;return p(null),l(""),o("vcs/svn-identity",{sessionId:e,repositoryId:r},f.signal).then(C=>{f.signal.aborted||p(C)}).catch(C=>{f.signal.aborted||(l(C.message),C.code==="vcs/rediscover-required"&&i())}),()=>f.abort()},[s,e,r,u]),ee.default.createElement("section",null,ee.default.createElement("button",{"aria-expanded":s,onClick:()=>c(f=>!f)},t("svnIdentity")),s&&ee.default.createElement(ee.default.Fragment,null,ee.default.createElement("p",null,t("svnOfflineIdentity")),n?ee.default.createElement("p",{role:"alert"},n," ",ee.default.createElement("button",{onClick:()=>k(f=>f+1)},t("retry"))):m?ee.default.createElement(ee.default.Fragment,null,ee.default.createElement("dl",null,["origin","root","uuid","scope","revision"].map(f=>ee.default.createElement(ee.default.Fragment,{key:f},ee.default.createElement("dt",null,f),ee.default.createElement("dd",null,ee.default.createElement("code",null,m[f]))))),ee.default.createElement("p",{role:"status"},t("svnRemoteDisabled"))):ee.default.createElement("p",{role:"status"},t("loading"))))}function vt(e,r,{now:o=Date.now,schedule:t=setTimeout,cancel:i=clearTimeout}={}){if(!Number.isSafeInteger(e)||e<=o()||e-o()>3e5)throw Error("Invalid SVN consent expiry");let s=!0,c=t(()=>{s&&(s=!1,r())},e-o());return()=>{s&&(s=!1,i(c))}}function Fr(e,r=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<=r||e.expiresAt-r>3e5)throw Error("Invalid SVN consent response");return e}var ne=R(require("react"),1);var G=R(require("react"),1);function zt(e){return G.default.createElement(Go,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Go({sessionId:e,repositoryId:r,rpc:o,t,onApproved:i,onRediscover:s}){let[c,m]=(0,G.useState)(!1),[p,n]=(0,G.useState)(null),[l,u]=(0,G.useState)(!1),[k,f]=(0,G.useState)(""),[C,b]=(0,G.useState)(!1),[N,y]=(0,G.useState)(0);(0,G.useEffect)(()=>{if(!c)return;let x=new AbortController;return n(null),u(!1),f(""),b(!0),o("vcs/svn-describe",{sessionId:e,repositoryId:r},x.signal).then(v=>{x.signal.aborted||n(v)}).catch(v=>{x.signal.aborted||(f(v.message),v.code==="vcs/rediscover-required"&&s())}).finally(()=>{x.signal.aborted||b(!1)}),()=>x.abort()},[c,e,r,N]);let[w,h]=(0,G.useState)(0);return(0,G.useEffect)(()=>{if(!c||!p||p.expiresAt===void 0)return;let x=()=>{n(null),u(!1),h(0),b(!1),f(t("svnOfferExpired"))};try{return vt(p.expiresAt,x)}catch{x()}},[c,p]),(0,G.useEffect)(()=>{if(!w||!c||!p)return;let x=new AbortController;return b(!0),f(""),o("vcs/svn-approve",{sessionId:e,repositoryId:r,offer:p.offer,explicit:!0},x.signal).then(v=>{x.signal.aborted||i(v)}).catch(v=>{x.signal.aborted||(f(v.message),u(!1),v.code==="vcs/rediscover-required"&&s())}).finally(()=>{x.signal.aborted||b(!1)}),()=>x.abort()},[w,c,p]),G.default.createElement("section",null,G.default.createElement("button",{"aria-expanded":c,onClick:()=>{h(0),m(x=>!x)}},t("svnConsentReview")),c&&G.default.createElement(G.default.Fragment,null,G.default.createElement("p",null,t("svnConsentScope")),k&&G.default.createElement("p",{role:"alert"},k," ",G.default.createElement("button",{disabled:C,onClick:()=>{h(0),y(x=>x+1)}},t("retry"))),p&&G.default.createElement(G.default.Fragment,null,G.default.createElement("dl",null,["origin","root","uuid","scope"].map(x=>G.default.createElement(G.default.Fragment,{key:x},G.default.createElement("dt",null,x),G.default.createElement("dd",null,G.default.createElement("code",null,p[x]))))),p.remoteEnabled?G.default.createElement(G.default.Fragment,null,G.default.createElement("label",null,G.default.createElement("input",{type:"checkbox",checked:l,disabled:C,onChange:x=>u(x.target.checked)}),t("svnConsentExplicit")),G.default.createElement("button",{disabled:C||!l,onClick:()=>h(x=>x+1)},t("svnConsentApprove"))):G.default.createElement("p",{role:"status"},t("svnRemoteDisabled"))),C&&G.default.createElement("p",{role:"status"},t("loading"))))}var S=R(require("react"),1);function Tr(e,{since:r,until:o}={}){let t=c=>{if(c==null||c==="")return null;if(typeof c!="string")throw new Error("Invalid SVN history date bound.");let m=c.trim();if(!m)return null;if(!/^\d{4}-\d{2}-\d{2}(?:T\S{0,40})?$/.test(m))throw new Error("Invalid SVN history date bound.");return m.slice(0,10)},i=t(r),s=t(o);return!i&&!s?e:Array.isArray(e)?e.filter(c=>{let m=c&&typeof c.date=="string"?c.date.trim():"",p=/^\d{4}-\d{2}-\d{2}/.test(m)?m.slice(0,10):"";return!(!p||i&&p<i||s&&p>s)}):[]}function gt(e,r,o){let t=o?[...e.commits.filter(i=>!r.commits.some(s=>s.id===i.id)),...r.commits]:r.commits;return{...r,windowEnd:o+r.commits.length,commits:t.slice(-200)}}function Vr(e,r,o){let t=gt({commits:(e?.entries||[]).map(i=>({...i,id:i.revision}))},{...r,commits:r.entries.map(i=>({...i,id:i.revision}))},o);return{...r,windowEnd:t.windowEnd,entries:t.commits.map(({id:i,...s})=>s)}}var Jo=9223372036854775807n;function zo(e){if(typeof e!="string"||e.length>19||!/^(0|[1-9][0-9]*)$/.test(e))throw new Error("Invalid SVN revision");let r=BigInt(e);if(r>Jo)throw new Error("SVN revision exceeds supported range");return r}function Wt(e){let r=zo(e);return r===0n?null:String(r-1n)}function _t(e){return S.default.createElement(Wo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.token,e.snapshot]),...e})}function Wo({sessionId:e,repositoryId:r,token:o,snapshot:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,S.useState)({cursor:t,offset:0,trail:[]}),[n,l]=(0,S.useState)(null),[u,k]=(0,S.useState)(null),[f,C]=(0,S.useState)(!0),[b,N]=(0,S.useState)(""),[y,w]=(0,S.useState)(0),[h,x]=(0,S.useState)(""),[v,H]=(0,S.useState)(""),{cursor:L,offset:g}=m;(0,S.useEffect)(()=>{let A=new AbortController;return C(!0),N(""),i("vcs/svn-log",{sessionId:e,repositoryId:r,token:o,snapshot:t,cursor:L,limit:50},A.signal).then(O=>{if(!A.signal.aborted){let D=Vr(n,O,g);l(D);let ce=new Set((n?.entries||[]).filter(de=>!D.entries.some(Fe=>Fe.revision===de.revision)).map(de=>de.revision));k(de=>ce.has(de)?null:de)}}).catch(O=>{A.signal.aborted||(N(O.message),O.code==="vcs/rediscover-required"&&c())}).finally(()=>{A.signal.aborted||C(!1)}),()=>A.abort()},[L,g,y]);let B=()=>p(A=>({cursor:n.nextRevision,offset:n.windowEnd,trail:[...A.trail,{cursor:L,offset:g}].slice(-200)})),q=()=>{let A=m.trail.at(-1);A&&(k(null),l(null),p({...A,trail:m.trail.slice(0,-1)}))},se=n?.entries||[],ue="";try{se=Tr(se,{since:h,until:v})}catch(A){ue=A.message}return S.default.createElement("section",{className:"vcs-history vcs-history-browser vcs-svn-history","aria-label":s("history"),"aria-busy":f},S.default.createElement("div",{className:"vcs-history-list"},S.default.createElement("p",null,s("svnHistoryScope")," \xB7 r",t),S.default.createElement("details",{className:"vcs-help"},S.default.createElement("summary",null,s("historySearchHelp")),S.default.createElement("p",null,s("svnHistoryDateScope")),["historyServer_since","historyServer_until"].map((A,O)=>S.default.createElement("label",{key:A},s(A)," ",S.default.createElement("input",{maxLength:40,placeholder:"YYYY-MM-DD","aria-label":s(A),value:O?v:h,onChange:D=>{k(null),O?H(D.target.value):x(D.target.value)}})))),ue&&S.default.createElement("p",{role:"alert"},ue),!!n?.entries.length&&S.default.createElement("p",{role:"status"},s("historyWindow"),": ",n.windowEnd-n.entries.length,"\u2013",n.windowEnd),S.default.createElement("ol",{className:"vcs-commit-list"},se.map(A=>S.default.createElement("li",{key:A.revision},S.default.createElement("button",{className:"vcs-commit-row","aria-pressed":u===A.revision,onClick:()=>k(A.revision)},S.default.createElement("span",{className:"vcs-commit-subject"},"r",A.revision," \xB7 ",A.message.split(/\r?\n/)[0])),S.default.createElement("div",{className:"vcs-commit-meta"},S.default.createElement("code",null,"r",A.revision)," \xB7 ",A.author," \xB7 ",S.default.createElement("time",{dateTime:A.date},A.date))))),f&&S.default.createElement("p",{role:"status"},s("loading")),b&&S.default.createElement("p",{role:"alert"},b," ",S.default.createElement("button",{onClick:()=>w(A=>A+1)},s("retry"))),!f&&!b&&!n?.entries.length&&S.default.createElement("p",null,s("historyEmpty")),!!n?.entries.length&&!se.length&&S.default.createElement("p",{role:"status"},s("historyNoMatch")),!!m.trail.length&&S.default.createElement("button",{disabled:f,onClick:q},s("historyBack")),!b&&n?.nextRevision!=null&&S.default.createElement("button",{disabled:f,onClick:B},s("historyMore"))),S.default.createElement("div",{className:"vcs-history-details"},u&&S.default.createElement(_o,{key:u,sessionId:e,repositoryId:r,token:o,snapshot:t,rpc:i,t:s,onRediscover:c,revision:u})))}function _o({sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m}){let[p,n]=(0,S.useState)(null),[l,u]=(0,S.useState)(null),[k,f]=(0,S.useState)(""),[C,b]=(0,S.useState)(0),[N,y]=(0,S.useState)(""),[w,h]=(0,S.useState)(!1);(0,S.useEffect)(()=>{let v=new AbortController;return n(null),u(null),f(""),s("vcs/svn-detail",{sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i},v.signal).then(H=>{v.signal.aborted||n(H)}).catch(H=>{v.signal.aborted||(f(H.message),H.code==="vcs/rediscover-required"&&m())}),()=>v.abort()},[C]);let x=(p?.changes||[]).filter(v=>v.path.toLocaleLowerCase().includes(N.toLocaleLowerCase()));return S.default.createElement("section",{className:"vcs-commit-details"+(w?" vcs-commit-focused":""),"aria-label":c("commitDetails")},k?S.default.createElement("p",{role:"alert"},k," ",S.default.createElement("button",{onClick:()=>b(v=>v+1)},c("retry"))):p?S.default.createElement("div",{className:"vcs-commit-sidebar"},S.default.createElement("header",{className:"vcs-commit-summary"},S.default.createElement("h3",null,p.message?.split(/\r?\n/)[0]||"r"+i),S.default.createElement("code",{className:"vcs-commit-oid"},"r",i),S.default.createElement("p",null,p.author," \xB7 ",p.date),S.default.createElement("pre",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},p.message),S.default.createElement("p",null,Wt(i)===null?c("commitRoot"):"r"+Wt(i)," \u2192 r",i)),S.default.createElement("aside",{className:"vcs-commit-picker"},S.default.createElement("label",null,c("commitFileSearch")," ",S.default.createElement("input",{"aria-label":c("commitFileSearch"),value:N,onChange:v=>{y(v.target.value),u(null)}})),S.default.createElement("span",null,x.length," / ",p.changes.length),S.default.createElement("ul",{className:"vcs-commit-files"},x.map(v=>S.default.createElement("li",{key:v.id},S.default.createElement("button",{disabled:v.kind!=="file","aria-pressed":l?.id===v.id&&l.mode==="compare",onClick:()=>u({id:v.id,mode:"compare"})},S.default.createElement("span",{className:"vcs-file-status"},v.action," \xB7 "),S.default.createElement("span",{className:"vcs-file-path",title:v.path},v.path,v.copyFromPath&&S.default.createElement("small",null,"\u2190 ",v.copyFromPath," @r",v.copyFromRevision))),v.kind==="file"&&S.default.createElement("div",{className:"vcs-svn-file-actions"},S.default.createElement("button",{onClick:()=>u({id:v.id,mode:"trace"})},c("fileHistory")),v.copyFromPath&&v.copyFromRevision&&!v.copySourceOutsideScope&&S.default.createElement("button",{onClick:()=>u({id:v.id,mode:"copytrace"})},c("svnCopyHistory")," \xB7 ",v.copyFromPath," @r",v.copyFromRevision),v.copySourceOutsideScope&&S.default.createElement("span",null,c("svnCopyOutside")))))),!!p.changes.length&&!x.length&&S.default.createElement("p",{role:"status"},c("emptySearch")),!p.changes.length&&S.default.createElement("p",null,c("commitNoChanges")))):S.default.createElement("p",{role:"status"},c("loading")),S.default.createElement("div",{className:"vcs-commit-review"},S.default.createElement("div",{className:"vcs-commit-comparison","aria-label":c("comparisonContext")},l&&S.default.createElement("button",{className:"vcs-comparison-focus","aria-pressed":w,onClick:()=>h(v=>!v)},c(w?"comparisonRestore":"comparisonFocus")),l?S.default.createElement(Ko,{key:JSON.stringify(l),sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m,...l}):S.default.createElement("p",{role:"status"},c("pick")))))}function Ko({sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,rpc:s,t:c,onRediscover:m,id:p,mode:n}){let[l,u]=(0,S.useState)(null),[k,f]=(0,S.useState)({cursor:null,trail:[]}),[C,b]=(0,S.useState)(""),[N,y]=(0,S.useState)(0),{cursor:w,trail:h}=k;return(0,S.useEffect)(()=>{let x=new AbortController;return u(null),b(""),s("vcs/svn-"+n,{sessionId:e,repositoryId:r,token:o,snapshot:t,revision:i,id:p,...w===null?{}:{cursor:w}},x.signal).then(v=>{x.signal.aborted||u(v)}).catch(v=>{x.signal.aborted||(b(v.message),v.code==="vcs/rediscover-required"&&m())}),()=>x.abort()},[w,N]),C?S.default.createElement("p",{role:"alert"},C," ",S.default.createElement("button",{onClick:()=>y(x=>x+1)},c("retry"))):l?n==="compare"?S.default.createElement("section",{className:"vcs-history-comparison"},S.default.createElement("header",{className:"vcs-comparison-heading"},S.default.createElement("h4",null,l.path),S.default.createElement("p",null,l.left?.label," \u2194 ",l.right?.label),l.notice&&S.default.createElement("p",{role:"status"},l.notice)),l.binary?S.default.createElement("p",null,c("binary")):S.default.createElement(ye,{comparison:l,identity:JSON.stringify([e,r,t,i,p]),t:c})):S.default.createElement("section",null,S.default.createElement("p",null,c(n==="copytrace"?"svnCopyTraceScope":"svnTraceScope")," \xB7 ",l.path," \xB7 peg r",l.pegRevision),S.default.createElement("ol",null,l.entries.map(x=>S.default.createElement("li",{key:x.revision},"r",x.revision," \xB7 ",x.message))),!!h.length&&S.default.createElement("button",{onClick:()=>f({cursor:h.at(-1),trail:h.slice(0,-1)})},c("historyBack")),l.nextRevision!==null&&S.default.createElement("button",{onClick:()=>f({cursor:l.nextRevision,trail:[...h,w].slice(-200)})},c("historyMore"))):S.default.createElement("p",{role:"status"},c("loading"))}function Kt(e){return ne.default.createElement(Yo,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function Yo({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,ne.useState)(null),[m,p]=(0,ne.useState)(!1),[n,l]=(0,ne.useState)(""),[u,k]=(0,ne.useState)(0);(0,ne.useEffect)(()=>{if(s)return()=>{Promise.resolve().then(()=>o("vcs/svn-revoke",{sessionId:e,repositoryId:r,token:s.token})).catch(()=>{})}},[s,e,r]),(0,ne.useEffect)(()=>{if(s)try{return vt(s.expiresAt,()=>{c(null),k(0),p(!1),l(t("svnExpired"))})}catch{c(null),l(t("svnExpired"))}},[s]),(0,ne.useEffect)(()=>{if(!u||!s)return;let b=new AbortController;return p(!0),l(""),o("vcs/svn-revoke",{sessionId:e,repositoryId:r,token:s.token},b.signal).then(()=>{b.signal.aborted||c(null)}).catch(N=>{b.signal.aborted||(l(N.message),N.code==="vcs/rediscover-required"&&i())}).finally(()=>{b.signal.aborted||p(!1)}),()=>b.abort()},[u,s]);let f=b=>{try{Fr(b),l(""),k(0),c(b)}catch(N){l(N.message)}},C=async(...b)=>{try{return await o(...b)}catch(N){throw N.code==="vcs/svn-consent-required"&&!b[2]?.aborted&&(c(null),k(0),l(t("svnExpired"))),N}};return ne.default.createElement("section",{className:"vcs-svn-remote"},!s&&n&&ne.default.createElement("p",{role:"status"},n),s?ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("p",null,t("svnGrantScope")),ne.default.createElement("button",{disabled:m,onClick:()=>k(b=>b+1)},t("svnRevoke")),n&&ne.default.createElement("p",{role:"alert"},n),!m&&ne.default.createElement(_t,{sessionId:e,repositoryId:r,t,onRediscover:i,rpc:C,token:s.token,snapshot:s.snapshot})):ne.default.createElement(zt,{sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i,onApproved:f}))}var E=R(require("react"),1);function jr(e){let r=new Map;for(let o of e){let t=r.get(o.commit);t||(t={names:[],hidden:0},r.set(o.commit,t)),t.names.length<3?t.names.push(o.name):t.hidden++}return r}var T=R(require("react"),1);var U=R(require("react"),1);var Q=R(require("react"),1);var Z=R(require("react"),1);function Yt(e){return Z.default.createElement($o,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.path]),...e})}function $o({sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,Z.useState)(!1),[n,l]=(0,Z.useState)([0]),[u,k]=(0,Z.useState)(null),[f,C]=(0,Z.useState)(""),[b,N]=(0,Z.useState)(0),y=n.at(-1);(0,Z.useEffect)(()=>{if(!m)return;let h=new AbortController;return k(null),C(""),i("vcs/tree-segment",{sessionId:e,repositoryId:r,commit:o,path:t,offset:y},h.signal).then(x=>{h.signal.aborted||k(x)}).catch(x=>{h.signal.aborted||(C(x.message),x.code==="vcs/rediscover-required"&&c())}),()=>h.abort()},[m,y,e,r,o,t,b]);let w=(0,Z.useMemo)(()=>u?{path:t,left:{label:o,text:u.text},right:{label:o,text:u.text}}:null,[u,t,o]);return Z.default.createElement("section",null,Z.default.createElement("button",{"aria-expanded":m,onClick:()=>p(h=>!h)},s("segments")),m&&Z.default.createElement(Z.default.Fragment,null,Z.default.createElement("p",null,s("segmentScope")),f?Z.default.createElement("p",{role:"alert"},f," ",Z.default.createElement("button",{onClick:()=>N(h=>h+1)},s("retry"))):u?Z.default.createElement(Z.default.Fragment,null,Z.default.createElement("p",null,s("segmentBytes"),": ",u.offset,"\u2013",u.endOffset," / ",u.totalBytes," \xB7 ",Z.default.createElement("code",null,u.oid)),Z.default.createElement("button",{disabled:n.length===1,onClick:()=>l(h=>h.slice(0,-1))},s("previous")),Z.default.createElement("button",{disabled:u.nextOffset===null,onClick:()=>l(h=>[...h,u.nextOffset])},s("next")),Z.default.createElement(ye,{single:!0,comparison:w,identity:JSON.stringify([e,r,o,t,y]),t:s})):Z.default.createElement("p",{role:"status"},s("loading"))))}var V=R(require("react"),1);function Qo({sessionId:e,repositoryId:r,commit:o,path:t,follow:i,since:s,until:c,rpc:m,t:p,onRediscover:n,onSelectCommit:l}){let[u,k]=(0,V.useState)({commits:[],nextOffset:null}),[f,C]=(0,V.useState)(0),[b,N]=(0,V.useState)(0),[y,w]=(0,V.useState)(!0),[h,x]=(0,V.useState)("");(0,V.useEffect)(()=>{let H=new AbortController;return w(!0),x(""),m("vcs/tree-history",{sessionId:e,repositoryId:r,commit:o,path:t,offset:f,limit:50,follow:i,...s?{since:s}:{},...c?{until:c}:{}},H.signal).then(L=>{H.signal.aborted||k(g=>({...L,commits:f?[...g.commits,...L.commits]:L.commits}))}).catch(L=>{H.signal.aborted||(x(L.message),L.code==="vcs/rediscover-required"&&n())}).finally(()=>{H.signal.aborted||w(!1)}),()=>H.abort()},[e,r,o,t,f,b,i,s,c]);let v=H=>p(H.boundary==="merge-first-parent"?"fileHistoryMergeBoundary":H.boundary==="ambiguous-rename"?"fileHistoryAmbiguous":H.boundary==="rename-check-limit"?"fileHistoryRenameLimit":"fileHistoryBoundary");return V.default.createElement("section",{"aria-label":p("pathHistory"),"aria-busy":y},V.default.createElement("p",null,p("pathHistoryScope")),V.default.createElement("p",{style:{overflowWrap:"anywhere"}},V.default.createElement("code",null,u.path||t)," \xB7 ",V.default.createElement("code",null,o),u.followsRenames!==void 0&&V.default.createElement(V.default.Fragment,null," \xB7 ",p(u.followsRenames?"fileHistoryFollow":"pathHistoryNoFollow"))),V.default.createElement("ol",null,u.commits.map(H=>V.default.createElement("li",{key:H.id},V.default.createElement("code",{title:H.id},H.id.slice(0,10))," \xB7 ",l?V.default.createElement("button",{onClick:()=>l(H.id,H.path||t)},H.subject):H.subject,V.default.createElement("div",null,H.boundary&&V.default.createElement("span",null,v(H)," "),H.path&&V.default.createElement("code",null,H.oldPath?H.oldPath+" \u2192 ":"",H.path)," ",H.similarity!==void 0&&V.default.createElement("span",null,p("fileHistorySimilarity"),": ",H.similarity,"% \xB7 "),H.author," \xB7 ",V.default.createElement("time",{dateTime:H.date},H.date))))),y&&V.default.createElement("p",{role:"status"},p("loading")),h&&V.default.createElement("p",{role:"alert"},h," ",V.default.createElement("button",{onClick:()=>N(H=>H+1)},p("retry"))),!y&&!h&&!u.commits.length&&V.default.createElement("p",null,p("historyEmpty")),u.truncated&&V.default.createElement("p",{role:"status"},p("historyLimit")),!h&&u.nextOffset!==null&&V.default.createElement("button",{disabled:y,onClick:()=>C(u.nextOffset)},p("historyMore")))}function $t(e){let[r,o]=(0,V.useState)(!1),[t,i]=(0,V.useState)(!1),[s,c]=(0,V.useState)(""),[m,p]=(0,V.useState)("");return V.default.createElement("div",null,V.default.createElement("button",{"aria-expanded":r,onClick:()=>o(n=>!n)},e.t("pathHistory")),r&&V.default.createElement(V.default.Fragment,null,V.default.createElement("label",null,V.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>i(n.target.checked)}),e.t("fileHistoryFollow")),V.default.createElement("p",null,e.t("pathHistoryFollowScope")),V.default.createElement("p",null,e.t("fileHistoryDateScope")),["historyServer_since","historyServer_until"].map((n,l)=>V.default.createElement("label",{key:n},e.t(n)," ",V.default.createElement("input",{maxLength:40,placeholder:"YYYY-MM-DD[THH:MM[:SS][\xB1HH:MM]]","aria-label":e.t(n),value:l?m:s,onChange:u=>l?p(u.target.value):c(u.target.value)}))),V.default.createElement(Qo,{key:JSON.stringify([t,s.trim(),m.trim()]),follow:t,since:s.trim()||null,until:m.trim()||null,...e})))}function Re({sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c,onClose:m,onSelectCommit:p,line:n=null}){let[l,u]=(0,Q.useState)(null),[k,f]=(0,Q.useState)(""),[C,b]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let y=new AbortController;return u(null),f(""),i("vcs/tree-file",{sessionId:e,repositoryId:r,commit:o,path:t},y.signal).then(w=>{y.signal.aborted||u(w)}).catch(w=>{y.signal.aborted||(f(w.message),w.code==="vcs/rediscover-required"&&c())}),()=>y.abort()},[e,r,o,t,C]);let N=(0,Q.useMemo)(()=>l?{path:t,left:{label:o,text:l.text||""},right:{label:o,text:l.text||""}}:null,[l,t,o]);return Q.default.createElement("section",{"aria-label":s("treePreview")},Q.default.createElement("h4",null,t),Q.default.createElement("button",{onClick:m},s("treeClose")),Q.default.createElement("p",null,Q.default.createElement("code",null,o)),k?Q.default.createElement("p",{role:"alert"},k," ",Q.default.createElement("button",{onClick:()=>b(y=>y+1)},s("retry"))):l?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("p",null,Q.default.createElement("code",null,l.oid)," \xB7 ",s("encoding"),": ",l.encoding||"\u2014"),n&&Q.default.createElement("p",{role:"status"},s("blameOriginLine"),": ",n,!l.text||n>l.text.split(`
|
|
180
180
|
`).length?" \xB7 "+s("blameUnmapped"):""),l.notice&&Q.default.createElement("p",{role:"status"},l.notice),l.binary?Q.default.createElement("p",null,s("binary")):l.text===""?Q.default.createElement("p",null,s("treeEmpty")):Q.default.createElement(ye,{single:!0,line:n,comparison:N,identity:JSON.stringify([e,r,o,t]),t:s})):Q.default.createElement("p",{role:"status"},s("loading")),Q.default.createElement(Yt,{sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c}),Q.default.createElement($t,{key:JSON.stringify([e,r,o,t]),sessionId:e,repositoryId:r,commit:o,path:t,rpc:i,t:s,onRediscover:c,onSelectCommit:p}))}function Ir(e=""){let r=[{path:"",name:"/"}];if(e){let o="";for(let t of e.split("/"))o=o?o+"/"+t:t,r.push({path:o,name:t})}return r}function Ur(e,r="",o=""){let t=r?r+"/":"",i=o.toLowerCase();return e.filter(s=>{let c=s.path.slice(t.length);return s.path.startsWith(t)&&c.length>0&&!c.includes("/")&&c.toLowerCase().includes(i)}).sort((s,c)=>+(c.type==="tree")-+(s.type==="tree")||(s.path<c.path?-1:s.path>c.path?1:0))}function Xo({sessionId:e,repositoryId:r,commit:o,rpc:t,t:i,onRediscover:s,onSelectCommit:c}){let[m,p]=(0,U.useState)(null),[n,l]=(0,U.useState)(""),[u,k]=(0,U.useState)(0),[f,C]=(0,U.useState)(""),[b,N]=(0,U.useState)(0),[y,w]=(0,U.useState)(""),[h,x]=(0,U.useState)(null);if((0,U.useEffect)(()=>{let g=new AbortController;return p(null),l(""),t("vcs/tree",{sessionId:e,repositoryId:r,commit:o},g.signal).then(B=>{g.signal.aborted||p(B)}).catch(B=>{g.signal.aborted||(l(B.message),B.code==="vcs/rediscover-required"&&s())}),()=>g.abort()},[e,r,o,u]),n)return U.default.createElement("p",{role:"alert"},n," ",U.default.createElement("button",{onClick:()=>k(g=>g+1)},i("retry")));if(!m)return U.default.createElement("p",{role:"status"},i("loading"));let v=f?f+"/":"",H=Ur(m.entries,f,y),L=g=>{C(g),N(0),w(""),x(null)};return U.default.createElement("section",{"aria-label":i("historicalTree")},U.default.createElement("p",null,i("historicalTreeScope")),U.default.createElement("code",null,o),U.default.createElement("p",null,f||"/"," ",f&&U.default.createElement("button",{onClick:()=>L(f.includes("/")?f.slice(0,f.lastIndexOf("/")):"")},i("treeUp"))),U.default.createElement("nav",{"aria-label":i("treeBreadcrumbs")},Ir(f).map(g=>U.default.createElement(U.default.Fragment,{key:g.path},g.path&&" / ",g.path===f?U.default.createElement("span",{"aria-current":"location"},g.name):U.default.createElement("button",{onClick:()=>L(g.path)},g.name)))),U.default.createElement("label",null,i("treeSearch")," ",U.default.createElement("input",{"aria-label":i("treeSearch"),value:y,onChange:g=>{w(g.target.value),N(0),x(null)}})),U.default.createElement("p",null,H.length," ",i("treeEntries")),!H.length&&y&&U.default.createElement("p",{role:"status"},i("emptySearch")),U.default.createElement("ul",null,H.slice(b*100,b*100+100).map(g=>U.default.createElement("li",{key:g.path},g.type==="tree"?U.default.createElement("button",{onClick:()=>L(g.path)},g.path.slice(v.length),"/"):g.type==="blob"&&["100644","100755"].includes(g.mode)?U.default.createElement("button",{"aria-pressed":h===g.path,onClick:()=>x(g.path)},g.path.slice(v.length)):U.default.createElement("span",null,g.path.slice(v.length))," \xB7 ",U.default.createElement("code",null,g.mode," ",g.type," ",U.default.createElement("span",{title:g.oid},g.oid.slice(0,10)))))),b>0&&U.default.createElement("button",{onClick:()=>{N(g=>g-1),x(null)}},i("treePrevious")),(b+1)*100<H.length&&U.default.createElement("button",{onClick:()=>{N(g=>g+1),x(null)}},i("treeNext")),h&&U.default.createElement(Re,{key:JSON.stringify([e,r,o,h]),sessionId:e,repositoryId:r,commit:o,rpc:t,t:i,onRediscover:s,onSelectCommit:c,path:h,onClose:()=>x(null)}))}function Qt(e){return U.default.createElement(Zo,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function Zo(e){let[r,o]=(0,U.useState)(!1);return U.default.createElement("div",null,U.default.createElement("button",{"aria-expanded":r,onClick:()=>o(t=>!t)},e.t("historicalTree")),r&&U.default.createElement(Xo,{...e}))}var Y=R(require("react"),1);var j=R(require("react"),1);function Ro({sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:i,follow:s,since:c,until:m,rpc:p,t:n,onRediscover:l,onSelectCommit:u}){let[k,f]=(0,j.useState)({commits:[],nextOffset:null}),[C,b]=(0,j.useState)(0),[N,y]=(0,j.useState)(0),[w,h]=(0,j.useState)(!0),[x,v]=(0,j.useState)(""),H={...c?{since:c}:{},...m?{until:m}:{}};return(0,j.useEffect)(()=>{let L=new AbortController;return h(!0),v(""),p("vcs/file-history",{sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:i,offset:C,limit:50,follow:s,...H},L.signal).then(g=>{L.signal.aborted||f(B=>({...g,commits:C?[...B.commits,...g.commits]:g.commits}))}).catch(g=>{L.signal.aborted||(v(g.message),g.code==="vcs/rediscover-required"&&l())}).finally(()=>{L.signal.aborted||h(!1)}),()=>L.abort()},[e,r,o,t,i,C,N,s,c,m]),j.default.createElement("section",{"aria-label":n("fileHistory"),"aria-busy":w},j.default.createElement("p",null,n("fileHistoryScope")),j.default.createElement("p",{style:{overflowWrap:"anywhere"}},k.path," \xB7 ",j.default.createElement("code",null,o)),j.default.createElement("ol",null,k.commits.map(L=>j.default.createElement("li",{key:L.id},j.default.createElement("code",{title:L.id},L.id.slice(0,10))," \xB7 ",u?j.default.createElement("button",{onClick:()=>u(L.id,L.path||k.path)},L.subject):L.subject,j.default.createElement("div",null,L.boundary&&j.default.createElement("span",null,n(L.boundary==="merge-first-parent"?"fileHistoryMergeBoundary":L.boundary==="ambiguous-rename"?"fileHistoryAmbiguous":L.boundary==="rename-check-limit"?"fileHistoryRenameLimit":"fileHistoryBoundary")," "),L.path&&j.default.createElement("code",null,L.oldPath?L.oldPath+" \u2192 ":"",L.path)," ",L.similarity!==void 0&&j.default.createElement("span",null,n("fileHistorySimilarity"),": ",L.similarity,"% \xB7 "),L.author," \xB7 ",j.default.createElement("time",{dateTime:L.date},L.date))))),w&&j.default.createElement("p",{role:"status"},n("loading")),x&&j.default.createElement("p",{role:"alert"},x," ",j.default.createElement("button",{onClick:()=>y(L=>L+1)},n("retry"))),!w&&!x&&!k.commits.length&&j.default.createElement("p",null,n("historyEmpty")),k.truncated&&j.default.createElement("p",{role:"status"},n("historyLimit")),!x&&k.nextOffset!==null&&j.default.createElement("button",{disabled:w,onClick:()=>b(k.nextOffset)},n("historyMore")))}function Xt(e){return j.default.createElement(ei,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.parentIndex,e.id]),...e})}function ei(e){let[r,o]=(0,j.useState)(!1),[t,i]=(0,j.useState)(!1),[s,c]=(0,j.useState)(""),[m,p]=(0,j.useState)("");return j.default.createElement("div",null,j.default.createElement("button",{"aria-expanded":r,onClick:()=>o(n=>!n)},e.t("fileHistory")),r&&j.default.createElement(j.default.Fragment,null,j.default.createElement("label",null,j.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>i(n.target.checked)}),e.t("fileHistoryFollow")),j.default.createElement("p",null,e.t("fileHistoryFollowScope")),j.default.createElement("p",null,e.t("fileHistoryDateScope")),["historyServer_since","historyServer_until"].map((n,l)=>j.default.createElement("label",{key:n},e.t(n)," ",j.default.createElement("input",{maxLength:40,placeholder:"YYYY-MM-DD[THH:MM[:SS][\xB1HH:MM]]","aria-label":e.t(n),value:l?m:s,onChange:u=>l?p(u.target.value):c(u.target.value)}))),j.default.createElement(Ro,{key:JSON.stringify([t,s.trim(),m.trim()]),follow:t,since:s.trim()||null,until:m.trim()||null,...e})))}var I=R(require("react"),1);function ti({sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:i,rpc:s,t:c,onRediscover:m,onSelectCommit:p}){let[n,l]=(0,I.useState)(null),[u,k]=(0,I.useState)(""),[f,C]=(0,I.useState)(0),[b,N]=(0,I.useState)(1),[y,w]=(0,I.useState)(null);return(0,I.useEffect)(()=>{let h=new AbortController;return l(null),k(""),w(null),s("vcs/blame",{sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:i,startLine:b,lineLimit:500},h.signal).then(x=>{h.signal.aborted||l(x)}).catch(x=>{h.signal.aborted||(k(x.message),x.code==="vcs/rediscover-required"&&m())}),()=>h.abort()},[e,r,o,t,i,f,b]),u?I.default.createElement("p",{role:"alert"},u," ",I.default.createElement("button",{onClick:()=>C(h=>h+1)},c("retry"))):n?I.default.createElement("section",{"aria-label":c("blame")},I.default.createElement("p",null,c("blameScope")),p&&I.default.createElement("p",null,c("blameNavigation")),n.notice&&I.default.createElement("p",{role:"status"},n.notice),n.truncated&&I.default.createElement("p",{role:"status"},c("blameLimit")),!n.notice&&!n.lines.length&&I.default.createElement("p",null,c("blameEmpty")),!!n.lines.length&&I.default.createElement("div",{style:{overflow:"auto",maxHeight:480}},I.default.createElement("table",null,I.default.createElement("thead",null,I.default.createElement("tr",null,["blameLine","blameCommit","blameAuthor","blameSummary","blameSource"].map(h=>I.default.createElement("th",{key:h,scope:"col"},c(h))))),I.default.createElement("tbody",null,n.lines.map(h=>I.default.createElement("tr",{key:h.line},I.default.createElement("th",{scope:"row"},h.line),I.default.createElement("td",null,p?I.default.createElement("button",{title:h.commit,onClick:()=>p(h.commit,h.path||null)},I.default.createElement("code",null,h.commit.slice(0,10))):I.default.createElement("code",{title:h.commit},h.commit.slice(0,10))),I.default.createElement("td",null,h.author),I.default.createElement("td",null,h.summary),I.default.createElement("td",null,I.default.createElement("pre",{style:{margin:0}},h.text),h.path&&h.originalLine?I.default.createElement("button",{onClick:()=>w(h)},c("blameOriginLine"),": ",h.path,":",h.originalLine):I.default.createElement("span",null,c("blameUnmapped")))))))),I.default.createElement("p",null,n.startLine||b,"\u2013",n.lines.at(-1)?.line||b," / ",n.totalLines??"\u2014"),I.default.createElement("button",{disabled:b===1,onClick:()=>N(Math.max(1,b-500))},c("blamePrevious")),I.default.createElement("button",{disabled:n.nextLine==null,onClick:()=>N(n.nextLine)},c("blameNext")),y&&I.default.createElement(Re,{key:JSON.stringify([y.commit,y.path,y.originalLine]),sessionId:e,repositoryId:r,rpc:s,t:c,onRediscover:m,onSelectCommit:p,commit:y.commit,path:y.path,line:y.originalLine,onClose:()=>w(null)})):I.default.createElement("p",{role:"status"},c("loading"))}function Zt(e){let[r,o]=(0,I.useState)(!1);return I.default.createElement("div",null,I.default.createElement("button",{"aria-expanded":r,onClick:()=>o(t=>!t)},e.t("blame")),r&&I.default.createElement(ti,{...e}))}function et(e){return Y.default.createElement(ri,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit,e.parentIndex,e.base,e.target,e.id]),...e})}function ri({sessionId:e,repositoryId:r,commit:o,parentIndex:t,base:i,target:s,id:c,rpc:m,t:p,onRediscover:n,onSelectCommit:l}){let[u,k]=(0,Y.useState)(null),[f,C]=(0,Y.useState)(""),[b,N]=(0,Y.useState)(0),[y,w]=(0,Y.useState)(!1);return(0,Y.useEffect)(()=>{let h=new AbortController;return k(null),C(""),m(i?"vcs/revision-compare":"vcs/commit-compare",i?{sessionId:e,repositoryId:r,base:i,target:s,id:c,...y?{large:!0}:{}}:{sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:c,...y?{large:!0}:{}},h.signal).then(x=>{h.signal.aborted||k(x)}).catch(x=>{h.signal.aborted||(C(x.message),x.code==="vcs/rediscover-required"&&n())}),()=>h.abort()},[e,r,o,t,i,s,c,b,y]),f?Y.default.createElement("p",{role:"alert"},f," ",Y.default.createElement("button",{onClick:()=>N(h=>h+1)},p("retry")),y&&Y.default.createElement("button",{onClick:()=>w(!1)},p("largeClose"))):u?Y.default.createElement("section",{className:"vcs-history-comparison"},Y.default.createElement("header",{className:"vcs-comparison-heading"},Y.default.createElement("h4",null,u.path),Y.default.createElement("p",null,u.left.label," \u2194 ",u.right.label),u.notice&&Y.default.createElement("p",{role:"status"},u.notice),y?Y.default.createElement("p",null,p("largeScope")," ",Y.default.createElement("button",{onClick:()=>w(!1)},p("largeClose"))):u.notice?.includes("2 MiB")&&Y.default.createElement("p",null,p("largeScope")," ",Y.default.createElement("button",{onClick:()=>w(!0)},p("largeLoad")))),u.binary?Y.default.createElement("p",null,p("binary")):Y.default.createElement(ye,{comparison:u,identity:JSON.stringify(i?[e,r,i,s,c]:[e,r,o,t,c]),t:p}),Y.default.createElement("div",{className:"vcs-comparison-extras"},o&&!i&&Y.default.createElement(Xt,{onSelectCommit:l,key:"file-history:"+JSON.stringify([e,r,o,t,c]),sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:c,rpc:m,t:p,onRediscover:n}),o&&!i&&Y.default.createElement(Zt,{onSelectCommit:l,key:"blame:"+JSON.stringify([e,r,o,t,c]),sessionId:e,repositoryId:r,commit:o,parentIndex:t,id:c,rpc:m,t:p,onRediscover:n}),(o||i)&&Y.default.createElement(Ze,{key:"image:"+JSON.stringify([e,r,o,t,i,s,c]),sessionId:e,repositoryId:r,commit:o,parentIndex:t,base:i,target:s,id:c,rpc:m,t:p,onRediscover:n}))):Y.default.createElement("p",{role:"status"},p("loading"),y&&Y.default.createElement("button",{onClick:()=>w(!1)},p("largeClose")))}function qr(e,r){if(typeof r!="string"||!r)return null;let o=e.filter(t=>t.path===r);return o.length===1&&typeof o[0].id=="string"&&o[0].id?o[0].id:null}function Gr(e,r=""){let o=r.trim().toLowerCase();return o?e.filter(t=>[t.id,t.author,t.subject].some(i=>i?.toLowerCase().includes(o))):e}function yt(e,r=""){let o=r.trim().toLowerCase();return o?e.filter(t=>[t.path,t.oldPath].some(i=>i?.toLowerCase().includes(o))):e}function tt(e){return T.default.createElement(oi,{key:JSON.stringify([e.sessionId,e.repositoryId,e.commit]),...e})}function oi({sessionId:e,repositoryId:r,commit:o,rpc:t,t:i,onRediscover:s,onSelectCommit:c,initialPath:m}){let p=(0,T.useRef)(!0),[n,l]=(0,T.useState)(null),[u,k]=(0,T.useState)(""),[f,C]=(0,T.useState)(!1),[b,N]=(0,T.useState)(0),[y,w]=(0,T.useState)(null),[h,x]=(0,T.useState)(""),[v,H]=(0,T.useState)(0);if((0,T.useEffect)(()=>{let g=new AbortController;return w(null),x(""),t("vcs/commit",{sessionId:e,repositoryId:r,commit:o,parentIndex:b},g.signal).then(B=>{g.signal.aborted||(w(B),p.current&&(p.current=!1,l(qr(B.changes,m))))}).catch(B=>{g.signal.aborted||(x(B.message),B.code==="vcs/rediscover-required"&&s())}),()=>g.abort()},[e,r,o,b,v]),h)return T.default.createElement("p",{role:"alert"},h," ",T.default.createElement("button",{onClick:()=>H(g=>g+1)},i("retry")));if(!y)return T.default.createElement("p",{role:"status"},i("loading"));let L=yt(y.changes,u);return T.default.createElement("section",{className:"vcs-commit-details"+(f?" vcs-commit-focused":""),"aria-label":i("commitDetails")},T.default.createElement("div",{className:"vcs-commit-sidebar"},T.default.createElement("header",{className:"vcs-commit-summary"},T.default.createElement("h3",null,y.subject),T.default.createElement("code",{className:"vcs-commit-oid"},y.id),T.default.createElement("p",null,y.author," \xB7 ",y.date),y.committer&&y.committer!==y.author&&T.default.createElement("p",null,i("commitCommitter")," ",y.committer,y.committerDate?` \xB7 ${y.committerDate}`:""),y.signature?.signed===!0&&T.default.createElement("p",null,T.default.createElement("span",{title:i("commitSignatureUnverified")},i("commitSigned",{format:y.signature.format}))),y.messageTruncated&&T.default.createElement("p",{role:"status"},i("commitMessageLimit")),y.message&&T.default.createElement("pre",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",maxHeight:240,overflow:"auto"}},y.message),y.parents.length>1&&T.default.createElement("label",null,i("commitParent")," ",T.default.createElement("select",{"aria-label":i("commitParent"),value:b,onChange:g=>{l(null),w(null),N(Number(g.target.value))}},y.parents.map((g,B)=>T.default.createElement("option",{key:g,value:B},B+1,": ",g.slice(0,10))))),T.default.createElement("p",null,y.parent||i("commitRoot")," \u2192 ",y.id.slice(0,10))),T.default.createElement("aside",{className:"vcs-commit-picker"},T.default.createElement("label",null,i("commitFileSearch")," ",T.default.createElement("input",{"aria-label":i("commitFileSearch"),value:u,onChange:g=>{k(g.target.value),l(null)}})),T.default.createElement("span",null," ",L.length," / ",y.changes.length),T.default.createElement("ul",{className:"vcs-commit-files"},L.map(g=>T.default.createElement("li",{key:g.id},T.default.createElement("button",{"aria-pressed":n===g.id,onClick:()=>l(g.id)},T.default.createElement("span",{className:"vcs-file-status"},g.status," \xB7 "),T.default.createElement("span",{className:"vcs-file-path",title:g.oldPath?g.oldPath+" \u2192 "+g.path:g.path},g.path,g.oldPath&&T.default.createElement("small",null,"\u2190 ",g.oldPath)))))),!!y.changes.length&&!L.length&&T.default.createElement("p",{role:"status"},i("emptySearch")),!y.changes.length&&T.default.createElement("p",null,i("commitNoChanges")),T.default.createElement(Qt,{key:JSON.stringify([e,r,o]),sessionId:e,repositoryId:r,commit:o,rpc:t,t:i,onRediscover:s,onSelectCommit:c}))),T.default.createElement("div",{className:"vcs-commit-review"},T.default.createElement("div",{className:"vcs-commit-comparison","aria-label":i("comparisonContext")},n&&T.default.createElement("button",{className:"vcs-comparison-focus","aria-pressed":f,onClick:()=>C(g=>!g)},i(f?"comparisonRestore":"comparisonFocus")),n?T.default.createElement(et,{key:n,sessionId:e,repositoryId:r,commit:o,parentIndex:b,id:n,onSelectCommit:c,rpc:t,t:i,onRediscover:s}):T.default.createElement("p",{role:"status"},i("pick")))))}var re=R(require("react"),1);function Jr(e){if(!Array.isArray(e))throw new Error("Invalid graph commits");let r=e.slice(0,200),o=new Map,t=[],i=[],s=m=>typeof m=="string"&&/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(m);for(let[m,p]of r.entries()){if(!p||!s(p.id)||!Array.isArray(p.parents)||o.has(p.id))throw new Error("Invalid graph node");o.set(p.id,m),t.push({id:p.id,row:m})}let c=!1;for(let m of r){let p=new Set;for(let n of m.parents){if(i.length===1e3){c=!0;break}if(!s(n)||n.length!==m.id.length||n===m.id||p.has(n))throw new Error("Invalid graph parent");p.add(n);let l=o.get(n);if(l!==void 0&&l<=o.get(m.id))throw new Error("Graph requires child-before-parent order");i.push({from:m.id,to:n,missing:l===void 0})}if(c)break}return{nodes:t,edges:i,nodesTruncated:e.length>200,edgesTruncated:c}}function zr(e){let r=Array(32).fill(null),o=new Map,t=[],i=new Set,s=!1,c=n=>{if(i.has(n))return null;let l=r.indexOf(n);return l>=0?l:(l=r.indexOf(null),l<0?(s=!0,i.add(n),null):(r[l]=n,l))},m=new Map;for(let n of e.edges){if(n.missing)continue;let l=m.get(n.from)||[];l.push(n.to),m.set(n.from,l)}for(let n of e.nodes){let l=c(n.id);if(o.set(n.id,{...n,lane:l}),t.push({...n,lane:l}),l===null)continue;r[l]=null;let u=m.get(n.id)||[];for(let[k,f]of u.entries())r.includes(f)||(k===0&&r[l]===null?r[l]=f:c(f))}let p=e.edges.filter(n=>!n.missing).flatMap(n=>{let l=o.get(n.from),u=o.get(n.to);return l.lane===null||u.lane===null?[]:[{...n,start:l.row,end:u.row,fromLane:l.lane,toLane:u.lane}]});return{nodes:t,edges:p,lanesTruncated:s,laneCount:Math.max(1,...t.map(n=>(n.lane??0)+1))}}function ii({commits:e,selected:r,onSelect:o,t}){let i;try{i=Jr(e)}catch{return re.default.createElement("p",{role:"alert"},t("graphInvalid"))}let s=zr(i),c=s.edges,m=Math.max(100,24+18*s.laneCount),p=Math.max(40,i.nodes.length*36);return re.default.createElement("section",{"aria-label":t("historyGraph")},re.default.createElement("p",null,t("graphScope")),s.lanesTruncated&&re.default.createElement("p",{role:"status"},t("graphLaneLimit")),(i.nodesTruncated||i.edgesTruncated)&&re.default.createElement("p",{role:"status"},t("graphLimit")),re.default.createElement("div",{style:{maxHeight:480,overflow:"auto",display:"flex"}},re.default.createElement("svg",{width:m,height:p,"aria-hidden":"true",style:{flexShrink:0}},c.map(n=>{let l=n.start*36+18,u=n.end*36+18,k=12+n.fromLane*18,f=12+n.toLane*18;return re.default.createElement("path",{key:n.from+n.to,d:"M "+k+" "+l+" C "+k+" "+(l+18)+", "+f+" "+(u-18)+", "+f+" "+u,fill:"none",stroke:"currentColor",opacity:"0.45"})}),s.nodes.filter(n=>n.lane!==null).map(n=>re.default.createElement("circle",{key:n.id,cx:12+n.lane*18,cy:n.row*36+18,r:"4",fill:"currentColor"}))),re.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},i.nodes.map(n=>re.default.createElement("li",{key:n.id,style:{height:36,whiteSpace:"nowrap"}},re.default.createElement("button",{title:n.id,"aria-current":r===n.id?!0:void 0,style:r===n.id?{fontWeight:700,textDecoration:"underline"}:void 0,onKeyDown:l=>{if(l.altKey||l.ctrlKey||l.metaKey||l.shiftKey)return;let u=l.key==="ArrowDown"?Math.min(n.row+1,i.nodes.length-1):l.key==="ArrowUp"?Math.max(0,n.row-1):l.key==="Home"?0:l.key==="End"?i.nodes.length-1:null;u!==null&&(l.preventDefault(),l.stopPropagation(),l.currentTarget.closest("ol").querySelectorAll("button")[u]?.focus())},onClick:()=>o(n.id)},re.default.createElement("code",null,n.id.slice(0,10))," ",e[n.row].subject))))),re.default.createElement("details",null,re.default.createElement("summary",null,t("graphRelations")),re.default.createElement("ul",null,i.edges.map(n=>re.default.createElement("li",{key:n.from+n.to},re.default.createElement("code",null,n.from)," \u2192 ",re.default.createElement("code",null,n.to),n.missing?" \xB7 "+t("graphMissing"):"")))))}function Rt(e){let[r,o]=(0,re.useState)(!1);return re.default.createElement("div",null,re.default.createElement("button",{"aria-expanded":r,onClick:()=>o(t=>!t)},e.t("historyGraph")),r&&re.default.createElement(ii,{...e}))}var F=R(require("react"),1);function si({sessionId:e,repositoryId:r,base:o,target:t,rpc:i,t:s,onRediscover:c}){let[m,p]=(0,F.useState)(null),[n,l]=(0,F.useState)(""),[u,k]=(0,F.useState)(0),[f,C]=(0,F.useState)(null),[b,N]=(0,F.useState)("");if((0,F.useEffect)(()=>{let w=new AbortController;return p(null),l(""),C(null),i("vcs/revision-changes",{sessionId:e,repositoryId:r,base:o,target:t},w.signal).then(h=>{w.signal.aborted||p(h)}).catch(h=>{w.signal.aborted||(l(h.message),h.code==="vcs/rediscover-required"&&c())}),()=>w.abort()},[e,r,o,t,u]),n)return F.default.createElement("p",{role:"alert"},n," ",F.default.createElement("button",{onClick:()=>k(w=>w+1)},s("retry")));if(!m)return F.default.createElement("p",{role:"status"},s("loading"));let y=yt(m.changes,b);return F.default.createElement("div",null,F.default.createElement("label",null,s("commitFileSearch")," ",F.default.createElement("input",{"aria-label":s("commitFileSearch"),value:b,onChange:w=>{N(w.target.value),C(null)}})),F.default.createElement("span",null," ",y.length," / ",m.changes.length),!!m.changes.length&&!y.length&&F.default.createElement("p",{role:"status"},s("emptySearch")),!m.changes.length&&F.default.createElement("p",null,s("revisionEmpty")),F.default.createElement("ul",null,y.map(w=>F.default.createElement("li",{key:w.id},F.default.createElement("button",{"aria-pressed":f===w.id,onClick:()=>C(w.id)},w.status," \xB7 ",w.oldPath?w.oldPath+" \u2192 ":"",w.path)))),f&&F.default.createElement(et,{key:f,sessionId:e,repositoryId:r,base:o,target:t,id:f,rpc:i,t:s,onRediscover:c}))}function er(e){return F.default.createElement(ni,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function ni({commits:e,sessionId:r,repositoryId:o,rpc:t,t:i,onRediscover:s,onReferencesLoaded:c}){let[m,p]=(0,F.useState)(""),[n,l]=(0,F.useState)(""),[u,k]=(0,F.useState)([]),[f,C]=(0,F.useState)(!1),[b,N]=(0,F.useState)(0),[y,w]=(0,F.useState)(!1),[h,x]=(0,F.useState)("");return(0,F.useEffect)(()=>{if(!b)return;let v=new AbortController;return w(!0),x(""),t("vcs/references",{sessionId:r,repositoryId:o},v.signal).then(H=>{v.signal.aborted||(k(H.references),C(!0),c?.(H.references))}).catch(H=>{v.signal.aborted||(x(H.message),H.code==="vcs/rediscover-required"&&s())}).finally(()=>{v.signal.aborted||w(!1)}),()=>v.abort()},[r,o,b]),F.default.createElement("section",{"aria-label":i("revisionTitle")},F.default.createElement("h3",null,i("revisionTitle")),F.default.createElement("p",null,i("revisionScope")),F.default.createElement("button",{disabled:y,onClick:()=>N(v=>v+1)},i("revisionLoadRefs")),F.default.createElement("p",null,i("revisionRefsScope")),f&&!y&&!h&&F.default.createElement("p",{role:"status"},u.length?`${i("revisionRefsCount")}: ${u.length}`:i("revisionRefsEmpty")),y&&F.default.createElement("p",{role:"status"},i("loading")),h&&F.default.createElement("p",{role:"alert"},h),[[m,p,"revisionBase"],[n,l,"revisionTarget"]].map(([v,H,L])=>F.default.createElement("label",{key:L},i(L)," ",F.default.createElement("select",{"aria-label":i(L),value:v,onChange:g=>H(g.target.value)},F.default.createElement("option",{value:""},"\u2014"),!!e.length&&F.default.createElement("optgroup",{label:i("revisionLoadedCommits")},e.map(g=>F.default.createElement("option",{key:g.id,value:g.id},g.id.slice(0,10)," \xB7 ",g.subject))),!!u.length&&F.default.createElement("optgroup",{label:i("revisionLocalRefs")},u.map(g=>F.default.createElement("option",{key:g.name,value:g.commit},g.name," \xB7 ",g.commit.slice(0,10)))),v&&!e.some(g=>g.id===v)&&!u.some(g=>g.commit===v)&&F.default.createElement("option",{value:v},v)))),F.default.createElement("button",{disabled:!m||!n,onClick:()=>{p(n),l(m)}},i("revisionSwap")),F.default.createElement("p",{style:{overflowWrap:"anywhere"}},F.default.createElement("code",null,m||"\u2014")," \u2192 ",F.default.createElement("code",null,n||"\u2014")),m&&n&&F.default.createElement(si,{key:JSON.stringify([r,o,m,n]),sessionId:r,repositoryId:o,base:m,target:n,rpc:t,t:i,onRediscover:s}))}function rt(e){return E.default.createElement(ai,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function ai({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i,showSearch:s=!1}){let[c,m]=(0,E.useState)({id:null,path:null,revision:0}),[p,n]=(0,E.useState)(""),[l,u]=(0,E.useState)([]),[k,f]=(0,E.useState)(null),[C,b]=(0,E.useState)(""),[N,y]=(0,E.useState)(""),w=P=>{let le=(k||[]).find(we=>JSON.stringify([we.name,we.commit])===P)?.commit||"";y(P),b(le),H(we=>we?{...we,snapshot:le||null}:null),de(0),n(""),A(null),D({commits:[],snapshot:null,nextOffset:null})},[h,x]=(0,E.useState)({message:"",author:"",path:"",since:"",until:""}),[v,H]=(0,E.useState)(null),L=P=>{H({values:P,snapshot:O.snapshot}),de(0),n(""),A(null),D(X=>({...X,commits:[],nextOffset:null}))},g=()=>{ce&&(D(P=>({commits:[],snapshot:P.snapshot,nextOffset:null})),A(null),n(""),de(Math.max(0,ce-50)))},B=(0,E.useMemo)(()=>jr(k||[]),[k]),q=c.id,se=(P,X=null)=>{c.id&&u(le=>[...le,c]),m(le=>({id:P,path:X,revision:le.revision+1}))},ue=()=>{if(!l.length)return;let P=l[l.length-1];u(X=>X.slice(0,-1)),m(X=>({id:P.id,path:P.path,revision:X.revision+1}))},A=(P,X=null)=>m(le=>({id:P,path:X,revision:le.revision+(X||le.path?1:0)})),[O,D]=(0,E.useState)({commits:[],snapshot:null,nextOffset:null}),[ce,de]=(0,E.useState)(0),[Fe,wt]=(0,E.useState)(0),[be,ke]=(0,E.useState)(!0),[He,Ae]=(0,E.useState)("");(0,E.useEffect)(()=>{let P=new AbortController;return ke(!0),Ae(""),o("vcs/history",{sessionId:e,repositoryId:r,offset:ce,limit:50,...v?{search:v.values}:{},...v?.snapshot||C||O.snapshot?{snapshot:v?.snapshot||C||O.snapshot}:{}},P.signal).then(X=>{if(!P.signal.aborted){let le=gt(O,X,ce);D(le);let we=new Set(O.commits.filter(pe=>!le.commits.some(Je=>Je.id===pe.id)).map(pe=>pe.id));m(pe=>we.has(pe.id)?{id:null,path:null,revision:pe.revision+1}:pe)}}).catch(X=>{P.signal.aborted||(Ae(X.message),X.code==="vcs/rediscover-required"&&i())}).finally(()=>{P.signal.aborted||ke(!1)}),()=>P.abort()},[e,r,ce,Fe,v,C]);let xe=Gr(O.commits,p);return E.default.createElement("section",{className:"vcs-history vcs-history-browser","aria-label":t("history"),"aria-busy":be},E.default.createElement("div",{className:"vcs-history-list"},E.default.createElement("p",null,t("historyListOnly")),k!==null&&E.default.createElement("p",null,t("historyRefsScope")),E.default.createElement("label",null,t("historyBranch")," ",E.default.createElement("select",{"aria-label":t("historyBranch"),value:N,disabled:be,onChange:P=>w(P.target.value)},E.default.createElement("option",{value:""},"HEAD"),N&&!(k||[]).some(P=>JSON.stringify([P.name,P.commit])===N)&&E.default.createElement("option",{value:N},JSON.parse(N)[0]," \xB7 ",C.slice(0,10)," \xB7 ",t("historyPinned")),(k||[]).map(P=>{let X=JSON.stringify([P.name,P.commit]);return E.default.createElement("option",{key:X,value:X},P.name," \xB7 ",P.commit.slice(0,10))}))),s&&E.default.createElement("details",{className:"vcs-help"},E.default.createElement("summary",null,t("historySearchHelp")),E.default.createElement("p",null,t("historyBranchScope"),C&&E.default.createElement(E.default.Fragment,null," \xB7 ",E.default.createElement("code",null,C)))),s&&E.default.createElement("form",{className:"vcs-history-search","aria-label":t("historyServerSearch"),onSubmit:P=>{P.preventDefault(),L({...h})}},E.default.createElement("fieldset",{disabled:be},E.default.createElement("legend",null,t("historyServerSearch")),E.default.createElement("details",{className:"vcs-help"},E.default.createElement("summary",null,t("historySearchHelp")),E.default.createElement("p",null,t("historyServerScope"))),["message","author","path","since","until"].map(P=>E.default.createElement("label",{key:P},t("historyServer_"+P)," ",E.default.createElement("input",{maxLength:P==="since"||P==="until"?40:1024,placeholder:P==="since"||P==="until"?"YYYY-MM-DD[THH:MM[:SS][\xB1HH:MM]]":void 0,"aria-label":t("historyServer_"+P),value:h[P],onChange:X=>x(le=>({...le,[P]:X.target.value}))}))),E.default.createElement("button",{type:"submit"},t("historyServerApply")),E.default.createElement("button",{type:"button",onClick:()=>{x({message:"",author:"",path:"",since:"",until:""}),L({})}},t("historyServerClear")))),v&&E.default.createElement("p",{role:"status"},t("historyServerActive"),": ",JSON.stringify(v.values)," \xB7 ",E.default.createElement("code",null,v.snapshot||O.snapshot)),s&&E.default.createElement(E.default.Fragment,null,E.default.createElement("label",null,t("historySearch")," ",E.default.createElement("input",{"aria-label":t("historySearch"),value:p,onChange:P=>{n(P.target.value),A(null)}})),E.default.createElement("span",null," ",xe.length," / ",O.commits.length)),!!O.commits.length&&E.default.createElement(E.default.Fragment,null,E.default.createElement("p",{role:"status"},t("historyWindow"),": ",Math.max(0,(O.windowEnd??O.commits.length)-O.commits.length),"\u2013",O.windowEnd??O.commits.length),s&&E.default.createElement("details",{className:"vcs-help"},E.default.createElement("summary",null,t("historySearchHelp")),E.default.createElement("p",null,t("historyWindowScope")))),!!O.commits.length&&!xe.length&&E.default.createElement("p",{role:"status"},t("historyNoMatch")),E.default.createElement("ol",{className:"vcs-commit-list"},xe.map(P=>E.default.createElement("li",{key:P.id},E.default.createElement("button",{className:"vcs-commit-row","aria-pressed":q===P.id,onClick:()=>A(P.id)},E.default.createElement("span",{className:"vcs-commit-subject"},P.subject)),E.default.createElement("div",{className:"vcs-commit-meta"},E.default.createElement("code",{title:P.id},P.id.slice(0,10))," \xB7 ",P.author," \xB7 ",E.default.createElement("time",{dateTime:P.date},P.date)),B.has(P.id)&&E.default.createElement("div",{"aria-label":t("historyRefsLabel"),style:{overflowWrap:"anywhere"}},B.get(P.id).names.map(X=>E.default.createElement("span",{key:X},E.default.createElement("code",null,X)," ")),B.get(P.id).hidden>0&&E.default.createElement("span",null,t("historyRefsMore"),": ",B.get(P.id).hidden))))),be&&E.default.createElement("p",{role:"status"},t("loading")),He&&E.default.createElement("p",{role:"alert"},He," ",E.default.createElement("button",{onClick:()=>wt(P=>P+1)},t("retry"))),!be&&!He&&!O.commits.length&&E.default.createElement("p",null,t("historyEmpty")),O.truncated&&E.default.createElement("p",{role:"status"},t("historyLimit")),!!ce&&E.default.createElement("button",{disabled:be,onClick:g},t("historyBack")),!He&&O.nextOffset!==null&&E.default.createElement("button",{disabled:be,onClick:()=>de(O.nextOffset)},t("historyMore")),!!O.commits.length&&E.default.createElement(Rt,{commits:O.commits,selected:q,onSelect:A,t}),E.default.createElement(er,{onReferencesLoaded:f,commits:O.commits,sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i})),E.default.createElement("div",{className:"vcs-history-details"},l.length>0&&E.default.createElement("p",null,E.default.createElement("button",{onClick:ue,"aria-label":t("historyNavigationBack")},t("historyNavigationBack")," \xB7 ",l[l.length-1].id.slice(0,10))),q&&E.default.createElement(tt,{key:JSON.stringify([q,c.revision]),initialPath:c.path,sessionId:e,repositoryId:r,commit:q,onSelectCommit:se,rpc:o,t,onRediscover:i})))}var ie=R(require("react"),1);function tr({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,ie.useState)(null),[m,p]=(0,ie.useState)(null),[n,l]=(0,ie.useState)(""),[u,k]=(0,ie.useState)(0);return(0,ie.useEffect)(()=>{let f=new AbortController;return l(""),c(null),p(null),o("vcs/stash-list",{sessionId:e,repositoryId:r},f.signal).then(C=>{f.signal.aborted||c(C.stashes)}).catch(C=>{f.signal.aborted||(l(C.message),C.code==="vcs/rediscover-required"&&i())}),()=>f.abort()},[e,r,u]),n?ie.default.createElement("section",{"aria-label":t("stashTitle")},ie.default.createElement("h3",null,t("stashTitle")),ie.default.createElement("p",{role:"alert"},n," ",ie.default.createElement("button",{onClick:()=>k(f=>f+1)},t("retry")))):s?ie.default.createElement("section",{"aria-label":t("stashTitle")},ie.default.createElement("h3",null,t("stashTitle")),ie.default.createElement("p",null,t("stashScope")),s.length?ie.default.createElement("ol",null,s.map(f=>ie.default.createElement("li",{key:f.id},ie.default.createElement("button",{"aria-pressed":m===f.id,onClick:()=>p(f.id)},ie.default.createElement("code",null,f.ref)," \xB7 ",f.message)))):ie.default.createElement("p",{role:"status"},t("stashEmpty")),m&&ie.default.createElement(tt,{sessionId:e,repositoryId:r,commit:m,onSelectCommit:()=>{},rpc:o,t,onRediscover:i})):ie.default.createElement("section",{"aria-label":t("stashTitle")},ie.default.createElement("h3",null,t("stashTitle")),ie.default.createElement("p",{role:"status"},t("loading")))}var Se=R(require("react"),1);var $=R(require("react"),1);function rr(e){return $.default.createElement(li,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function li({sessionId:e,repositoryId:r,rpc:o,t,onRediscover:i}){let[s,c]=(0,$.useState)(""),[m,p]=(0,$.useState)(null),[n,l]=(0,$.useState)(null),[u,k]=(0,$.useState)(""),[f,C]=(0,$.useState)(!1),b=(0,$.useRef)(null),N=w=>{b.current?.abort();let h=new AbortController;b.current=h,C(!0),k(""),l(null),p(w),o("vcs/grep",{sessionId:e,repositoryId:r,query:w},h.signal).then(x=>{h.signal.aborted||l(x.matches)}).catch(x=>{h.signal.aborted||(k(x.message),x.code==="vcs/rediscover-required"&&i())}).finally(()=>{h.signal.aborted||C(!1)})};(0,$.useEffect)(()=>()=>b.current?.abort(),[]);let y=w=>{w.preventDefault();let h=s.trim();h&&N(h)};return $.default.createElement("section",{"aria-label":t("grepTitle")},$.default.createElement("h3",null,t("grepTitle")),$.default.createElement("p",null,t("grepScope")),$.default.createElement("form",{onSubmit:y},$.default.createElement("input",{"aria-label":t("grepQuery"),maxLength:1024,placeholder:t("grepPlaceholder"),value:s,onChange:w=>c(w.target.value)}),$.default.createElement("button",{type:"submit",disabled:f||!s.trim()},t("grepRun"))),u?$.default.createElement("p",{role:"alert"},u," ",$.default.createElement("button",{onClick:()=>m&&N(m)},t("retry"))):f?$.default.createElement("p",{role:"status"},t("loading")):n&&$.default.createElement($.default.Fragment,null,$.default.createElement("p",{role:"status"},t("grepCount",{count:n.length})),n.length?$.default.createElement("ol",null,n.map((w,h)=>$.default.createElement("li",{key:h},$.default.createElement("code",null,w.path,":",w.line)," ",$.default.createElement("pre",{style:{margin:0}},w.text)))):$.default.createElement("p",{role:"status"},t("grepEmpty"))))}function or(e){return Se.default.createElement(ci,{key:JSON.stringify([e.sessionId,e.repositoryId]),...e})}function ci({t:e,...r}){let[o,t]=(0,Se.useState)("content");return Se.default.createElement("section",{className:"vcs-search-panel","aria-label":e("searchCenter")},Se.default.createElement("nav",{className:"vcs-search-modes","aria-label":e("searchMode")},Se.default.createElement("button",{"aria-pressed":o==="content",onClick:()=>t("content")},e("searchContentMode")),Se.default.createElement("button",{"aria-pressed":o==="history",onClick:()=>t("history")},e("searchHistoryMode"))),o==="content"?Se.default.createElement(rr,{...r,t:e}):Se.default.createElement(rt,{...r,t:e,showSearch:!0}))}var ir={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 revision \u5FEB\u7167\u7684 SVN \u5386\u53F2\uFF1B\u4FDD\u7559\u6700\u8FD1 200 \u6761\uFF0C\u53EF\u52A0\u8F7D\u66F4\u591A\u6216\u8FD4\u56DE",svnHistoryDateScope:"\u6309\u65E5\u671F\uFF08svn:date \u7684\u65E5\u671F\u90E8\u5206\uFF09\u5728\u5DF2\u52A0\u8F7D\u7A97\u53E3\u5185\u6709\u754C\u8FC7\u6EE4\uFF1BSVN REPORT \u4EC5\u652F\u6301 revision \u533A\u95F4\uFF0C\u6545\u4E0D\u5BA3\u79F0\u8DE8\u7A97\u53E3\u5B8C\u6574\u626B\u63CF\u3002",svnHistoricalDiff:"\u5386\u53F2\u53EA\u8BFB Diff",svnCopyHistory:"\u67E5\u770B\u590D\u5236\u6765\u6E90\u5386\u53F2",svnCopyOutside:"\u590D\u5236\u6765\u6E90\u5728\u6388\u6743\u8303\u56F4\u5916\uFF0C\u4E0D\u80FD\u6253\u5F00",svnCopyTraceScope:"\u5355\u72EC\u67E5\u770B\u8303\u56F4\u5185\u56FA\u5B9A\u6765\u6E90\uFF0C\u4ECD\u6B62\u4E8E\u5176\u590D\u5236\u8FB9\u754C\uFF1B\u4E0D\u662F\u81EA\u52A8\u8FFD\u6EAF",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",fileHistorySimilarity:"Git\u76F8\u4F3C\u5EA6",fileHistoryAmbiguous:"\u591A\u4E2A\u5019\u9009\u6765\u6E90\uFF0C\u6B64\u5904\u505C\u6B62\u8FFD\u6EAF",fileHistoryRenameLimit:"\u5DF2\u8FBE32\u6B21\u91CD\u547D\u540D\u786E\u8BA4\u4E0A\u9650\uFF0C\u6B64\u5904\u505C\u6B62",fileHistoryBoundary:"\u8EAB\u4EFD\u8FB9\u754C\uFF1A\u590D\u5236\u6216\u975E\u7CBE\u786E\u91CD\u547D\u540D\uFF0C\u6B64\u5904\u505C\u6B62",fileHistoryFollow:"\u8DDF\u968F\u91CD\u547D\u540D\uFF08\u7B2C\u4E00\u7236\u94FE\uFF09",fileHistoryFollowScope:"\u8DDF\u968FGit\u68C0\u51FA\u7684\u91CD\u547D\u540D\uFF1B50%\u4EE5\u4E0A\u76F8\u4F3C\u91CD\u547D\u540D\u989D\u5916\u786E\u8BA4\u552F\u4E00\u5220\u9664\uFF0F\u65B0\u589E\u6765\u6E90\uFF0C\u6B67\u4E49\u3001\u590D\u5236\u548C\u5408\u5E76\u5904\u505C\u6B62\u3002\u76F8\u4F3C\u5EA6\u4E0D\u662F\u8EAB\u4EFD\u4FDD\u8BC1\uFF1B\u6BCF\u6761\u8BB0\u5F55\u4F7F\u7528\u5F53\u65F6\u8DEF\u5F84\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",historySearchHelp:"\u67E5\u8BE2\u8303\u56F4\u4E0E\u9650\u5236",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\u65F6\u95F4\u8FB9\u754C\u6309\u63D0\u4EA4\u65F6\u95F4(committer date)\u8FC7\u6EE4\u4E14\u542B\u8FB9\u754C\uFF0C\u4F7F\u7528 --since-as-filter \u907F\u514D\u975E\u5355\u8C03\u5386\u53F2\u88AB\u63D0\u524D\u622A\u65AD\uFF1B\u65E0\u65F6\u533A\u6309\u8FD0\u884C\u673A\u5668\u672C\u5730\u65F6\u533A\u89E3\u91CA\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",historyServer_since:"\u5F00\u59CB\u65F6\u95F4\uFF08\u542B\uFF09",historyServer_until:"\u7ED3\u675F\u65F6\u95F4\uFF08\u542B\uFF09",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",conflictStages:"Index \u51B2\u7A81\u9636\u6BB5",conflictStagesScope:"\u624B\u52A8\u8BFB\u53D6\u6240\u9009\u51B2\u7A81\u7684 Index \u9636\u6BB51\uFF0F2\uFF0F3\uFF1B\u9636\u6BB5\u7F16\u53F7\u53EA\u8868\u793A Index \u8EAB\u4EFD\uFF0C\u4E0D\u58F0\u79F0\u5408\u5E76\uFF0F\u53D8\u57FA\u5F52\u5C5E\u3002\u7F3A\u5931\u9636\u6BB5\u663E\u793A\u4E3A\u7A7A\uFF0C\u4E0D\u63A8\u65AD\u5185\u5BB9\uFF1B\u4E0D\u8BFB\u53D6\u5DE5\u4F5C\u6587\u4EF6\uFF0C\u4E0D\u89E3\u51B3\u51B2\u7A81\u3002",conflictStage1:"\u9636\u6BB51\uFF08BASE\uFF09",conflictStage2:"\u9636\u6BB52\uFF08ours\uFF09",conflictStage3:"\u9636\u6BB53\uFF08theirs\uFF09",conflictStagePresent:"\u5B58\u5728",conflictStageAbsent:"\u7F3A\u5931\uFF08\u663E\u793A\u4E3A\u7A7A\uFF09",conflictStageGitlink:"\u5B50\u6A21\u5757\u63D0\u4EA4\u5F15\u7528\uFF0C\u4E0D\u52A0\u8F7D\u5185\u5BB9",conflictStageSymlink:"\u94FE\u63A5\u76EE\u6807\u6587\u672C\uFF0C\u4E0D\u8DDF\u968F",conflictStageLeft:"\u5DE6\u4FA7\u9636\u6BB5",conflictStageRight:"\u53F3\u4FA7\u9636\u6BB5",conflictStageMissing:"\u6240\u9009\u9636\u6BB5\u7F3A\u5931\uFF0C\u6309\u7A7A\u5185\u5BB9\u6BD4\u8F83\uFF1B\u4E0D\u63A8\u65AD\u539F\u59CB\u5185\u5BB9\u3002",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",comparisonFocus:"\u4E13\u6CE8\u5BF9\u6BD4",comparisonRestore:"\u6062\u590D\u6587\u4EF6\u5217\u8868",commitSigned:"\u5DF2\u7B7E\u540D \xB7 {format}",commitSignatureUnverified:"\u4EC5\u68C0\u6D4B\u7B7E\u540D\u5934\uFF0C\u672A\u505A\u4FE1\u4EFB\u9A8C\u8BC1\u3002",commitCommitter:"\u63D0\u4EA4\u8005",stashTitle:"\u53EA\u8BFB Stash \u89C6\u56FE",stashScope:"\u4EC5\u8BFB\u53D6\u672C\u5730 refs/stash\uFF0C\u5217\u51FA\u5DF2\u6682\u5B58\u7684\u5DE5\u4F5C\u533A\u5FEB\u7167\uFF1B\u9009\u62E9\u540E\u590D\u7528\u63D0\u4EA4\u8BE6\u60C5\u53EA\u8BFB\u67E5\u770B\u5176\u5DEE\u5F02\u3002\u4E0D\u521B\u5EFA\u3001\u5E94\u7528\u3001\u5220\u9664\u6216\u5F39\u51FA stash\u3002",stashEmpty:"\u5F53\u524D\u4ED3\u5E93\u6CA1\u6709 stash\u3002",stash:"Stash",grep:"\u5185\u5BB9\u641C\u7D22",searchCenter:"\u7EDF\u4E00\u641C\u7D22",searchMode:"\u641C\u7D22\u7C7B\u578B",searchContentMode:"\u6587\u4EF6\u6B63\u6587",searchHistoryMode:"\u63D0\u4EA4\u5386\u53F2",grepTitle:"\u4ED3\u5E93\u5185\u5BB9\u641C\u7D22",grepScope:"\u5728\u5F53\u524D HEAD \u63D0\u4EA4\u6811\u5185\u505A\u6709\u754C\u5B57\u9762\u6587\u672C\u641C\u7D22\uFF08\u6700\u591A500\u6761\u5339\u914D\u3001\u6BCF\u6587\u4EF6100\u6761\u3001\u8F93\u51FA2MiB\uFF09\u3002\u53EA\u8BFB\uFF0C\u4E0D\u641C\u7D22\u672A\u63D0\u4EA4\u6539\u52A8\uFF0C\u4E0D\u65B0\u589E\u7F51\u7EDC\u6216\u5199\u64CD\u4F5C\u3002",grepQuery:"\u641C\u7D22\u5185\u5BB9",grepPlaceholder:"\u8F93\u5165\u8981\u641C\u7D22\u7684\u6587\u672C",grepRun:"\u641C\u7D22",grepCount:"\u5339\u914D {count} \u6761",grepEmpty:"\u6CA1\u6709\u5339\u914D\u3002",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",workspaceLargeScope:"Git\u5DE5\u4F5C\u533A\u5B8C\u6574UTF-8\u6BD4\u8F83\uFF0C\u6BCF\u4FA78MiB\uFF0F10\u4E07\u884C\uFF1B\u8BFB\u53D6\u671F\u95F4\u53D8\u5316\u4F1A\u62D2\u7EDD\u7ED3\u679C\uFF0C\u6210\u529F\u540E\u6587\u4EF6\u4ECD\u53EF\u88AB\u5916\u90E8\u4FEE\u6539\u3002",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",historyBack:"\u5386\u53F2\u4E0A\u4E00\u9875",historyNavigationBack:"\u8FD4\u56DE\u4E0A\u4E00\u5904",historyNavigationScope:"\u4ECE\u67D0\u4E2A\u63D0\u4EA4\u7684\u6587\u4EF6\u5386\u53F2\u6216 Blame \u8DF3\u8F6C\u5230\u53E6\u4E00\u4E2A\u63D0\u4EA4\u540E\uFF0C\u201C\u8FD4\u56DE\u4E0A\u4E00\u5904\u201D\u4F1A\u56DE\u5230\u8DF3\u8F6C\u524D\u7684\u63D0\u4EA4\uFF0C\u5E76\u5C1D\u8BD5\u9884\u9009\u552F\u4E00\u5B8C\u5168\u5339\u914D\u7684\u8DEF\u5F84\uFF1B\u8FD9\u662F\u672C\u4F1A\u8BDD\u5185\u7684\u9875\u9762\u4E0A\u4E0B\u6587\uFF0C\u4E0D\u8BFB\u53D6\u6216\u5199\u5165\u4ED3\u5E93\u3002",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",fileHistoryDateScope:"\u53EF\u9009\u65F6\u95F4\u8FB9\u754C\u6309\u63D0\u4EA4\u65F6\u95F4(committer date)\u542B\u8FB9\u754C\u8FC7\u6EE4\uFF1B\u4E0E\u201C\u8DDF\u968F\u91CD\u547D\u540D\u201D\u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\uFF0C\u62A5\u9519\u540E\u53D6\u6D88\u5176\u4E00\u5373\u53EF\u3002",pathHistory:"\u6B64\u8DEF\u5F84\u5386\u53F2",submoduleBadge:"\u5B50\u6A21\u5757",submoduleCheckout_initialized:"\u5B58\u5728\u672C\u5730Git\u6807\u8BB0\uFF08\u672A\u9A8C\u8BC1\u68C0\u51FA\u6709\u6548\u6027\uFF09",submoduleCheckout_uninitialized:"\u672C\u5730\u672A\u521D\u59CB\u5316",submoduleCheckout_absent:"\u672C\u5730\u76EE\u5F55\u7F3A\u5931",submoduleCheckout_unreadable:"\u672C\u5730\u72B6\u6001\u4E0D\u53EF\u8BFB",submodulePointerMoved:"\u6307\u9488\u5DF2\u79FB\u52A8\uFF08\u68C0\u51FAHEAD\u4E0E\u8BB0\u5F55\u4E0D\u540C\uFF09",submoduleDirty:"\u5DE5\u4F5C\u6811\u6709\u672A\u63D0\u4EA4\u6539\u52A8",submoduleScope:"\u9884\u89C8\u663E\u793AIndex\u8BB0\u5F55\u7684\u63D0\u4EA4\u6307\u9488\u4E0E\u672C\u5730Git\u6807\u8BB0\u5B58\u5728\u72B6\u6001\uFF1B\u5DF2\u521D\u59CB\u5316\u68C0\u51FA\u65F6\uFF0C\u6765\u81EA\u7236\u4ED3\u5E93\u81EA\u8EAB git status \u7684\u6307\u9488\u79FB\u52A8\uFF0F\u672A\u63D0\u4EA4\u6539\u52A8\uFF0F\u672A\u8DDF\u8E2A\u5185\u5BB9\u4F1A\u4E00\u5E76\u6807\u6CE8\uFF0C\u4E0D\u8FDB\u5165\u5B50\u6A21\u5757\u3001\u4E0D\u989D\u5916\u89E3\u6790\u5176HEAD\u3001\u4E0D\u52A0\u8F7D\u5185\u5BB9\u3001\u4E0D\u66F4\u65B0\u6216\u540C\u6B65\u3002",pathHistoryScope:"\u624B\u52A8\u8BFB\u53D6\u6240\u9009\u5386\u53F2\u8DEF\u5F84\u5728\u8BE5\u63D0\u4EA4\u4E0B\u7684\u6587\u4EF6\u5386\u53F2\uFF1B\u8DEF\u5F84\u5FC5\u987B\u5B58\u5728\u4E8E\u8BE5\u63D0\u4EA4\u3002\u5173\u95ED\u8DDF\u968F\u65F6\u4E0D\u8DE8\u91CD\u547D\u540D\u3002",pathHistoryNoFollow:"\u672A\u8DDF\u968F\u91CD\u547D\u540D",pathHistoryFollowScope:"\u8DDF\u968F\u6CBF\u7528\u540C\u4E00\u4FDD\u5B88\u89C4\u5219\uFF1A\u7B2C\u4E00\u7236\u94FE\u3001Git\u76F8\u4F3C\u5EA6\u81F3\u5C1150%\u3001\u6BCF\u6B21\u786E\u8BA4\u552F\u4E00\u5220\u9664\uFF0F\u65B0\u589E\u6765\u6E90\uFF0C\u6B67\u4E49\u3001\u590D\u5236\u621632\u6B21\u786E\u8BA4\u4E0A\u9650\u5904\u505C\u6B62\uFF1B\u53EA\u9002\u7528\u4E8E\u63D0\u4EA4\u4E2D\u7684\u666E\u901A\u6587\u4EF6\u6216\u94FE\u63A5\u3002",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\uFF0C\u5E76\u5C1D\u8BD5\u9009\u4E2D\u8BE5\u63D0\u4EA4\u53D8\u66F4\u4E2D\u8DEF\u5F84\u5B8C\u5168\u4E00\u81F4\u7684\u552F\u4E00\u6587\u4EF6\uFF08\u4E0D\u4F1A\u731C\u6D4B\u91CD\u547D\u540D\u6216\u65E7\u8DEF\u5F84\uFF09\uFF1B\u65E0\u552F\u4E00\u5339\u914D\u65F6\u4E0D\u9884\u9009\u6587\u4EF6\u3002\u9ED8\u8BA4\u4F7F\u7528\u9996\u4E2A\u7236\u63D0\u4EA4\uFF0C\u4E0D\u81EA\u52A8\u5B9A\u4F4D\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\u30018\u4F4D\u57FA\u7EBF/\u6E10\u8FDB JPEG \u666E\u901A\u6587\u4EF6\uFF0C\u4EE5\u53CA\u5355\u5757\u9759\u6001VP8\uFF0F\u65E0\u635FVP8L WebP\uFF08\u4E0D\u652F\u6301\u7B97\u672F\u7F16\u7801/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:"\u672C\u5730\u5206\u652F\u3001\u6307\u5411\u63D0\u4EA4\u7684\u6807\u7B7E\u53CA\u672C\u5730\u7F13\u5B58\u7684\u8FDC\u7A0B\u8DDF\u8E2A\u5F15\u7528\uFF0C\u5171\u6700\u591A1000\u6761\uFF1B\u4E0D\u8FDE\u63A5\u8FDC\u7AEF\u6216fetch\uFF0C\u8FDC\u7A0B\u7F13\u5B58\u53EF\u80FD\u8FC7\u671F\u3002\u91CD\u65B0\u52A0\u8F7D\u65F6\uFF0Corigin/HEAD \u663E\u793A\u5B83\u5F53\u524D\u6307\u5411\u7684\u672C\u5730\u63D0\u4EA4\uFF1B\u5DF2\u9009\u5386\u53F2\u548C\u7248\u672C\u4ECD\u56FA\u5B9A\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\u5F15\u7528\uFF08\u542B\u8FDC\u7A0B\u7F13\u5B58\uFF09",revisionRefsCount:"\u5DF2\u52A0\u8F7D\u53EF\u9009\u5F15\u7528",updatePlugin:"\u66F4\u65B0\u63D2\u4EF6",reloadInterface:"\u68C0\u67E5\u5E76\u52A0\u8F7D\u5DF2\u5B89\u88C5\u66F4\u65B0",reloadDone:"\u5DF2\u91CD\u65B0\u52A0\u8F7D VCS \u754C\u9762\uFF1B\u65E7\u8BF7\u6C42\u3001\u7F16\u8F91\u5668\u53CA SVN \u6388\u6743\u5DF2\u6E05\u7406\u3002",reloadRestart:"\u5DF2\u5B89\u88C5\u66F4\u65B0\u6D89\u53CA\u540E\u7AEF\uFF0C\u8BF7\u81EA\u884C\u91CD\u542F DSH \u540E\u5237\u65B0\u9875\u9762\u3002",reloadFailed:"\u52A0\u8F7D\u5931\u8D25\uFF0C\u5DF2\u4FDD\u7559\u539F\u754C\u9762\uFF1B\u8BF7\u91CD\u8BD5\u6216\u91CD\u542F DSH\u3002",updateScope:"\u6B64\u6309\u94AE\u4E0D\u81EA\u52A8\u5B89\u88C5\u3002\u8BF7\u5728\u63D2\u4EF6\u7BA1\u7406\u5668\u4E2D\u68C0\u67E5\u5B89\u88C5\u65B9\u5F0F\uFF1B\u5F53\u524D\u5BBF\u4E3B\u53EF\u80FD\u8981\u6C42\u5148\u5378\u8F7D\u518D\u5B89\u88C5\u3002\u4E5F\u53EF\u5728\u7EC8\u7AEF\u6309\u5B9E\u9645 profile \u548C\u5DF2\u6838\u9A8C\u7248\u672C\u6267\u884C\u4EE5\u4E0B\u547D\u4EE4\u3002",updateRestart:"\u5B89\u88C5\u540E\u70B9\u51FB\u201C\u68C0\u67E5\u5E76\u52A0\u8F7D\u5DF2\u5B89\u88C5\u66F4\u65B0\u201D\u3002\u4EC5\u5728\u540E\u7AEF\u6307\u7EB9\u4E00\u81F4\u65F6\u52A0\u8F7D\u65B0\u754C\u9762\uFF1B\u5426\u5219\u63D0\u793A\u91CD\u542F\u3002\u4E0D\u81EA\u52A8\u91CD\u542F DSH\u3002",updateManager:"\u6253\u5F00\u63D2\u4EF6\u7BA1\u7406",updateRelease:"\u67E5\u770B\u6700\u65B0\u53D1\u5E03"},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 revision snapshot; retain up to 200 rows, load more or go back",svnHistoryDateScope:"Bounded in-window date filter on the svn:date day portion; SVN REPORT supports revision ranges only, so cross-window completeness is never claimed.",svnHistoricalDiff:"Historical read-only Diff",svnCopyHistory:"View copy source history",svnCopyOutside:"Copy source is outside the authorized scope",svnCopyTraceScope:"Separate fixed in-scope source history, stopping at its copy boundary; not automatic tracing",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",fileHistorySimilarity:"Git similarity",fileHistoryAmbiguous:"Multiple candidate origins; tracing stopped here",fileHistoryRenameLimit:"32 rename confirmations reached; tracing stopped here",fileHistoryBoundary:"Identity boundary: copy or inexact rename; stopped here",fileHistoryFollow:"Follow renames (first-parent)",fileHistoryFollowScope:"Git-detected renames; similarities of 50% or more require a unique deletion/addition transition. Stops at ambiguity, copies and merges. Similarity is not an identity guarantee; rows use historical paths.",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",historySearchHelp:"Search scope and limits",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. Date bounds filter on committer date inclusively and use --since-as-filter to avoid early termination on non-monotonic history; boundary dates without a timezone use the runner local zone. Pagination and runtime are bounded.",historyServer_message:"Commit message",historyServer_author:"Author",historyServer_path:"Path",historyServer_since:"Since (inclusive)",historyServer_until:"Until (inclusive)",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",conflictStages:"Index conflict stages",conflictStagesScope:"Manually reads Index stages 1/2/3 of the selected conflict. Stage numbers are Index identities, not merge/rebase ownership claims. Missing stages show as empty and are never inferred; the working file is not read and the conflict is not resolved.",conflictStage1:"Stage 1 (BASE)",conflictStage2:"Stage 2 (ours)",conflictStage3:"Stage 3 (theirs)",conflictStagePresent:"present",conflictStageAbsent:"absent (shown empty)",conflictStageGitlink:"submodule commit reference, contents not loaded",conflictStageSymlink:"link target text, not followed",conflictStageLeft:"Left stage",conflictStageRight:"Right stage",conflictStageMissing:"A selected stage is absent, so it is compared as empty; original content is not inferred.",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",comparisonFocus:"Focus comparison",comparisonRestore:"Restore file list",commitSigned:"Signed \xB7 {format}",commitSignatureUnverified:"Signature presence detected; not trust-verified.",commitCommitter:"Committer",stashTitle:"Read-only stashes",stashScope:"Reads only the local refs/stash to list stashed working-copy snapshots; selecting one reuses commit details to review its diff read-only. Never creates, applies, drops, or pops a stash.",stashEmpty:"This repository has no stashes.",stash:"Stash",grep:"Search",searchCenter:"Search center",searchMode:"Search type",searchContentMode:"File contents",searchHistoryMode:"Commit history",grepTitle:"Repository content search",grepScope:"Bounded literal-text search in the current HEAD commit tree (max 500 matches, 100 per file, 2 MiB output). Read-only; never searches uncommitted changes, adds no network or write.",grepQuery:"Search text",grepPlaceholder:"Text to search",grepRun:"Search",grepCount:"{count} matches",grepEmpty:"No matches.",commitFileSearch:"Filter files in this commit",commitParent:"Compare parent",commitRoot:"Empty baseline (root commit)",commitNoChanges:"No file changes against this baseline",history:"Commit history",workspaceLargeScope:"Complete Git working-copy UTF-8 comparison: 8 MiB / 100000 lines per side. Changes during loading reject the result; external edits remain possible afterward.",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",historyBack:"Previous history page",historyNavigationBack:"Back",historyNavigationScope:"After jumping from one commit's file history or Blame into another commit, \u201CBack\u201D returns to the commit you came from and tries to preselect the single exactly matching path; this is in-page context and reads or writes no repository state.",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",fileHistoryDateScope:"Optional date bounds filter on committer date inclusively; they cannot combine with rename following, so disable one if an error appears.",pathHistory:"History of this path",submoduleBadge:"submodule",submoduleCheckout_initialized:"local Git marker present (checkout validity not verified)",submoduleCheckout_uninitialized:"not initialized locally",submoduleCheckout_absent:"local directory missing",submoduleCheckout_unreadable:"local state unreadable",submodulePointerMoved:"pointer moved (checkout HEAD differs from recorded)",submoduleDirty:"uncommitted working-tree changes",submoduleScope:"The preview shows the Index-recorded pointer and local Git-marker presence; for an initialized checkout, pointer movement, uncommitted changes and untracked content reported by the parent repository's own git status are annotated, without entering the submodule, separately resolving its HEAD, loading contents, or updating anything.",pathHistoryScope:"Manually reads the file history of the selected historical path at that commit; the path must exist in that commit. Without following, renames are not crossed.",pathHistoryNoFollow:"renames not followed",pathHistoryFollowScope:"Following uses the same conservative rules: first parent, Git similarity of at least 50%, a unique deletion/addition confirmed each time, stopping at ambiguity, copies or the 32-confirmation cap; only committed regular files or links are supported.",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 and preselect the single exactly matching path in that commit; rename or old paths are never guessed, and a missing or ambiguous match preselects nothing. The first parent is used and no line is auto-located.",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, 8-bit baseline or progressive JPEG regular files, or single-chunk static VP8 / lossless VP8L WebP (no arithmetic-coded/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, commit tags and locally cached remote-tracking refs, at most 1000 total; no network or fetch. Remote caches may be stale. Reloading origin/HEAD shows its current local target; selected history and versions stay pinned. 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 refs (including remote caches)",revisionRefsCount:"Selectable references loaded",updatePlugin:"Update plugin",reloadInterface:"Check and load installed update",reloadDone:"VCS interface reloaded; old requests, editors and SVN grants were cleaned up.",reloadRestart:"Installed update changes the backend. Restart DSH and refresh the page.",reloadFailed:"Reload failed. Previous interface retained; retry or restart DSH.",updateScope:"This button does not install packages. Check installation options in the plugin manager; this host may require uninstalling before reinstalling. Alternatively run this command with your actual profile and verified version.",updateRestart:"After installation, check and load the installed update. Reload is allowed only when backend fingerprints match; otherwise restart DSH manually. DSH is never restarted automatically.",updateManager:"Open plugin manager",updateRelease:"Latest release"}};function Wr(e,r,o,t){let i=e.target;if(!r?.contains(i)||e.defaultPrevented||e.isComposing||i?.closest?.(".monaco-editor")||i?.closest?.(".vcs-history"))return null;if(e.key==="Escape"&&i===o&&t)return"clear";let s=i?.isContentEditable||i?.closest?.('input,textarea,select,[role="textbox"]');if(s&&i!==o)return null;if((e.ctrlKey||e.metaKey)&&!e.altKey&&!e.shiftKey&&e.key?.toLowerCase()==="f")return"search";if(!s&&e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){if(e.key==="ArrowLeft")return"previous";if(e.key==="ArrowRight")return"next"}return null}function _r(e,r){let o=r?[...r.querySelectorAll("button[data-vcs-item]")]:[],t=o.indexOf(e.target);if(t<0)return;let i;if(e.key==="ArrowDown")i=o[t+1];else if(e.key==="ArrowUp")i=o[t-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 Kr=e=>"dsh-vcs:project:v1:"+e;function Yr(e,r){if(!e)return"";try{let o=(r??globalThis.localStorage)?.getItem(Kr(e));return typeof o=="string"&&o.length<=1024?o:""}catch{return""}}function $r(e,r,o){if(!(!e||!r))try{(o??globalThis.localStorage)?.setItem(Kr(e),r)}catch{}}function Xr(e,r=""){return e.find(o=>o.id===r)?.id||e.find(o=>o.relativePath===".")?.id||e[0]?.id||""}var ot=(e,r)=>JSON.stringify([e,r]),it=(e,r=".")=>[e.type.toUpperCase(),e.relativePath==="."?r:e.relativePath||".",e.branch].filter(Boolean).join(" \xB7 "),bt=(e,r="all")=>e.type==="git"&&["staged","unstaged"].includes(r)?r:"all",Qr=(e="",r="")=>e===r?0:e<r?-1:1;function sr(e=[]){let r={id:"",name:"",directories:new Map,files:[],count:0};for(let t of e){let i=String(t.path||"").split("/").filter(Boolean);if(!i.length)continue;let s=r;for(let c of i.slice(0,-1)){let m=s.id?s.id+"/"+c:c;s.directories.has(c)||s.directories.set(c,{id:m,name:c,directories:new Map,files:[],count:0}),s=s.directories.get(c),s.count++}s.files.push(t)}let o=t=>({...t,directories:[...t.directories.values()].sort((i,s)=>Qr(i.name,s.name)).map(o),files:[...t.files].sort((i,s)=>Qr(i.path,s.path))});return o(r)}function Zr(e=[],r){let o=e.findIndex(t=>t.id===r);return{index:o<0?0:o+1,total:e.length}}function Rr(e=[],r,o){if(!e.length||!["previous","next"].includes(o))return null;let t=e.findIndex(c=>c.id===r),i=o==="next"?1:-1,s=t<0?o==="next"?-1:0:t;return e[(s+i+e.length)%e.length]||null}function eo(e=""){let r=String(e).split("/").filter(Boolean);return r.slice(0,-1).map((o,t)=>r.slice(0,t+1).join("/"))}function nr(e,r=[]){for(let o of e?.directories||[])r.push(o.id),nr(o,r);return r}function to(e=""){return{missing:"deleted",unversioned:"untracked",replaced:"modified",obstructed:"conflicted",copied:"renamed"}[e]||e}function ro(e=[]){return e.reduce((r,o)=>{let t=to(o.status);return r.all++,r[t]=(r[t]||0)+1,r},{all:0})}function pi(e=[],r="",o="all"){let t=r.toLowerCase();return e.filter(i=>(o==="all"||to(i.status)===o)&&i.path.toLowerCase().includes(t)).sort((i,s)=>i.path.localeCompare(s.path))}function oo(e,r,o="",t="all"){return e.map(i=>({...r[i.id],repository:i,changes:pi(r[i.id]?.changes,o,t)}))}function io(e,r,o=""){if(!o||!e||e.cwd!==r.cwd)return r;let t=new Map(e.repositories.map(i=>[i.id,i]));for(let i of r.repositories)t.set(i.id,i);return{...r,repositories:[...t.values()],truncated:e.truncated||r.truncated,warnings:[...e.warnings||[],...r.warnings||[]]}}var so={modified:"M",added:"A",deleted:"D",missing:"D",renamed:"R",copied:"C",conflicted:"U",untracked:"?",unversioned:"?",replaced:"M",obstructed:"U",normal:"P"},no=e=>new URL("vcs-assets/"+e,document.baseURI).href;function ui(){return a.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.6","aria-hidden":"true"},a.default.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),a.default.createElement("path",{d:"M12 4v16M6 10h3M7.5 8.5v3M15 14h3"}))}var ao=["slots","layout","locale","connection","uiSession"];function lo(e,{initialView:r="workspace",onViewChange:o}={}){let t=e.locale.bind("local.vcs"),i=It(2),s=mt(e.connection,()=>t("error"));function c(n){let l=n.useSessions(u=>Object.values(u.byId).find(k=>(k.retainedBy.mainView??0)>0));return a.default.createElement(m,{key:JSON.stringify([l?.id,l?.cwd])},a.default.createElement(p,{session:l}))}class m extends a.default.Component{state={error:null};static getDerivedStateFromError(l){return{error:l}}render(){return this.state.error?a.default.createElement("section",{className:"vcs-root"},a.default.createElement("style",null,jt),a.default.createElement("div",{className:"vcs-message vcs-error"},t("error"),a.default.createElement("button",{onClick:()=>this.setState({error:null})},t("retry")),a.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")))):this.props.children}}function p({session:n}){(0,a.useSyncExternalStore)(d=>e.locale.subscribe(d),()=>e.locale.getSnapshot(),()=>e.locale.getSnapshot());let l=n?.id,[u,k]=(0,a.useState)("all"),[f,C]=(0,a.useState)(0),[b,N]=(0,a.useState)(0),[y,w]=(0,a.useState)(null),[h,x]=(0,a.useState)({}),[v,H]=(0,a.useState)(()=>Yr(n?.cwd)),[L,g]=(0,a.useState)(0),[B,q]=(0,a.useState)(""),[se,ue]=(0,a.useState)(""),[A,O]=(0,a.useState)(null),[D,ce]=(0,a.useState)(null),[de,Fe]=(0,a.useState)(!1),[wt,be]=(0,a.useState)(!1),[ke,He]=(0,a.useState)(""),[Ae,xe]=(0,a.useState)(""),[P,X]=(0,a.useState)(""),[le,we]=(0,a.useState)(!1),[pe,Je]=(0,a.useState)(""),[st,lr]=(0,a.useState)("all"),[Te,cr]=(0,a.useState)(!0),[dr,St]=(0,a.useState)({}),[ze,ho]=(0,a.useState)(!0),[kt,vo]=(0,a.useState)(!1),[Ct,go]=(0,a.useState)(!1),[nt,We]=(0,a.useState)("content"),[pr,ur]=(0,a.useState)(0),[_e,mr]=(0,a.useState)(r),[fr,hr]=(0,a.useState)(null),[yo,bo]=(0,a.useState)(0),[vr,xo]=(0,a.useState)("pending"),[Nt,Et]=(0,a.useState)({added:0,deleted:0,count:0}),[fe,gr]=(0,a.useState)(!1),yr=(0,a.useRef)(null),br=(0,a.useRef)(null),Pe=(0,a.useRef)(null),Ht=(0,a.useRef)(null),at=(0,a.useRef)(null),At=(0,a.useRef)(null),xr=(0,a.useRef)(null),Ve=(0,a.useRef)(null),Pt=(0,a.useRef)(null),Lt=(0,a.useRef)(null),Dt=(0,a.useRef)(!1),lt=(0,a.useRef)(!1),Le=y?.repositories||[],De=Le.filter(d=>d.id===v),je=De.some(d=>d.type==="git"),Mt=De.some(d=>d.type==="svn"),Ke=(je||Mt)&&_e==="history",ct=je&&_e==="stash",dt=je&&_e==="grep",he=Ke||ct||dt;(0,a.useEffect)(()=>{o?.(_e)},[_e]);let Bt=d=>{Ve.current?.abort(),ce(null),O(null),xe(""),mr(d)};(0,a.useEffect)(()=>{Le.some(d=>d.id===v)&&$r(n?.cwd,v)},[n?.cwd,v,y]);let Ye=()=>{xr.current?.abort(),Ve.current?.abort(),ce(null),O(null),xe(""),We("content"),Et({added:0,deleted:0,count:0})},pt=()=>{lt.current=!1,Ye(),Pt.current?.abort(),Lt.current=y,w(null),x({}),ue(B.trim()),g(d=>d+1)},Ce=()=>{lt.current||(lt.current=!0,Ye(),Pt.current?.abort(),Lt.current=null,w(null),x({}),ue(""),g(d=>d+1))},wr=(d=!1)=>{d||N(M=>M+1),Dt.current=d,d||Ye(),d||x({}),C(M=>M+1)};(0,a.useEffect)(()=>{let d=new AbortController;return Pt.current=d,He(""),Fe(!!l),l&&s("vcs/repositories",{sessionId:l,...se?{subdirectory:se}:{}},d.signal).then(M=>{if(!d.signal.aborted){let W=io(Lt.current,M,se);lt.current=!1,H(te=>Xr(W.repositories,te)),w(W)}}).catch(M=>{d.signal.aborted||He(M.message)}).finally(()=>{d.signal.aborted||Fe(!1)}),()=>d.abort()},[l,L,se]),(0,a.useEffect)(()=>{let d=new AbortController,M=Dt.current;xr.current=d,Dt.current=!1,M||(x({}),xe(""));for(let W of De){let te=bt(W,u);i(()=>s("vcs/status",{sessionId:l,repositoryId:W.id,mode:te},d.signal),d.signal).then(me=>{d.signal.aborted||x(ve=>({...ve,[W.id]:{...me,mode:te}}))}).catch(me=>{if(!d.signal.aborted){if(me.code==="vcs/rediscover-required"){Ce();return}x(ve=>({...ve,[W.id]:{error:me.message,changes:[],mode:te}}))}})}return()=>d.abort()},[l,y,v,u,f]),(0,a.useEffect)(()=>{let d=M=>{M.target===window&&l&&v&&document.visibilityState==="visible"&&wr(!0)};return window.addEventListener("focus",d),()=>window.removeEventListener("focus",d)},[l,v,u]);let Me=Le.find(d=>d.id===A?.repositoryId),Ne=A?h[A.repositoryId]:null,Ot=JSON.stringify([l,y?.cwd,A?.repositoryId,u,A?.id]),Ie=fr?.key===Ot&&fr?.status===Ne;(0,a.useEffect)(()=>hr(null),[Ot,Ne,he]),(0,a.useEffect)(()=>{let d=new AbortController;return Ve.current=d,ce(null),xe(""),Et({added:0,deleted:0,count:0}),We("content"),be(!!A&&!!Ne),!he&&A&&Ne&&Me&&s("vcs/compare",{sessionId:l,repositoryId:A.repositoryId,mode:bt(Me,u),id:A.id,...Ie?{large:!0}:{}},d.signal).then(M=>{d.signal.aborted||ce(M)}).catch(M=>{if(!d.signal.aborted){if(M.code==="vcs/rediscover-required"){Ce();return}xe(M.message)}}).finally(()=>{d.signal.aborted||be(!1)}),()=>d.abort()},[A,Ne,l,u,he,Ie,yo]),(0,a.useEffect)(()=>{let d=!1,M,W=new AbortController;gr(!1),X("");let te=document.createElement("link");return te.rel="stylesheet",te.href=no("editor.css"),document.head.appendChild(te),ht(no("editor.js")+"?v="+encodeURIComponent(Ge)+"&retry="+pr,{signal:W.signal}).then(me=>{d||(M=me.createDiff(br.current,{onStats:Et,onComputation:ve=>{d||xo(ve)}}),Pe.current=M,gr(!0))}).catch(me=>{d||X(me.message)}),()=>{d=!0,W.abort(),M?.dispose(),Pe.current=null,te.remove()}},[pr]),(0,a.useEffect)(()=>{fe&&(!D||D.binary||he)&&Pe.current?.setContent({left:{text:""},right:{text:""}},"empty"),fe&&D&&!D.binary&&!he&&Pe.current?.setContent(D,JSON.stringify([l,y?.cwd,A?.repositoryId,u,A?.id,D.path]))},[fe,D,l,y,A,u,he]),(0,a.useEffect)(()=>{Pe.current?.options({sideBySide:ze,ignoreWhitespace:kt,wrap:Ct})},[fe,ze,kt,Ct]);let $e=oo(De,h,pe,st),Ue=$e.flatMap(d=>d.changes),wo=ro(Ne?.changes),Ft=Zr(Ue,A?.id),Sr=()=>{Je(""),lr("all")},So=async()=>{let d=D?.path||Ee?.path;if(d)try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(d);else{let M=document.createElement("textarea");try{if(M.value=d,M.style.cssText="position:fixed;opacity:0",document.body.appendChild(M),M.select(),!document.execCommand("copy"))throw Error("copy failed")}finally{M.remove()}}we(!0),window.setTimeout(()=>we(!1),1500)}catch{xe(t("copyFailed"))}};(0,a.useEffect)(()=>{let d=M=>{if(he)return;let W=Wr(M,yr.current,at.current,!!pe);W&&(M.preventDefault(),W==="search"?(at.current?.focus(),at.current?.select()):W==="clear"?Je(""):Tt(W))};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[pe,Ue,A,he]);let kr=d=>St(M=>{let W={...M};for(let te of $e)for(let me of nr(sr(te.changes)))W[te.repository.id+"\0"+me]=!d;return W}),ko=()=>{let d=Ee;!d||!A||(cr(!0),Sr(),St(M=>{let W={...M};for(let te of eo(d.path))W[A.repositoryId+"\0"+te]=!1;return W}),At.current=ot(A.repositoryId,d.id))};(0,a.useEffect)(()=>{let d=At.current;if(!d)return;let M=[...Ht.current?.querySelectorAll("button[data-vcs-change]")||[]].find(W=>W.dataset.vcsChange===d);M&&(M.scrollIntoView({block:"nearest"}),M.focus(),At.current=null)},[Te,pe,st,dr,$e]);let Tt=d=>{let M=Rr(Ue,A?.id,d);M&&(Ve.current?.abort(),ce(null),We("content"),O({repositoryId:v,id:M.id}))},Cr=de||De.some(d=>!h[d.id]),Ee=Ne?.changes?.find(d=>d.id===A?.id),Be=D?.properties,Vt=Be?[...new Set([...Object.keys(Be.left||{}),...Object.keys(Be.right||{})])].filter(d=>Be.left?.[d]!==Be.right?.[d]):[],Qe=d=>so[d?.status]||d?.status?.slice(0,1).toUpperCase()||"M",Nr=D?.binary?[D.left.label,D.right.label].filter(Boolean).join(" \u2194 "):"",qe=Ae||(wt?t("loading"):l?Cr&&!Ee?t("loading"):ke||(Le.length?Ee?D?.binary?t("binary")+(Nr?" "+t("binaryComparison",{files:Nr}):""):D?!fe&&!P?t("loading"):"":t("pick"):t("pick"):t("noRepo")):t("noSession")),Co=d=>_r(d,Ht.current),Er=({entry:d,compact:M=!1,depth:W=0})=>{let te=d.path.lastIndexOf("/");return a.default.createElement("button",{className:"vcs-file","data-vcs-item":!0,"data-vcs-change":ot(v,d.id),"aria-current":A?.repositoryId===v&&A?.id===d.id?"true":void 0,style:{paddingInlineStart:8+W*14},title:(d.oldPath?d.oldPath+" \u2192 ":"")+d.path+" \xB7 "+t(Qe(d)),onClick:()=>{Ve.current?.abort(),ce(null),We("content"),O({repositoryId:v,id:d.id})}},a.default.createElement("span",{className:"vcs-status","data-status":Qe(d)},Qe(d)),a.default.createElement(Gt,{submodule:d.submodule,t}),a.default.createElement("span",{className:"vcs-filename"},M?d.path.slice(te+1):d.path,d.oldPath&&a.default.createElement("small",{className:"vcs-filepath"},"\u2190 ",d.oldPath)))},Hr=({node:d,repository:M,depth:W=0})=>a.default.createElement(a.default.Fragment,null,d.directories.map(te=>{let me=M.id+"\0"+te.id,ve=!!dr[me];return a.default.createElement(a.default.Fragment,{key:me},a.default.createElement("button",{className:"vcs-dir vcs-dir-toggle","data-vcs-item":!0,"data-vcs-directory":ve?"closed":"open","aria-expanded":!ve,style:{paddingInlineStart:8+W*14},onClick:()=>St(No=>({...No,[me]:!ve}))},a.default.createElement("span",{"aria-hidden":"true"},ve?"\u203A":"\u2304"),te.name,a.default.createElement("small",null,te.count)),!ve&&a.default.createElement(Hr,{node:te,repository:M,depth:W+1}))}),d.files.map(te=>a.default.createElement(Er,{key:ot(M.id,te.id),entry:te,compact:d.id!=="",depth:W})));return a.default.createElement("section",{ref:yr,className:"vcs-root","aria-label":t("title")},a.default.createElement("style",null,jt),a.default.createElement("header",{className:"vcs-top"},a.default.createElement(ui,null),a.default.createElement("h1",{className:"vcs-title"},t("title")),a.default.createElement("span",{className:"vcs-badge"},t("readonly")),a.default.createElement("span",{className:"vcs-spacer"}),a.default.createElement("select",{"aria-label":t("repositories"),value:v,disabled:de||!Le.length,onChange:d=>{Ye(),x({}),H(d.target.value)}},!Le.length&&a.default.createElement("option",{value:""},t("repositories")),Le.map(d=>a.default.createElement("option",{key:d.id,value:d.id},it(d,t("workspaceRoot"))))),a.default.createElement("label",{className:"vcs-mode"},t("gitMode")," ",a.default.createElement("select",{"aria-label":t("gitMode"),value:u,disabled:he||!De.some(d=>d.type==="git"),onChange:d=>{Ye(),x({}),k(d.target.value)}},["all","unstaged","staged"].map(d=>a.default.createElement("option",{key:d,value:d},t(d))))),a.default.createElement("button",{onClick:()=>wr(!1),disabled:Cr||!l},t("refresh")),a.default.createElement("button",{onClick:()=>e.layout.selectPanel(null)},t("back")),a.default.createElement("div",{className:"vcs-path",title:y?.cwd||n?.cwd},t("session"),": ",y?.cwd||n?.cwd||"\u2014"),a.default.createElement("form",{className:"vcs-discovery",onSubmit:d=>{d.preventDefault(),pt()}},a.default.createElement("input",{"aria-label":t("subdirectory"),placeholder:t("subdirectory"),value:B,onChange:d=>q(d.target.value)}),a.default.createElement("button",{disabled:!l||de},t("rescan")),a.default.createElement("span",null,t("scanHint"))),y?.truncated&&a.default.createElement("div",{className:"vcs-notice"},t("truncated")),(y?.warnings||[]).map((d,M)=>a.default.createElement("div",{className:"vcs-notice",key:M},typeof d=="string"?d:d.message||JSON.stringify(d)))),De.filter(d=>d.type==="svn"&&!he).map(d=>a.default.createElement(a.default.Fragment,{key:JSON.stringify([l,d.id,L,f])},a.default.createElement(Jt,{repositoryId:d.id,sessionId:l,rpc:s,t,onRediscover:Ce}))),(je||Mt)&&a.default.createElement(a.default.Fragment,null,a.default.createElement("nav",{className:"vcs-review-views","aria-label":t("reviewView")},a.default.createElement("button",{"aria-pressed":!he,onClick:()=>mr("workspace")},t("workspaceView")),a.default.createElement("button",{"aria-pressed":Ke,"aria-expanded":Ke,onClick:()=>Bt("history")},t("history")),je&&a.default.createElement(a.default.Fragment,null,a.default.createElement("button",{"aria-pressed":ct,"aria-expanded":ct,onClick:()=>Bt("stash")},t("stash")),a.default.createElement("button",{"aria-pressed":dt,"aria-expanded":dt,onClick:()=>Bt("grep")},t("grep")))),Ke&&Mt&&a.default.createElement(Kt,{key:JSON.stringify([l,v,b,L]),sessionId:l,repositoryId:v,rpc:s,t,onRediscover:Ce}),Ke&&je&&a.default.createElement(rt,{key:JSON.stringify([l,v,b,L]),sessionId:l,repositoryId:v,rpc:s,t,onRediscover:Ce}),ct&&a.default.createElement(tr,{sessionId:l,repositoryId:v,rpc:s,t,onRediscover:Ce}),dt&&a.default.createElement(or,{sessionId:l,repositoryId:v,rpc:s,t,onRediscover:Ce})),a.default.createElement("div",{className:"vcs-body",hidden:he,"aria-label":t("workspaceView")},a.default.createElement("aside",{className:"vcs-files"},a.default.createElement("div",{className:"vcs-filter"},a.default.createElement("input",{ref:at,"aria-label":t("search"),placeholder:t("search"),title:t("searchShortcut"),value:pe,onChange:d=>Je(d.target.value)}),(pe||st!=="all")&&a.default.createElement("button",{className:"vcs-clear-filter",onClick:Sr},t("clearFilters"))),a.default.createElement("div",{className:"vcs-status-filter","aria-label":t("filterStatus")},["all","modified","added","deleted","renamed","conflicted","untracked"].map(d=>a.default.createElement("button",{key:d,"aria-pressed":st===d,onClick:()=>lr(d)},t(d==="all"?"allFiles":so[d]||"M")," ",a.default.createElement("small",null,wo[d]||0)))),a.default.createElement("div",{className:"vcs-count"},a.default.createElement("span",null,Ue.length," ",t("files")),a.default.createElement("span",{className:"vcs-auto"},t("autoRefresh")),a.default.createElement("button",{"aria-pressed":Te,onClick:()=>cr(!Te)},t(Te?"tree":"list"))),Te&&a.default.createElement("div",{className:"vcs-tree-actions"},a.default.createElement("button",{onClick:()=>kr(!0)},t("expandAll")),a.default.createElement("button",{onClick:()=>kr(!1)},t("collapseAll")),a.default.createElement("button",{onClick:ko,disabled:!Ee},t("revealSelected"))),a.default.createElement("nav",{className:"vcs-filelist","aria-label":t("title"),ref:Ht,onKeyDown:Co},$e.map(d=>{let M=d.repository;return a.default.createElement("section",{className:"vcs-repository",key:M.id,"aria-label":it(M,t("workspaceRoot"))},a.default.createElement("div",{className:"vcs-repository-heading",title:M.root},a.default.createElement("strong",null,it(M,t("workspaceRoot"))),a.default.createElement("small",null,M.type==="svn"?t("svnBase"):t(bt(M,u)))),d.error?a.default.createElement("div",{className:"vcs-message vcs-error",role:"status"},d.error,a.default.createElement("button",{onClick:pt},t("rescan"))):h[M.id]?Te?a.default.createElement(Hr,{node:sr(d.changes),repository:M}):d.changes.map(W=>a.default.createElement(Er,{key:ot(M.id,W.id),entry:W})):a.default.createElement("div",{className:"vcs-message"},t("loading")),!d.error&&h[M.id]&&!d.changes.length&&a.default.createElement("div",{className:"vcs-message"},t(pe?"emptySearch":"clean")))}),!$e.length&&a.default.createElement("div",{className:"vcs-message"},de?t("loading"):ke||t(l?"noRepo":"noSession"),ke&&a.default.createElement("button",{onClick:pt},t("rescan"))))),a.default.createElement("main",{className:"vcs-detail"},a.default.createElement("div",{className:"vcs-filehead"},a.default.createElement("strong",{title:D?.path||Ee?.path},Me?it(Me,t("workspaceRoot"))+" / ":"",D?.path||Ee?.path||t("pick")),a.default.createElement("button",{className:"vcs-copy-path",disabled:!(D?.path||Ee?.path),onClick:So},t(le?"copied":"copyPath")),le&&a.default.createElement("span",{className:"vcs-sr-only",role:"status"},t("pathCopied")),a.default.createElement("span",{className:"vcs-spacer"}),D&&!D.binary&&fe&&a.default.createElement(a.default.Fragment,null,a.default.createElement("span",{className:"vcs-add"},"+",Nt.added),a.default.createElement("span",{className:"vcs-del"},"\u2212",Nt.deleted))),P&&a.default.createElement("div",{className:"vcs-notice",role:"status"},t("fallback")," ",a.default.createElement("button",{onClick:()=>ur(d=>d+1)},t("retry")),a.default.createElement("details",null,a.default.createElement("summary",null,t("diagnostics")),P)),D&&a.default.createElement("div",{className:"vcs-context","aria-label":t("comparisonContext")},a.default.createElement("span",{className:"vcs-context-status","data-status":Qe(D)},t(Qe(D))),D.oldPath&&a.default.createElement("span",{className:"vcs-context-rename",title:D.oldPath+" \u2192 "+D.path},D.oldPath," ",a.default.createElement("b",null,"\u2192")," ",D.path),a.default.createElement("span",null,D.left.label||"\u2014"," ",a.default.createElement("b",null,"\u2194")," ",D.right.label||"\u2014"),(D.left.encoding||D.right.encoding)&&a.default.createElement("span",null,t("encoding"),": ",D.left.encoding||"\u2014"," / ",D.right.encoding||"\u2014")),D&&Me?.type==="git"&&a.default.createElement(Ze,{key:JSON.stringify([l,y?.cwd,A.repositoryId,u,A.id,f,Ne]),workspace:!0,sessionId:l,repositoryId:A.repositoryId,mode:u,id:A.id,rpc:s,t,onRediscover:Ce}),Me?.type==="git"&&(Ie||D?.notice?.includes("2 MiB"))&&a.default.createElement("div",{className:"vcs-notice"},a.default.createElement("span",null,t("workspaceLargeScope")),a.default.createElement("button",{onClick:()=>{Ve.current?.abort(),ce(null),hr(Ie?null:{key:Ot,status:Ne})}},t(Ie?"largeClose":"largeLoad")),Ie&&Ae&&a.default.createElement("button",{onClick:()=>bo(d=>d+1)},t("retry"))),D?.large&&a.default.createElement("p",{role:"status"},t(P?"largeFallback":vr==="complete"?"diffComplete":vr==="incomplete"?"diffIncomplete":"diffPending")),D?.notice&&a.default.createElement("div",{className:"vcs-notice"},D.notice),D?.submodule&&a.default.createElement("p",{role:"status"},t("submoduleScope")),D?.status==="conflicted"&&Me?.type==="git"&&a.default.createElement(qt,{key:JSON.stringify([l,A.repositoryId,u,A.id,f]),sessionId:l,repositoryId:A.repositoryId,mode:u,id:A.id,rpc:s,t,onRediscover:Ce}),Vt.length>0&&a.default.createElement("div",{className:"vcs-tabs"},["content","properties"].map(d=>a.default.createElement("button",{key:d,"aria-pressed":nt===d,onClick:()=>We(d)},t(d),d==="properties"?" ("+Vt.length+")":""))),a.default.createElement("div",{className:"vcs-labels"},a.default.createElement("span",null,D?.left.label||"\u2014",D?.left.encoding?" \xB7 "+D.left.encoding:""),a.default.createElement("span",null,D?.right.label||"\u2014",D?.right.encoding?" \xB7 "+D.right.encoding:"")),a.default.createElement("div",{className:"vcs-editorbox","data-hidden":!!qe||nt!=="content",style:nt==="properties"?{display:"none"}:void 0},a.default.createElement("div",{className:"vcs-editor",ref:br,style:P?{display:"none"}:void 0}),P&&D&&!D.binary&&!qe&&a.default.createElement(Xe,{comparison:D,labels:ft(t)}),qe&&a.default.createElement("div",{className:"vcs-message "+(ke||Ae||P?"vcs-error":""),role:"status"},qe,(ke||Ae||P)&&a.default.createElement("button",{onClick:()=>P?ur(d=>d+1):pt()},t(P?"retry":"rescan")))),nt==="properties"&&a.default.createElement("div",{className:"vcs-properties"},a.default.createElement("table",null,a.default.createElement("thead",null,a.default.createElement("tr",null,a.default.createElement("th",null,t("properties")),a.default.createElement("th",null,D?.left.label||t("before")),a.default.createElement("th",null,D?.right.label||t("after")))),a.default.createElement("tbody",null,Vt.map(d=>a.default.createElement("tr",{key:d},a.default.createElement("th",null,d),a.default.createElement("td",null,Be.left?.[d]??"\u2014"),a.default.createElement("td",null,Be.right?.[d]??"\u2014")))))),a.default.createElement("footer",{className:"vcs-toolbar"},a.default.createElement("button",{disabled:!fe,"aria-pressed":ze,onClick:()=>ho(!ze)},t(ze?"side":"inline")),a.default.createElement("label",null,a.default.createElement("input",{type:"checkbox",disabled:!fe,checked:kt,onChange:d=>vo(d.target.checked)}),t("whitespace")),a.default.createElement("label",null,a.default.createElement("input",{type:"checkbox",disabled:!fe,checked:Ct,onChange:d=>go(d.target.checked)}),t("wrap")),a.default.createElement("span",{className:"vcs-spacer"}),fe&&a.default.createElement("span",null,Nt.count," ",t("changes")),a.default.createElement("button",{disabled:!fe||!D||!!qe,onClick:()=>Pe.current?.navigate("previous")},t("previous")),a.default.createElement("button",{disabled:!fe||!D||!!qe,onClick:()=>Pe.current?.navigate("next")},t("next")),Ft.index>0&&a.default.createElement("span",{className:"vcs-review-position"},t("reviewPosition",{index:Ft.index,total:Ft.total})),a.default.createElement("span",{className:"vcs-toolbar-separator"}),a.default.createElement("button",{title:t("fileShortcut"),disabled:!Ue.length,onClick:()=>Tt("previous")},t("previousFile")),a.default.createElement("button",{title:t("fileShortcut"),disabled:!Ue.length,onClick:()=>Tt("next")},t("nextFile"))))))}return c}function fi(e){if(e?.protocol!==1||!/^\d+\.\d+\.\d+$/.test(e.version)||!["backend","runningBackend","interface"].every(r=>/^[a-f0-9]{64}$/.test(e[r])))throw Error("Invalid frontend manifest");if(e.backend!==e.runningBackend)throw Object.assign(Error("Backend changed; restart DSH."),{code:"restart-required"});return e}async function co({base:e,fetcher:r=fetch,importer:o=s=>import(s),signal:t,requireModule:i}){let s=new URL("vcs-assets/frontend.json",e),c=await r(s,{credentials:"same-origin",cache:"no-store",redirect:"error",signal:t});if(!c.ok)throw Error("Frontend manifest HTTP "+c.status);if(!c.headers.get("content-type")?.includes("application/json"))throw Error("Invalid frontend manifest Content-Type");let m=fi(await c.json());t?.throwIfAborted();let p=new URL("interface.js",s);p.searchParams.set("hash",m.interface);let n=await o(p.href);t?.throwIfAborted();let l=n.default(i);if(typeof l.createPage!="function"||!l.dictionaries)throw Error("Invalid frontend module");return{ui:l,manifest:m}}var _=R(require("react"),1);var xt="@feng0531/dsh-vcs";function Oe(e){return typeof e=="string"&&/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/.test(e)&&e.length<50}function po(e,r){if(!Oe(e)||!Oe(r))return!1;let o=e.split(".").map(BigInt),t=r.split(".").map(BigInt);for(let i=0;i<3;i++)if(o[i]!==t[i])return o[i]>t[i];return!1}function uo(e){if(!e?.ok)return{state:"unknown",message:"\u672A\u6536\u5230\u53EF\u9760\u7684\u66F4\u65B0\u7ED3\u679C\u3002\u5B89\u88C5\u53EF\u80FD\u4ECD\u5728\u8FDB\u884C\uFF0C\u8BF7\u5230 DSH\u300C\u63D2\u4EF6\u300D\u9875\u9762\u68C0\u67E5\uFF0C\u4E0D\u8981\u91CD\u590D\u70B9\u51FB\u66F4\u65B0\u3002"};let r=e.value;return r?.application==="failed"?{state:"failed",message:"\u66F4\u65B0\u5931\u8D25\uFF0C\u672A\u786E\u8BA4\u65B0\u7248\u751F\u6548\u3002\u8BF7\u5728 DSH\u300C\u63D2\u4EF6\u300D\u9875\u9762\u67E5\u770B\u8BE6\u60C5\uFF1A"+(r.error?.code||"\u5B89\u88C5\u9519\u8BEF")}:r?.application==="cancelled"?{state:"cancelled",message:"\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u65B0\u7248\u672A\u786E\u8BA4\u751F\u6548\u3002"}:r?.application==="restart-required"?{state:"restart-required",message:"\u65B0\u7248\u5DF2\u5B89\u88C5\uFF0C\u4F46\u5F53\u524D DSH \u540E\u53F0\u4ECD\u5728\u8FD0\u884C\u65E7\u7248\u3002\u8BF7\u5148\u7ED3\u675F\u5F53\u524D\u6D4F\u89C8\uFF0C\u518D\u81EA\u884C\u91CD\u542F DSH \u5E76\u5237\u65B0\u9875\u9762\u3002\u63D2\u4EF6\u4E0D\u4F1A\u81EA\u52A8\u91CD\u542F\u3002"}:r?.application==="applied"?{state:"applied",message:"\u5BBF\u4E3B\u62A5\u544A\u66F4\u65B0\u5DF2\u5E94\u7528\u3002\u8BF7\u5237\u65B0\u9875\u9762\u52A0\u8F7D\u65B0\u7248\u754C\u9762\uFF1B\u82E5\u524D\u540E\u7AEF\u7248\u672C\u4ECD\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u624B\u52A8\u91CD\u542F DSH\u3002"}:{state:"unknown",message:"\u5BBF\u4E3B\u672A\u786E\u8BA4\u65B0\u7248\u5DF2\u751F\u6548\uFF0C\u8BF7\u5230 DSH\u300C\u63D2\u4EF6\u300D\u9875\u9762\u68C0\u67E5\u5B89\u88C5\u4E0E\u542F\u7528\u72B6\u6001\u3002"}}async function mo(e,r,{confirmed:o=!1,requestId:t}={}){if(!o)throw new Error("\u9700\u8981\u5148\u786E\u8BA4\u66F4\u65B0");if(!Oe(r?.latestVersion)||!po(r.latestVersion,r.runningVersion))throw new Error("\u6CA1\u6709\u53EF\u5B89\u88C5\u7684\u65B0\u7248\u672C");if(!e||typeof e.installBundle!="function")throw new Error("\u5F53\u524D DSH \u4E0D\u652F\u6301\u6B64\u66F4\u65B0\u63A5\u53E3\uFF0C\u8BF7\u5230\u300C\u63D2\u4EF6\u300D\u9875\u9762\u624B\u52A8\u66F4\u65B0");try{return uo(await e.installBundle(xt+"@"+r.latestVersion,{enabled:!1,registry:"https://registry.npmjs.org/",requestId:t}))}catch{return uo(null)}}function ar({rpc:e,manager:r,clientVersion:o,reloadBusy:t,onLock:i,onManager:s,t:c}){let[m,p]=(0,_.useState)(null),[n,l]=(0,_.useState)(null),[u,k]=(0,_.useState)(""),[f,C]=(0,_.useState)(""),[b,N]=(0,_.useState)(null),[y,w]=(0,_.useState)(!1),h=(0,_.useRef)(!1),x=(0,_.useRef)(!1),v=(0,_.useRef)(null),H=!!b&&["restart-required","applied","unknown"].includes(b.state);(0,_.useEffect)(()=>{h.current=!0;let B=new AbortController;return v.current=B,e("vcs/runtime-info",{},B.signal).then(q=>{B.signal.aborted||p(q)}).catch(q=>{B.signal.aborted||C(q.message)}),()=>{h.current=!1,v.current?.abort()}},[]);let L=async()=>{if(x.current||t||H)return;x.current=!0,v.current?.abort();let B=new AbortController;v.current=B,k("\u6B63\u5728\u68C0\u67E5\u66F4\u65B0"),C(""),l(null),w(!1);try{let q=await e("vcs/check-update",{},B.signal);if(h.current&&!B.signal.aborted){if(q.packageName!==xt||!Oe(q.latestVersion)||!Oe(q.runningVersion)||q.protocol!==1)throw Error("\u540E\u53F0\u8FD4\u56DE\u7684\u7248\u672C\u4FE1\u606F\u65E0\u6548");l(q),p(q),N(null)}}catch(q){h.current&&!B.signal.aborted&&C(q.message)}finally{x.current=!1,h.current&&k("")}},g=async()=>{if(!(x.current||t||!y||!n||H)){x.current=!0,k("\u6B63\u5728\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8BF7\u52FF\u5173\u95ED\u9875\u9762"),C(""),i(!0);try{let B=await mo(r,n,{confirmed:y,requestId:crypto.randomUUID()});h.current&&(N(B),w(!1))}catch(B){h.current&&C(B.message)}finally{x.current=!1,i(!1),h.current&&k("")}}};return _.default.createElement("section",{style:{padding:12,flexShrink:0,maxHeight:"45%",overflow:"auto"},"aria-label":c("updatePlugin")},_.default.createElement("p",null,"\u754C\u9762\u7248\u672C\uFF1A",o," \xB7 \u540E\u53F0\u7248\u672C\uFF1A",m?.runningVersion||"\u5C1A\u672A\u8BFB\u53D6"),m&&(m.runningVersion!==o||m.protocol!==1)&&_.default.createElement("p",{role:"alert"},"\u754C\u9762\u4E0E\u540E\u53F0\u7248\u672C\u4E0D\u4E00\u81F4\u3002\u8BF7\u5237\u65B0\u9875\u9762\uFF1B\u82E5\u4ECD\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u624B\u52A8\u91CD\u542F DSH\u3002"),_.default.createElement("button",{disabled:!!u||t||H,onClick:L},"\u68C0\u67E5\u66F4\u65B0")," ",_.default.createElement("button",{disabled:!!u,onClick:s},c("updateManager")),_.default.createElement("a",{href:n?"https://github.com/f-e-n-g-0531/dsh-vcs/releases/tag/v"+n.latestVersion:"https://github.com/f-e-n-g-0531/dsh-vcs/releases/latest",target:"_blank",rel:"noopener noreferrer"},c("updateRelease")),n&&!H&&_.default.createElement("p",null,n.available?"\u53D1\u73B0\u65B0\u7248\u672C "+n.latestVersion:"\u5F53\u524D\u8FD0\u884C\u7248\u672C\u6CA1\u6709\u66F4\u65B0\u7684\u6B63\u5F0F\u7248\u672C\u3002"),n?.available&&!H&&_.default.createElement(_.default.Fragment,null,_.default.createElement("p",null,"\u66F4\u65B0\u4F1A\u4FEE\u6539\u5F53\u524D DSH \u7684\u63D2\u4EF6\u5B89\u88C5\u73AF\u5883\u3002\u8BF7\u5148\u5907\u4EFD\u914D\u7F6E\u3002\u66F4\u65B0\u5DF2\u6709\u63D2\u4EF6\u53EF\u80FD\u9700\u8981\u624B\u52A8\u91CD\u542F\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u91CD\u542F\uFF1B\u4E0D\u652F\u6301\u6B64\u63A5\u53E3\u65F6\u8BF7\u5230\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u5904\u7406\u3002"),_.default.createElement("label",null,_.default.createElement("input",{type:"checkbox",checked:y,disabled:!!u||t,onChange:B=>w(B.target.checked)})," \u6211\u786E\u8BA4\u5C06\u6B64\u63D2\u4EF6\u66F4\u65B0\u5230 ",n.latestVersion),_.default.createElement("button",{disabled:!y||!!u||t,onClick:g},"\u66F4\u65B0\u5230 ",n.latestVersion)),u&&_.default.createElement("p",{role:"status"},u,_.default.createElement("progress",{"aria-label":"\u66F4\u65B0\u8FDB\u5EA6"})),f&&_.default.createElement("p",{role:"alert"},f),b&&_.default.createElement("p",{role:"status","data-update-state":b.state},b.message))}var hi=[...ao,"remote","remote.pluginManager"];function vi(e,{loader:r=co}={}){e.effect(()=>e.locale.register("local.vcs",ir));let o=e.locale.bind("local.vcs"),t=mt(e.connection,()=>o("error"));class i extends J.default.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?J.default.createElement(J.default.Fragment,null,J.default.createElement("p",{role:"alert"},o("reloadFailed")),J.default.createElement("button",{onClick:this.props.restore},o("retry"))):this.props.children}}function s(c){(0,J.useSyncExternalStore)(q=>e.locale.subscribe(q),()=>e.locale.getSnapshot(),()=>e.locale.getSnapshot());let[m,p]=(0,J.useState)(0),[n,l]=(0,J.useState)(!1),[u,k]=(0,J.useState)(""),[f,C]=(0,J.useState)(!1),[b,N]=(0,J.useState)(!1),y=(0,J.useRef)(null),w=(0,J.useRef)("workspace"),h=(0,J.useRef)(null),x=(0,J.useRef)(!0),v=(0,J.useRef)(!1),[H,L]=(0,J.useState)(()=>({Component:lo(e,{initialView:w.current,onViewChange:q=>{w.current=q}}),version:Ge}));(0,J.useEffect)(()=>(x.current=!0,()=>{x.current=!1,h.current?.abort()}),[]);let g=async()=>{if(v.current||b)return;v.current=!0,h.current?.abort();let q=new AbortController;h.current=q,l(!0),k("");try{let{ui:se,manifest:ue}=await r({base:document.baseURI,signal:q.signal,requireModule:O=>{if(O==="react")return J.default;throw Error("Unsupported interface dependency")}});if(!x.current||q.signal.aborted)return;let A=se.createPage(e,{initialView:w.current,onViewChange:O=>{w.current=O}});y.current=H,L({Component:A,version:ue.version}),p(O=>O+1),k(o("reloadDone"))}catch(se){x.current&&!q.signal.aborted&&k(o(se.code==="restart-required"?"reloadRestart":"reloadFailed")+" "+se.message)}finally{v.current=!1,x.current&&!q.signal.aborted&&l(!1)}},B=H.Component;return J.default.createElement("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0}},J.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,padding:8,flexShrink:0}},J.default.createElement("span",null,"VCS ",H.version),J.default.createElement("button",{disabled:n||b,onClick:()=>C(q=>!q),"aria-expanded":f},o("updatePlugin")),J.default.createElement("button",{disabled:n||b,onClick:g},o(n?"loading":"reloadInterface"))),J.default.createElement("div",{hidden:!f},J.default.createElement(ar,{rpc:t,manager:e.remote?.pluginManager,clientVersion:H.version,reloadBusy:n,onLock:N,onManager:()=>e.layout.selectPanel("plugins"),t:o})),u&&J.default.createElement("p",{role:"status",style:{padding:"0 12px",flexShrink:0}},u),J.default.createElement("div",{style:{flex:1,minHeight:0}},J.default.createElement(i,{key:m,restore:()=>{y.current&&(L(y.current),y.current=null),p(q=>q+1)}},J.default.createElement(B,{...c}))))}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:()=>o("title"),order:65},()=>J.default.createElement("span",{"aria-hidden":"true"},"\u25A3")))}
|
|
181
181
|
return module.exports; }});
|
package/dist/frontend.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"protocol":1,"version":"0.4.
|
|
1
|
+
{"protocol":1,"version":"0.4.9","backend":"198b6d7cd405abaf8012b662ab92ddbad44ed5283529415aa921f1af0dd4b5ef","interface":"bad4e6b8683f18b66ad66cc1a21d447bfb3730a74f0f745036a84808b788ee30"}
|