fckgit 1.3.5 → 1.3.6
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/app.js +4 -4
- package/package.json +3 -3
package/dist/app.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as e}from"node:module";import{PassThrough as t,Stream as n}from"node:stream";import r,{cwd as i,env as a}from"node:process";import o from"node:os";import{execFileSync as s,spawnSync as c}from"node:child_process";import*as l from"node:fs";import u from"node:fs";import d from"node:tty";import{EventEmitter as f}from"node:events";import p from"node:path";var m=Object.create,h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,b=(e,t)=>()=>(e&&(t=e(e=0)),t),x=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),S=(e,t)=>{let n={};for(var r in e)h(n,r,{get:e[r],enumerable:!0});return t||h(n,Symbol.toStringTag,{value:`Module`}),n},C=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=_(t),a=0,o=i.length,s;a<o;a++)s=i[a],!y.call(e,s)&&s!==n&&h(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=g(t,s))||r.enumerable});return e},w=(e,t,n)=>(n=e==null?{}:m(v(e)),C(t||!e||!e.__esModule?h(n,`default`,{value:e,enumerable:!0}):n,e)),T=e(import.meta.url),ee=x((e=>{
|
|
2
|
+
import{createRequire as e}from"node:module";import{PassThrough as t,Stream as n}from"node:stream";import r,{cwd as i,env as a}from"node:process";import o from"node:os";import{execFileSync as s,spawnSync as c}from"node:child_process";import*as l from"node:fs";import u from"node:fs";import d from"node:tty";import{EventEmitter as f}from"node:events";import p from"node:path";var m=Object.create,h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,b=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},x=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),S=(e,t)=>{let n={};for(var r in e)h(n,r,{get:e[r],enumerable:!0});return t||h(n,Symbol.toStringTag,{value:`Module`}),n},C=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=_(t),a=0,o=i.length,s;a<o;a++)s=i[a],!y.call(e,s)&&s!==n&&h(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=g(t,s))||r.enumerable});return e},w=(e,t,n)=>(n=e==null?{}:m(v(e)),C(t||!e||!e.__esModule?h(n,`default`,{value:e,enumerable:!0}):n,e)),T=e(import.meta.url),ee=x((e=>{
|
|
3
3
|
/**
|
|
4
4
|
* @license React
|
|
5
5
|
* react.production.js
|
|
@@ -115,6 +115,6 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
115
115
|
* LICENSE file in the root directory of this source tree.
|
|
116
116
|
*/
|
|
117
117
|
var Ws=x((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),G=x(((e,t)=>{t.exports=Ws()}))(),Gs=({children:e,onMeasure:t,index:n,width:r,measureKey:i})=>{let a=(0,j.useRef)(null);return(0,j.useLayoutEffect)(()=>{if(a.current){let{height:e}=Us(a.current);t(n,e)}},[n,t,r,i,e]),(0,G.jsx)(U,{ref:a,flexShrink:0,width:`100%`,flexDirection:`column`,children:e})};function Ks(e){let[t,n]=(0,j.useState)(e),r=(0,j.useRef)(e);return[t,(0,j.useCallback)(e=>{let t=typeof e==`function`?e(r.current):e;r.current=t,n(t)},[]),(0,j.useCallback)(()=>r.current,[])]}var qs=(0,j.forwardRef)(({scrollOffset:e,onViewportSizeChange:t,onContentHeightChange:n,onItemHeightChange:r,debug:i=!1,children:a,...o},s)=>{let[c,l,u]=Ks({height:0,width:0}),[d,f,p]=Ks(0),[m,h]=(0,j.useState)({}),g=(0,j.useRef)(null),_=(0,j.useRef)(null),v=(0,j.useRef)(0);(0,j.useLayoutEffect)(()=>{d!==v.current&&(n?.(d,v.current),v.current=d)},[d,n]);let y=(0,j.useRef)({}),b=(0,j.useRef)([]),x=(0,j.useRef)([]),S=(0,j.useRef)(0),C=(0,j.useCallback)((e,t)=>{let n=b.current[e]||e;if(y.current[n]!==t){let i=y.current[n]||0;y.current={...y.current,[n]:t};let a=0;for(let e of b.current)a+=y.current[e]||0;let o=p();a!==o&&f(a),r?.(e,t,i),S.current=Math.min(S.current,e+1)}},[r,n,p,f]),w=(0,j.useCallback)(()=>{if(g.current){let{width:e,height:n}=Us(g.current),r=u();(e!==r.width||n!==r.height)&&(t?.({width:e,height:n},r),l({width:e,height:n}))}},[g,t,u,l]);(0,j.useLayoutEffect)(()=>{w()});let T=(0,j.useRef)(null);if(T.current!==a){T.current=a;let e=[],t={};j.Children.forEach(a,(n,r)=>{if(!n)return;let i=(0,j.isValidElement)(n)?n.key:null,a=i===null?r:i;e[r]=a,t[a]=y.current[a]||0}),y.current=t,b.current=e,x.current=Array(e.length).fill(0),S.current=0;let n=0;e.forEach(e=>{n+=t[e]||0});let r=p();n!==r&&f(n)}return(0,j.useImperativeHandle)(s,()=>({getContentHeight:p,getViewportHeight:()=>u().height,getBottomOffset:()=>Math.max(0,p()-u().height),getItemHeight:e=>{let t=b.current[e]||e;return y.current[t]||0},remeasure:w,remeasureItem:e=>h(t=>({...t,[e]:(t[e]||0)+1})),getItemPosition:e=>{if(e<0||e>=b.current.length)return null;if(e>=S.current){let t=0,n=0;if(S.current>0){n=S.current;let e=n-1,r=b.current[e]||e,i=y.current[r]||0;t=(x.current[e]??0)+i}for(let r=n;r<=e;r++){x.current[r]=t;let e=b.current[r]||r,n=y.current[e]||0;t+=n}S.current=e+1}let t=x.current[e]??0,n=b.current[e]||e;return{top:t,height:y.current[n]||0}}}),[]),(0,G.jsx)(U,{...o,children:(0,G.jsx)(U,{ref:g,width:`100%`,children:(0,G.jsx)(U,{overflow:i?void 0:`hidden`,width:`100%`,children:(0,G.jsx)(U,{ref:_,width:`100%`,flexDirection:`column`,marginTop:-e,children:j.Children.map(a,(e,t)=>e?(0,G.jsx)(Gs,{index:t,width:c.width,onMeasure:C,measureKey:m[t],children:e},(0,j.isValidElement)(e)&&e.key||t):null)})})})})});function Js(e){let[t,n]=(0,j.useState)(e),r=(0,j.useRef)(e);return[t,(0,j.useCallback)(e=>{let t=typeof e==`function`?e(r.current):e;r.current=t,n(t)},[]),(0,j.useCallback)(()=>r.current,[])]}var Ys=(0,j.forwardRef)(({onScroll:e,onViewportSizeChange:t,onContentHeightChange:n,onItemHeightChange:r,debug:i=!1,children:a,...o},s)=>{let[c,l,u]=Js(0),d=(0,j.useRef)(null),f=(0,j.useRef)(0),p=(0,j.useCallback)((t,r)=>{f.current=t,n?.(t,r),u()>t&&(l(t),e?.(t))},[n,e,u,l]),m=(0,j.useCallback)(()=>Math.max(0,f.current-(d.current?.getViewportHeight()||0)),[]);return(0,j.useImperativeHandle)(s,()=>({scrollTo:t=>{if(typeof t!=`number`||isNaN(t))return;let n=f.current,r=Math.max(0,Math.min(t,n));r!==u()&&(l(r),e?.(r))},scrollBy:t=>{if(typeof t!=`number`||isNaN(t))return;let n=f.current,r=Math.max(0,Math.min(u()+t,n));r!==u()&&(l(r),e?.(r))},scrollToTop:()=>{u()!==0&&(l(0),e?.(0))},scrollToBottom:()=>{let t=m();u()!==t&&(l(t),e?.(t))},getScrollOffset:u,getContentHeight:()=>f.current,getViewportHeight:()=>d.current?.getViewportHeight()||0,getBottomOffset:m,getItemHeight:e=>d.current?.getItemHeight(e)||0,getItemPosition:e=>d.current?.getItemPosition(e)||null,remeasure:()=>d.current?.remeasure(),remeasureItem:e=>d.current?.remeasureItem(e)}),[e,m,u,l]),(0,G.jsx)(qs,{ref:d,scrollOffset:c,onViewportSizeChange:t,onContentHeightChange:p,onItemHeightChange:r,debug:i,children:a,...o})}),Xs=w(x(((e,t)=>{t.exports=e=>{if(!e||typeof e!=`string`||e.match(/^\s+$/))return[];let t=e.split(`
|
|
118
|
-
`);if(t.length===0)return[];let n=[],r=null,a=null,s=0,c=0,l=null,u=e=>{a?.changes.push({type:`normal`,normal:!0,ln1:s++,ln2:c++,content:e}),l.oldLines--,l.newLines--},d=e=>{let[t,a]=i(e)??[];r={chunks:[],deletions:0,additions:0,from:t,to:a},n.push(r)},f=()=>{(!r||r.chunks.length)&&d()},p=(e,t)=>{f(),r.new=!0,r.newMode=t[1],r.from=`/dev/null`},m=(e,t)=>{f(),r.deleted=!0,r.oldMode=t[1],r.to=`/dev/null`},h=(e,t)=>{f(),r.oldMode=t[1]},g=(e,t)=>{f(),r.newMode=t[1]},_=(e,t)=>{f(),r.index=e.split(` `).slice(1),t[1]&&(r.oldMode=r.newMode=t[1].trim())},v=e=>{f(),r.from=o(e)},y=e=>{f(),r.to=o(e)},b=e=>+(e||1),x=(e,t)=>{r||d(e);let[n,i,o,u]=t.slice(1);s=+n,c=+o,a={content:e,changes:[],oldStart:+n,oldLines:b(i),newStart:+o,newLines:b(u)},l={oldLines:b(i),newLines:b(u)},r.chunks.push(a)},S=e=>{a&&(a.changes.push({type:`del`,del:!0,ln:s++,content:e}),r.deletions++,l.oldLines--)},C=e=>{a&&(a.changes.push({type:`add`,add:!0,ln:c++,content:e}),r.additions++,l.newLines--)},w=e=>{if(!a)return;let[t]=a.changes.slice(-1);a.changes.push({type:t.type,[t.type]:!0,ln1:t.ln1,ln2:t.ln2,ln:t.ln,content:e})},T=[[/^diff\s/,d],[/^new file mode (\d+)$/,p],[/^deleted file mode (\d+)$/,m],[/^old mode (\d+)$/,h],[/^new mode (\d+)$/,g],[/^index\s[\da-zA-Z]+\.\.[\da-zA-Z]+(\s(\d+))?$/,_],[/^---\s/,v],[/^\+\+\+\s/,y],[/^@@\s+-(\d+),?(\d+)?\s+\+(\d+),?(\d+)?\s@@/,x],[/^\$/,w]],ee=[[/^\$/,w],[/^-/,S],[/^\+/,C],[/^\s*/,u]],te=e=>{for(let[t,n]of ee){let r=e.match(t);if(r){n(e,r);break}}l.oldLines===0&&l.newLines===0&&(l=null)},E=e=>{for(let[t,n]of T){let r=e.match(t);if(r){n(e,r);break}}},ne=e=>{l?te(e):E(e)};for(let e of t)ne(e);return n};let n=/(a|i|w|c|o|1|2)\/.*(?=["']? ["']?(b|i|w|c|o|1|2)\/)|(b|i|w|c|o|1|2)\/.*$/g,r=/^(a|b|i|w|c|o|1|2)\//,i=e=>e?.match(n)?.map(e=>e.replace(r,``).replace(/("|')$/,``)),a=/^\\?['"]|\\?['"]$/g,o=e=>{let t=s(e,`-+`).trim();return t=l(t),t.replace(a,``).replace(r,``)},s=(e,t)=>{if(e=d(e),!t&&String.prototype.trimLeft)return e.trimLeft();let n=u(t);return e.replace(RegExp(`^${n}+`),``)},c=/\t.*|\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d(.\d+)?\s(\+|-)\d\d\d\d/,l=e=>{let t=c.exec(e);return t&&(e=e.substring(0,t.index).trim()),e},u=e=>e==null?`\\s`:e instanceof RegExp?e.source:`[${d(e).replace(/([.*+?^=!:${}()|[\]/\\])/g,`\\$1`)}]`,d=e=>`${e??``}`}))(),1);const Zs=s(`git`,[`rev-parse`,`--show-toplevel`],{encoding:`utf8`,stdio:`pipe`}).trimEnd();function Qs(...e){return s(`git`,e,{encoding:`utf8`,stdio:`pipe`,cwd:Zs}).trimEnd()}function $s(...e){return c(`git`,e,{encoding:`utf8`,cwd:Zs}).stdout?.trim()??``}function ec(){try{return
|
|
119
|
-
`).map(e=>{let[t,n]=e,r=t!==` `&&t!==`?`,i=r?n!==` `&&n!==`?`?`PARTIAL`:`FULL`:`NONE`,a=n===`?`?`?`:r?t:n,o=e.slice(3);return{path:o,displayPath:p.relative(process.cwd(),p.join(Zs,o)),status:
|
|
120
|
-
`):[]})}else{let{staged:t,unstaged:n}=
|
|
118
|
+
`);if(t.length===0)return[];let n=[],r=null,a=null,s=0,c=0,l=null,u=e=>{a?.changes.push({type:`normal`,normal:!0,ln1:s++,ln2:c++,content:e}),l.oldLines--,l.newLines--},d=e=>{let[t,a]=i(e)??[];r={chunks:[],deletions:0,additions:0,from:t,to:a},n.push(r)},f=()=>{(!r||r.chunks.length)&&d()},p=(e,t)=>{f(),r.new=!0,r.newMode=t[1],r.from=`/dev/null`},m=(e,t)=>{f(),r.deleted=!0,r.oldMode=t[1],r.to=`/dev/null`},h=(e,t)=>{f(),r.oldMode=t[1]},g=(e,t)=>{f(),r.newMode=t[1]},_=(e,t)=>{f(),r.index=e.split(` `).slice(1),t[1]&&(r.oldMode=r.newMode=t[1].trim())},v=e=>{f(),r.from=o(e)},y=e=>{f(),r.to=o(e)},b=e=>+(e||1),x=(e,t)=>{r||d(e);let[n,i,o,u]=t.slice(1);s=+n,c=+o,a={content:e,changes:[],oldStart:+n,oldLines:b(i),newStart:+o,newLines:b(u)},l={oldLines:b(i),newLines:b(u)},r.chunks.push(a)},S=e=>{a&&(a.changes.push({type:`del`,del:!0,ln:s++,content:e}),r.deletions++,l.oldLines--)},C=e=>{a&&(a.changes.push({type:`add`,add:!0,ln:c++,content:e}),r.additions++,l.newLines--)},w=e=>{if(!a)return;let[t]=a.changes.slice(-1);a.changes.push({type:t.type,[t.type]:!0,ln1:t.ln1,ln2:t.ln2,ln:t.ln,content:e})},T=[[/^diff\s/,d],[/^new file mode (\d+)$/,p],[/^deleted file mode (\d+)$/,m],[/^old mode (\d+)$/,h],[/^new mode (\d+)$/,g],[/^index\s[\da-zA-Z]+\.\.[\da-zA-Z]+(\s(\d+))?$/,_],[/^---\s/,v],[/^\+\+\+\s/,y],[/^@@\s+-(\d+),?(\d+)?\s+\+(\d+),?(\d+)?\s@@/,x],[/^\$/,w]],ee=[[/^\$/,w],[/^-/,S],[/^\+/,C],[/^\s*/,u]],te=e=>{for(let[t,n]of ee){let r=e.match(t);if(r){n(e,r);break}}l.oldLines===0&&l.newLines===0&&(l=null)},E=e=>{for(let[t,n]of T){let r=e.match(t);if(r){n(e,r);break}}},ne=e=>{l?te(e):E(e)};for(let e of t)ne(e);return n};let n=/(a|i|w|c|o|1|2)\/.*(?=["']? ["']?(b|i|w|c|o|1|2)\/)|(b|i|w|c|o|1|2)\/.*$/g,r=/^(a|b|i|w|c|o|1|2)\//,i=e=>e?.match(n)?.map(e=>e.replace(r,``).replace(/("|')$/,``)),a=/^\\?['"]|\\?['"]$/g,o=e=>{let t=s(e,`-+`).trim();return t=l(t),t.replace(a,``).replace(r,``)},s=(e,t)=>{if(e=d(e),!t&&String.prototype.trimLeft)return e.trimLeft();let n=u(t);return e.replace(RegExp(`^${n}+`),``)},c=/\t.*|\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d(.\d+)?\s(\+|-)\d\d\d\d/,l=e=>{let t=c.exec(e);return t&&(e=e.substring(0,t.index).trim()),e},u=e=>e==null?`\\s`:e instanceof RegExp?e.source:`[${d(e).replace(/([.*+?^=!:${}()|[\]/\\])/g,`\\$1`)}]`,d=e=>`${e??``}`}))(),1);const Zs=s(`git`,[`rev-parse`,`--show-toplevel`],{encoding:`utf8`,stdio:`pipe`}).trimEnd();function Qs(...e){return s(`git`,e,{encoding:`utf8`,stdio:`pipe`,cwd:Zs}).trimEnd()}function $s(...e){return c(`git`,e,{encoding:`utf8`,cwd:Zs}).stdout?.trim()??``}function ec({path:e,staged:t,contextLines:n=3}){let r=`-U${n}`;return t?$s(`diff`,r,`--staged`,e):$s(`diff`,r,e)}function tc(e,t=3){if(e.stagedStatus===`PARTIAL`){let n=ec({path:e.path,staged:!0,contextLines:t}),r=ec({path:e.path,staged:!1,contextLines:t});return{staged:(0,Xs.default)(n),unstaged:(0,Xs.default)(r)}}let n=e.stagedStatus!==`NONE`;return{staged:(0,Xs.default)(ec({path:e.path,staged:n,contextLines:t})),unstaged:[]}}function nc(e){try{return u.readFileSync(p.join(Zs,e),`utf-8`)}catch{return``}}function rc(e){return Qs(`show`,e)}const ic={M:`MODIFIED`,A:`ADDED`,D:`DELETED`,R:`RENAMED`,"?":`UNTRACKED`};function ac(){try{let e=Qs(`status`,`--porcelain`,`--untracked-files=all`);return e?e.split(`
|
|
119
|
+
`).map(e=>{let[t,n]=e,r=t!==` `&&t!==`?`,i=r?n!==` `&&n!==`?`?`PARTIAL`:`FULL`:`NONE`,a=n===`?`?`?`:r?t:n,o=e.slice(3);return{path:o,displayPath:p.relative(process.cwd(),p.join(Zs,o)),status:ic[a??``]??`-`,stagedStatus:i}}):[]}catch{return[]}}function oc({children:e,watchValue:t,duration:n=1e3}){let[r,i]=(0,j.useState)(!1),a=(0,j.useRef)(null),o=(0,j.useRef)(!0);return(0,j.useEffect)(()=>{if(o.current){o.current=!1;return}return i(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(!1),n),()=>{a.current&&clearTimeout(a.current)}},[t,n]),r?e:null}function sc({files:e,horizontalOffset:t,width:n}){return e.flatMap((e,r)=>e.chunks.flatMap((e,i)=>{let a=[];return(i>0||r>0)&&a.push((0,G.jsx)(U,{backgroundColor:`gray`,justifyContent:`center`,children:(0,G.jsx)(W,{color:`white`,children:`···`})},`sep-${r}-${i}`)),e.changes.forEach((e,o)=>{let s=e.type===`add`?`#052e16`:e.type===`del`?`#450a0a`:void 0,c=e.content.slice(1+t,1+t+n-2)||` `;a.push((0,G.jsx)(U,{width:n,backgroundColor:s,children:(0,G.jsx)(W,{color:`white`,children:c})},`${r}-${i}-${o}`))}),a}))}function cc({file:e,focused:t,width:n}){let[r,i]=(0,j.useState)({mode:`diff`,staged:[],unstaged:[]}),[a,o]=(0,j.useState)(0),[s,c]=(0,j.useState)(3),l=(0,j.useRef)(null),u=(0,j.useRef)(void 0),d=(0,j.useRef)(null),{width:f,height:p}=Hs(d);(0,j.useEffect)(()=>{if(!e){i({mode:`diff`,staged:[],unstaged:[]}),l.current?.scrollToTop();return}if(e.status===`DELETED`||e.status===`UNTRACKED`){let t=``;try{t=e.status===`DELETED`?rc(e.stagedStatus===`NONE`?`:${e.path}`:`HEAD:${e.path}`):nc(e.path)}catch{t=``}i({mode:`content`,lines:t?t.split(`
|
|
120
|
+
`):[]})}else{let{staged:t,unstaged:n}=tc(e,s);i({mode:`diff`,staged:t,unstaged:n})}u.current!==e.path&&(l.current?.scrollToTop(),o(0),c(3)),u.current=e.path},[e,s]);let m=(0,j.useMemo)(()=>{if(r.mode===`content`)return Math.max(0,...r.lines.map(e=>e.length));let e=[...r.staged.flatMap(e=>e.chunks.flatMap(e=>e.changes)),...r.unstaged.flatMap(e=>e.chunks.flatMap(e=>e.changes))];return Math.max(0,...e.map(e=>e.content.length-1))},[r]);return Ls((e,t)=>{let n=Math.max(0,m-f);t.upArrow&&l.current?.scrollBy(-1),t.downArrow&&l.current?.scrollBy(1),t.leftArrow&&o(e=>Math.max(0,e-1)),t.rightArrow&&o(e=>Math.min(n,e+1)),e===`+`&&r.mode===`diff`&&c(e=>e+1),e===`-`&&r.mode===`diff`&&c(e=>Math.max(0,e-1))},{isActive:t}),(0,G.jsxs)(U,{flexDirection:`column`,width:n,ref:d,children:[(0,G.jsxs)(U,{marginX:1,gap:1,justifyContent:`space-between`,children:[(0,G.jsx)(W,{bold:!0,color:t?`whiteBright`:`gray`,wrap:`truncate-middle`,children:e?e.displayPath:`no file selected`}),r.mode===`diff`&&(0,G.jsx)(oc,{watchValue:s,children:(0,G.jsxs)(W,{color:`gray`,children:[s,` lines`]})})]}),(0,G.jsx)(Ys,{borderColor:t?`white`:`gray`,borderStyle:`round`,flexGrow:1,height:p,ref:l,children:r.mode===`content`?r.lines.map((e,t)=>(0,G.jsx)(W,{wrap:`hard`,color:`whiteBright`,children:e.slice(a,a+f-2)||` `},t)):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(sc,{files:r.staged,horizontalOffset:a,width:f}),r.staged.length>0&&r.unstaged.length>0&&(0,G.jsx)(U,{backgroundColor:`gray`,justifyContent:`center`,children:(0,G.jsx)(W,{color:`white`,children:`unstaged`})}),(0,G.jsx)(sc,{files:r.unstaged,horizontalOffset:a,width:f})]})})]})}var lc=(0,j.forwardRef)((e,t)=>{let{children:n,selectedIndex:r,scrollAlignment:i=`auto`,onScroll:a,onViewportSizeChange:o,onContentHeightChange:s,onItemHeightChange:c,...l}=e,u=(0,j.useRef)(null),[d,f]=(0,j.useState)(0),p=(0,j.useRef)(0);(0,j.useEffect)(()=>{p.current=d},[d]);let m=(0,j.useCallback)(e=>{e!==p.current&&(f(e),a?.(e))},[a]),h=(0,j.useRef)(r);h.current=r;let g=(0,j.useCallback)(()=>{let e=h.current;if(e===void 0||e<0)return null;let t=u.current?.getItemPosition(e);if(!t)return null;let n=u.current?.getViewportHeight()??0,r=u.current?.getContentHeight()??0,i=t.top+t.height-n,a=t.top;i>a&&([i,a]=[a,i]);let o=Math.max(0,r-n);return{min:Math.max(0,i),max:Math.min(o,a)}},[]),_=(0,j.useCallback)(e=>{let t=u.current?.getContentHeight()??0,n=u.current?.getViewportHeight()??0,r=Math.max(0,t-n),i=Math.max(0,Math.min(e,r)),a=g();return a&&(i=Math.max(a.min,Math.min(i,a.max))),i},[g]),v=(0,j.useCallback)((e,t,n,r)=>{let i=u.current?.getItemPosition(e);if(!i)return t;let a=r??u.current?.getViewportHeight()??0,o=u.current?.getContentHeight()??0,s=t;if(n===`top`)s=i.top;else if(n===`bottom`)s=i.top+i.height-a;else if(n===`center`)s=i.top+i.height/2-a/2;else{let e=i.top+i.height;i.top<=t&&e>=t+a?s=t:i.top<t?s=i.top:e>t+a&&(s=e-a)}let c=Math.max(0,o-a);return Math.max(0,Math.min(s,c))},[]),y=d;r!==void 0&&r>=0&&(y=v(r,d,i)),(0,j.useEffect)(()=>{y!==d&&m(y)},[y,d,m]);let b=(0,j.useCallback)((e,t=i,n)=>{m(v(e,d,t,n))},[v,d,i,m]),x=(0,j.useCallback)((e,t)=>{h.current!==void 0&&h.current>=0&&m(v(h.current,d,i,e.height)),o?.(e,t)},[o,b]),S=(0,j.useCallback)((e,t,n)=>{let r=h.current;r!==void 0&&r>=0&&(e<r?m(_(d+(t-n))):e===r&&m(v(e,d,i))),c?.(e,t,n)},[c,c,v,i,d,_,m]),C=(0,j.useCallback)((e,t)=>{h.current!==void 0&&h.current>=0&&(b(h.current),m(v(h.current,d,i))),s?.(e,t)},[s,b]);return(0,j.useImperativeHandle)(t,()=>({scrollTo:e=>{m(_(e))},scrollBy:e=>{let t=p.current;m(_(t+e))},scrollToTop:()=>{m(_(0))},scrollToBottom:()=>{let e=u.current?.getContentHeight()??0,t=u.current?.getViewportHeight()??0;m(_(Math.max(0,e-t)))},getScrollOffset:()=>p.current,getContentHeight:()=>u.current?.getContentHeight()??0,getViewportHeight:()=>u.current?.getViewportHeight()??0,getBottomOffset:()=>u.current?.getBottomOffset()??0,getItemHeight:e=>u.current?.getItemHeight(e)??0,getItemPosition:e=>u.current?.getItemPosition(e)??null,remeasure:()=>u.current?.remeasure(),remeasureItem:e=>u.current?.remeasureItem(e)}),[]),(0,G.jsx)(qs,{ref:u,scrollOffset:y,onViewportSizeChange:x,onContentHeightChange:C,onItemHeightChange:S,...l,children:n})});function uc(){try{return Qs(`branch`,`--show-current`)}catch{return null}}function dc(e){Qs(`add`,e)}function fc(e){try{Qs(`restore`,`--staged`,e)}catch{Qs(`rm`,`--cached`,`--force`,e)}}function pc(e){return e.slice().sort((e,t)=>{let n=e.path.split(`/`).slice(0,-1).join(`/`),r=t.path.split(`/`).slice(0,-1).join(`/`);return n===r?e.path.localeCompare(t.path):n.localeCompare(r)})}function mc(){let[e,t]=(0,j.useState)(()=>pc(ac())),[n,r]=(0,j.useState)(()=>uc());function i(){t(pc(ac())),r(uc())}(0,j.useEffect)(()=>{let e=setInterval(i,2e3);return()=>clearInterval(e)},[]);function a(e){dc(e),i()}function o(e){fc(e),i()}return{files:e,branch:n,stage:a,unstage:o}}const hc={NONE:`white`,PARTIAL:`yellow`,FULL:`green`},gc={MODIFIED:{symbol:`ᵐ`,color:`yellow`},ADDED:{symbol:`ᵃ`,color:`green`},DELETED:{symbol:`ᵈ`,color:`red`},RENAMED:{symbol:`ʳ`,color:`cyan`},UNTRACKED:{symbol:`ᵘ`,color:`gray`},"-":{symbol:`⁻`,color:`gray`}};function _c({width:e,focused:t,onSelectedFile:n}){let{files:r,branch:i,stage:a,unstage:o}=mc(),[s,c]=(0,j.useState)(0),l=(0,j.useMemo)(()=>process.cwd().split(`/`).pop(),[]);return(0,j.useEffect)(()=>{n(r[s])},[s,r,n]),Ls((e,t)=>{if(t.upArrow&&c(e=>Math.max(0,e-1)),t.downArrow&&c(e=>Math.min(r.length-1,e+1)),e===` `){let e=r[s];if(!e)return;e.stagedStatus===`FULL`?o(e.path):a(e.path)}},{isActive:t}),(0,G.jsxs)(U,{flexDirection:`column`,width:e,children:[(0,G.jsxs)(U,{marginX:1,overflow:`hidden`,gap:1,children:[(0,G.jsx)(U,{overflow:`hidden`,minWidth:3,children:(0,G.jsx)(W,{bold:!0,color:t?`whiteBright`:`gray`,wrap:`truncate-middle`,children:l})}),(0,G.jsx)(U,{flexShrink:0,children:(0,G.jsx)(W,{color:`gray`,children:`⌥`})}),(0,G.jsx)(U,{overflow:`hidden`,minWidth:3,children:(0,G.jsx)(W,{color:t?`whiteBright`:`gray`,wrap:`truncate-middle`,children:i})})]}),(0,G.jsx)(U,{borderColor:t?`white`:`gray`,borderStyle:`round`,flexGrow:1,children:(0,G.jsx)(lc,{height:`100%`,selectedIndex:s,width:`100%`,children:r.map((e,t)=>{let n=t===s,r=p.basename(e.displayPath),i=p.dirname(e.displayPath)===`.`?``:p.dirname(e.displayPath);return(0,G.jsxs)(U,{backgroundColor:n?`gray`:void 0,paddingX:1,height:1,children:[(0,G.jsxs)(W,{color:hc[e.stagedStatus],children:[e.stagedStatus===`NONE`?`○`:`●`,` `]}),(0,G.jsx)(U,{flexGrow:1,overflow:`hidden`,children:(0,G.jsxs)(W,{wrap:`hard`,children:[(0,G.jsx)(W,{color:`whiteBright`,children:r}),i?(0,G.jsxs)(W,{color:n?`white`:`gray`,children:[` `,i]}):null]})}),(0,G.jsx)(U,{flexShrink:0,marginLeft:1,children:(0,G.jsx)(W,{color:gc[e.status].color,children:gc[e.status].symbol})})]},e.path)})})})]})}const vc={files:[{key:`↑↓`,label:`navigate`},{key:`space`,label:`stage/unstage`},{key:`tab`,label:`switch pane`},{key:`q`,label:`quit`}],diff:[{key:`↑↓`,label:`scroll`},{key:`←→`,label:`pan`},{key:`+/-`,label:`context`},{key:`tab`,label:`switch pane`},{key:`q`,label:`quit`}]};function yc({focusedPane:e}){return(0,G.jsx)(U,{gap:2,paddingX:1,height:1,overflow:`hidden`,children:vc[e].map(({key:e,label:t})=>(0,G.jsxs)(U,{gap:1,flexShrink:0,children:[(0,G.jsx)(W,{bold:!0,color:`white`,children:e}),(0,G.jsx)(W,{color:`gray`,children:t})]},e))})}function bc(){let{exit:e}=Rs(),{stdout:t}=zs(),[n,r]=(0,j.useState)(`files`),[i,a]=(0,j.useState)(void 0);return Ls((t,n)=>{(t===`q`||n.ctrl&&t===`c`)&&e(),n.tab&&r(e=>e===`files`?`diff`:`files`)}),(0,G.jsxs)(U,{flexDirection:`column`,width:t.columns,height:t.rows,children:[(0,G.jsxs)(U,{flexDirection:`row`,flexGrow:1,children:[(0,G.jsx)(_c,{width:`30%`,focused:n===`files`,onSelectedFile:a}),(0,G.jsx)(cc,{file:i,focused:n===`diff`,width:`70%`})]}),(0,G.jsx)(yc,{focusedPane:n})]})}ms((0,G.jsx)(bc,{}),{alternateScreen:!0});export{};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fckgit",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.6",
|
|
4
4
|
"description": "A fullscreen TUI Git client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type-check": "tsc --noEmit"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@types/node": "
|
|
35
|
+
"@types/node": "26.0.0",
|
|
36
36
|
"@types/react": "19.2.17",
|
|
37
37
|
"ink": "7.1.0",
|
|
38
38
|
"ink-scroll-list": "0.4.1",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"oxlint": "1.70.0",
|
|
42
42
|
"parse-diff": "0.12.0",
|
|
43
43
|
"react": "19.2.7",
|
|
44
|
-
"rolldown": "1.1.
|
|
44
|
+
"rolldown": "1.1.2",
|
|
45
45
|
"tsx": "4.22.4",
|
|
46
46
|
"typescript": "6.0.3"
|
|
47
47
|
}
|