UNPKG

hyper-better-status-line

Version:

Status Line Plugin for Hyper forked with improvements.

160 lines (146 loc) 14 kB
(()=>{"use strict";var e={n:M=>{var t=M&&M.__esModule?()=>M.default:()=>M;return e.d(t,{a:t}),t},d:(M,t)=>{for(var i in t)e.o(t,i)&&!e.o(M,i)&&Object.defineProperty(M,i,{enumerable:!0,get:t[i]})},o:(e,M)=>Object.prototype.hasOwnProperty.call(e,M),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},M={};e.r(M),e.d(M,{decorateConfig:()=>r,decorateHyper:()=>f,mapHyperState:()=>k,middleware:()=>C,reduceUI:()=>o});const t=require("color");var i=e.n(t);function o(e,{type:M,config:t}){switch(M){case"CONFIG_LOAD":case"CONFIG_RELOAD":const M=i()(t.foregroundColor||"#fff"),o=i()(t.backgroundColor||"#000"),r={foreground:M.string(),background:o.lighten(.3).string()},n=Object.assign({cyan:"#78D1E1",pink:"#FF79C6",lightYellow:"#ffff00",lightBlue:"#0066ff"},t.colors),D=process.platform,c=Object.assign({isTransparent:!1,background:r.background,foreground:r.foreground,cwdHoverColor:"none",branchHoverColor:"none",fontFamily:t.fontFamily,dirtyColor:n.lightYellow,aheadColor:n.lightBlue,platform:D},t.hyperStatusLine);return e.set("hyperStatusLine",c);default:return e}}function r(e){return Object.assign({},e,{css:`\n ${e.css||""}\n .terms_terms {\n margin-bottom: 26px;\n }\n `})}const n=require("react");var D=e.n(n);const c=require("electron"),a=require("tildify");var s=e.n(a);const N=require("child_process"),g=(0,require("util").promisify)(N.exec),u={branch:"",remote:"",dirty:0,ahead:0};async function y(e){return(await g("git symbolic-ref --short HEAD || git rev-parse --short HEAD",{cwd:e})).stdout.trim()}async function l(e){return(await g("git ls-remote --get-url",{cwd:e})).stdout.trim().replace(/^git@(.*?):/,"https://$1/").replace(/[A-z0-9\-]+@/,"").replace(/\.git$/,"")}async function w(e){const M=await g("git status --porcelain --ignore-submodules -uno",{cwd:e});return M.stdout?parseInt(M.stdout.trim().split("\n").length,10):0}async function I(e){try{const M=await g("git rev-list --left-only --count HEAD...@'{u}' 2>/dev/null",{cwd:e});return parseInt(M.stdout,10)}catch{return parseInt(0,10)}}const T=require("styled-components");var j=e.n(T);const d=j().footer` left: 0; right: 0; bottom: 0; height: 30px; z-index: 100; display: flex; font-size: 12px; cursor: default; position: absolute; -webkit-user-select: none; border-radius: ${({isLinux:e})=>e?"0":"0 0 6px 6px"}; justify-content: space-between; font-family: ${({fontFamily:e})=>e}; background-color: ${({backgroundColor:e,isTransparent:M})=>M?"none":e}; `,x=j().div` display: flex; margin: 0 14px; cursor: pointer; overflow: hidden; white-space: nowrap; color: ${({foregroundColor:e})=>e}; > div { display: flex; > div { opacity: 0.5; margin-left: 9px; line-height: 30px; padding-left: 21px; position: relative; transition: color 0.25s ease-in-out, opacity 0.25s ease-in-out; :first-of-type { margin-left: 0; } :hover { opacity: 1; color: ${({hoverColor:e})=>e}; } ::before { top: 0; left: 0; width: 14px; content: ''; height: 100%; position: absolute; -webkit-mask-size: 14px 12px; -webkit-mask-repeat: no-repeat; -webkit-mask-position: 0 center; transition: background-color 0.25s ease-in-out; background-color: ${({foregroundColor:e})=>e}; -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDE0IDEyIj48cGF0aCBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMywyIEw3LDIgTDcsMSBDNywwLjM0IDYuNjksMCA2LDAgTDEsMCBDMC40NSwwIDAsMC40NSAwLDEgTDAsMTEgQzAsMTEuNTUgMC40NSwxMiAxLDEyIEwxMywxMiBDMTMuNTUsMTIgMTQsMTEuNTUgMTQsMTEgTDE0LDMgQzE0LDIuNDUgMTMuNTUsMiAxMywyIEwxMywyIFogTTYsMiBMMSwyIEwxLDEgTDYsMSBMNiwyIEw2LDIgWiIvPjwvc3ZnPg=='); } :hover:before { background-color: ${({hoverColor:e})=>e}; } } } `,E=j().div` display: flex; margin: 0 14px; align-items: center; white-space: nowrap; color: ${({foregroundColor:e})=>e}; `,z=j().div` opacity: 0.5; margin-left: 9px; line-height: 30px; position: relative; padding-left: 16px; transition: color 0.25s ease-in-out, opacity 0.25s ease-in-out; cursor: ${({isClickable:e})=>e?"pointer":"default"}; :hover { opacity: 1; color: ${({hoverColor:e})=>e}; } :first-of-type { margin-left: 0; } :before { top: 0; left: 0; width: 14px; content: ''; height: 100%; position: absolute; -webkit-mask-size: 9px 12px; -webkit-mask-repeat: no-repeat; -webkit-mask-position: 0 center; transition: background-color 0.25s ease-in-out; background-color: ${({foregroundColor:e})=>e}; -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5IiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgOSAxMiI+PHBhdGggZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOSwzLjQyODU3NzQ2IEM5LDIuNDc3MTQ4ODggOC4xOTksMS43MTQyOTE3NCA3LjIsMS43MTQyOTE3NCBDNi4zODY5NDE5NCwxLjcxMjI0NTc4IDUuNjc0MTI3NDksMi4yMzEzMDI2NCA1LjQ2MzA1NjAyLDIuOTc5MDk4NzEgQzUuMjUxOTg0NTQsMy43MjY4OTQ3OCA1LjU5NTQ1MzE3LDQuNTE2Mzc3NDEgNi4zLDQuOTAyODYzMTcgTDYuMyw1LjE2MDAwNjAzIEM2LjI4Miw1LjYwNTcyMDMxIDYuMDkzLDYuMDAwMDA2MDMgNS43MzMsNi4zNDI4NjMxNyBDNS4zNzMsNi42ODU3MjAzMSA0Ljk1OSw2Ljg2NTcyMDMxIDQuNDkxLDYuODgyODYzMTcgQzMuNzQ0LDYuOTAwMDA2MDMgMy4xNTksNy4wMjAwMDYwMyAyLjY5MSw3LjI2ODU3NzQ2IEwyLjY5MSwzLjE4ODU3NzQ2IEMzLjM5NTU0NjgzLDIuODAyMDkxNyAzLjczOTAxNTQ2LDIuMDEyNjA5MDcgMy41Mjc5NDM5OCwxLjI2NDgxMjk5IEMzLjMxNjg3MjUxLDAuNTE3MDE2OTIzIDIuNjA0MDU4MDYsLTAuMDAyMDM5OTM0MTUgMS43OTEsNi4wMjY4NzM4NWUtMDYgQzAuNzkyLDYuMDI2ODczODVlLTA2IDkuOTkyMDA3MjJlLTE3LDAuNzYyODYzMTcgOS45OTIwMDcyMmUtMTcsMS43MTQyOTE3NCBDMC4wMDM4NTgyMzAyNiwyLjMyMzA1MzU2IDAuMzQ2NDE5ODM1LDIuODg0MjAyMDkgMC45LDMuMTg4NTc3NDYgTDAuOSw4LjgxMTQzNDYgQzAuMzY5LDkuMTExNDM0NiAwLDkuNjYwMDA2MDMgMCwxMC4yODU3MjAzIEMwLDExLjIzNzE0ODkgMC44MDEsMTIuMDAwMDA2IDEuOCwxMi4wMDAwMDYgQzIuNzk5LDEyLjAwMDAwNiAzLjYsMTEuMjM3MTQ4OSAzLjYsMTAuMjg1NzIwMyBDMy42LDkuODMxNDM0NiAzLjQyLDkuNDI4NTc3NDYgMy4xMjMsOS4xMjAwMDYwMyBDMy4yMDQsOS4wNjg1Nzc0NiAzLjU1NSw4Ljc2ODU3NzQ2IDMuNjU0LDguNzE3MTQ4ODggQzMuODc5LDguNjIyODYzMTcgNC4xNTgsOC41NzE0MzQ2IDQuNSw4LjU3MTQzNDYgQzUuNDQ1LDguNTI4NTc3NDYgNi4yNTUsOC4xODU3MjAzMSA2Ljk3NSw3LjUwMDAwNjAzIEM3LjY5NSw2LjgxNDI5MTc0IDguMDU1LDUuODAyODYzMTcgOC4xLDQuOTExNDM0NiBMOC4wODIsNC45MTE0MzQ2IEM4LjYzMSw0LjYwMjg2MzE3IDksNC4wNTQyOTE3NCA5LDMuNDI4NTc3NDYgTDksMy40Mjg1Nzc0NiBaIE0xLjgsMC42ODU3MjAzMTMgQzIuMzk0LDAuNjg1NzIwMzEzIDIuODgsMS4xNTcxNDg4OCAyLjg4LDEuNzE0MjkxNzQgQzIuODgsMi4yNzE0MzQ2IDIuMzg1LDIuNzQyODYzMTcgMS44LDIuNzQyODYzMTcgQzEuMjE1LDIuNzQyODYzMTcgMC43MiwyLjI3MTQzNDYgMC43MiwxLjcxNDI5MTc0IEMwLjcyLDEuMTU3MTQ4ODggMS4yMTUsMC42ODU3MjAzMTMgMS44LDAuNjg1NzIwMzEzIEwxLjgsMC42ODU3MjAzMTMgWiBNMS44LDExLjMyMjg2MzIgQzEuMjA2LDExLjMyMjg2MzIgMC43MiwxMC44NTE0MzQ2IDAuNzIsMTAuMjk0MjkxNyBDMC43Miw5LjczNzE0ODg4IDEuMjE1LDkuMjY1NzIwMzEgMS44LDkuMjY1NzIwMzEgQzIuMzg1LDkuMjY1NzIwMzEgMi44OCw5LjczNzE0ODg4IDIuODgsMTAuMjk0MjkxNyBDMi44OCwxMC44NTE0MzQ2IDIuMzg1LDExLjMyMjg2MzIgMS44LDExLjMyMjg2MzIgTDEuOCwxMS4zMjI4NjMyIFogTTcuMiw0LjQ2NTcyMDMxIEM2LjYwNiw0LjQ2NTcyMDMxIDYuMTIsMy45OTQyOTE3NCA2LjEyLDMuNDM3MTQ4ODggQzYuMTIsMi44ODAwMDYwMyA2LjYxNSwyLjQwODU3NzQ2IDcuMiwyLjQwODU3NzQ2IEM3Ljc4NSwyLjQwODU3NzQ2IDguMjgsMi44ODAwMDYwMyA4LjI4LDMuNDM3MTQ4ODggQzguMjgsMy45OTQyOTE3NCA3Ljc4NSw0LjQ2NTcyMDMxIDcuMiw0LjQ2NTcyMDMxIEw3LjIsNC40NjU3MjAzMSBaIi8+PC9zdmc+'); } :hover:before { background-color: ${({hoverColor:e})=>e}; } `,L=j().div` font-weight: 500; margin-left: 9px; line-height: 30px; font-size: 10.5px; position: relative; padding-left: 16px; color: ${({color:e})=>e}; :first-of-type { margin-left: 0; } ::before { top: 0; left: 0; width: 14px; content: ''; height: 100%; position: absolute; -webkit-mask-size: 12px 12px; -webkit-mask-repeat: no-repeat; -webkit-mask-position: 0 center; background-color: ${({color:e})=>e}; transition: background-color 0.25s ease-in-out; -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS4xNDI4NTcxLDAgTDAuODU3MTQyODU3LDAgQzAuMzg1NzE0Mjg2LDAgMCwwLjM4NTcxNDI4NiAwLDAuODU3MTQyODU3IEwwLDExLjE0Mjg1NzEgQzAsMTEuNjE0Mjg1NyAwLjM4NTcxNDI4NiwxMiAwLjg1NzE0Mjg1NywxMiBMMTEuMTQyODU3MSwxMiBDMTEuNjE0Mjg1NywxMiAxMiwxMS42MTQyODU3IDEyLDExLjE0Mjg1NzEgTDEyLDAuODU3MTQyODU3IEMxMiwwLjM4NTcxNDI4NiAxMS42MTQyODU3LDAgMTEuMTQyODU3MSwwIEwxMS4xNDI4NTcxLDAgWiBNMTEuMTQyODU3MSwxMS4xNDI4NTcxIEwwLjg1NzE0Mjg1NywxMS4xNDI4NTcxIEwwLjg1NzE0Mjg1NywwLjg1NzE0Mjg1NyBMMTEuMTQyODU3MSwwLjg1NzE0Mjg1NyBMMTEuMTQyODU3MSwxMS4xNDI4NTcxIEwxMS4xNDI4NTcxLDExLjE0Mjg1NzEgWiBNMy40Mjg1NzE0Myw2IEMzLjQyODU3MTQzLDQuNTc3MTQyODYgNC41NzcxNDI4NiwzLjQyODU3MTQzIDYsMy40Mjg1NzE0MyBDNy40MjI4NTcxNCwzLjQyODU3MTQzIDguNTcxNDI4NTcsNC41NzcxNDI4NiA4LjU3MTQyODU3LDYgQzguNTcxNDI4NTcsNy40MjI4NTcxNCA3LjQyMjg1NzE0LDguNTcxNDI4NTcgNiw4LjU3MTQyODU3IEM0LjU3NzE0Mjg2LDguNTcxNDI4NTcgMy40Mjg1NzE0Myw3LjQyMjg1NzE0IDMuNDI4NTcxNDMsNiBMMy40Mjg1NzE0Myw2IFoiLz48L3N2Zz4='); } `,p=j().div` font-weight: 500; margin-left: 9px; line-height: 30px; font-size: 10.5px; padding-left: 16px; position: relative; color: ${({color:e})=>e}; :first-of-type { margin-left: 0; } ::before { top: 0; left: 0; width: 14px; content: ''; height: 100%; position: absolute; -webkit-mask-size: 12px 12px; -webkit-mask-repeat: no-repeat; -webkit-mask-position: 0 center; background-color: ${({color:e})=>e}; transition: background-color 0.25s ease-in-out; -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjE0Mjg1NzE0LDYuODU3MTQyODYgTDIuNTcxNDI4NTcsNi44NTcxNDI4NiBMMi41NzE0Mjg1Nyw1LjE0Mjg1NzE0IEw1LjE0Mjg1NzE0LDUuMTQyODU3MTQgTDUuMTQyODU3MTQsMi41NzE0Mjg1NyBMOS40Mjg1NzE0Myw2IEw1LjE0Mjg1NzE0LDkuNDI4NTcxNDMgTDUuMTQyODU3MTQsNi44NTcxNDI4NiBMNS4xNDI4NTcxNCw2Ljg1NzE0Mjg2IFogTTEyLDAuODU3MTQyODU3IEwxMiwxMS4xNDI4NTcxIEMxMiwxMS42MTQyODU3IDExLjYxNDI4NTcsMTIgMTEuMTQyODU3MSwxMiBMMC44NTcxNDI4NTcsMTIgQzAuMzg1NzE0Mjg2LDEyIDAsMTEuNjE0Mjg1NyAwLDExLjE0Mjg1NzEgTDAsMC44NTcxNDI4NTcgQzAsMC4zODU3MTQyODYgMC4zODU3MTQyODYsMCAwLjg1NzE0Mjg1NywwIEwxMS4xNDI4NTcxLDAgQzExLjYxNDI4NTcsMCAxMiwwLjM4NTcxNDI4NiAxMiwwLjg1NzE0Mjg1NyBMMTIsMC44NTcxNDI4NTcgWiBNMTEuMTQyODU3MSwwLjg1NzE0Mjg1NyBMMC44NTcxNDI4NTcsMC44NTcxNDI4NTcgTDAuODU3MTQyODU3LDExLjE0Mjg1NzEgTDExLjE0Mjg1NzEsMTEuMTQyODU3MSBMMTEuMTQyODU3MSwwLjg1NzE0Mjg1NyBMMTEuMTQyODU3MSwwLjg1NzE0Mjg1NyBaIiB0cmFuc2Zvcm09Im1hdHJpeCgwIC0xIC0xIDAgMTIgMTIpIi8+PC9zdmc+'); } `;let O,A=()=>{};async function m({pid:e,action:M}){const t=await async function(e,M){if("win32"===process.platform&&M&&M.data){let e=/([a-zA-Z]:[^\:\[\]\?\"\<\>\|]+)/im.exec(M.data);if(e)return e[0]}return(await g(`lsof -p ${e} | awk '$4=="cwd"' | tr -s ' ' | cut -d ' ' -f9-`,{env:{...process.env,LANG:"en_US.UTF-8"}})).stdout.trim()}(e,M),i=await async function(e){if(!await async function(e){try{return await g("git rev-parse --is-inside-work-tree",{cwd:e}),!0}catch{return!1}}(e))return u;const{branch:M,remote:t,dirty:i,ahead:o}=await async function(e){try{const[M,t,i,o]=await Promise.all([y(e),l(e),w(e),I(e)]);return{branch:M,remote:t,dirty:i,ahead:o}}catch(e){console.error(e)}}(e);return{branch:M,remote:t,dirty:i,ahead:o}}(t);A({cwd:t,git:i})}const C=e=>M=>t=>{const i=e.getState().sessions.sessions;switch(t.type){case"SESSION_SET_XTERM_TITLE":O=i[t.uid].pid;break;case"SESSION_ADD":O=t.pid,m({pid:O});break;case"SESSION_ADD_DATA":{const{data:e}=t;e.indexOf("\n")>0&&m({pid:O,action:t});break}case"SESSION_SET_ACTIVE":O=i[t.uid].pid,m({pid:O})}M(t)};class h extends n.Component{constructor(e){super(e),this.state={cwd:"",branch:u.branch,remote:u.remote,dirty:u.dirty,ahead:u.ahead},this.handleCwdClick=this.handleCwdClick.bind(this),this.handleBranchClick=this.handleBranchClick.bind(this)}handleCwdClick(e){c.shell.openExternal("file://"+this.state.cwd)}handleBranchClick(e){c.shell.openExternal(this.state.remote)}componentDidMount(){A=({cwd:e,git:M})=>{this.setState({cwd:e,branch:M.branch,remote:M.remote,dirty:M.dirty,ahead:M.ahead})}}componentWillUnmount(){A=void 0}render(){const{statusLineConfig:e}=this.props,{dirty:M,ahead:t,cwd:i,remote:o,branch:r}=this.state,n=`${M} dirty ${M>1?"files":"file"}`,c=`${t} ${t>1?"commits":"commit"} ahead`;return D().createElement(d,{fontFamily:e.fontFamily,isTransparent:e.isTransparent,backgroundColor:e.background,isLinux:"linux"===e.platform},D().createElement(x,{hoverColor:e.cwdHoverColor,foregroundColor:e.foreground},D().createElement("div",null,D().createElement("div",{title:i,hidden:!i,onClick:this.handleCwdClick},i?s()(String(i)):""))),D().createElement(E,{foregroundColor:e.foreground},D().createElement(z,{title:o,hidden:!r,isClickable:!!o,onClick:this.handleBranchClick,hoverColor:e.branchHoverColor,foregroundColor:e.foreground},r),D().createElement(L,{hidden:!M,title:n,color:e.dirtyColor},M),D().createElement(p,{hidden:!t,title:c,color:e.aheadColor},t)))}}function Q(){return(Q=Object.assign||function(e){for(var M=1;M<arguments.length;M++){var t=arguments[M];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e}).apply(this,arguments)}function f(e,{React:M}){return class extends M.PureComponent{render(){const{customChildren:t,hyperStatusLine:i}=this.props,o=t?t instanceof Array?t:[t]:[];return M.createElement(e,Q({},this.props,{customInnerChildren:o.concat(M.createElement(h,{statusLineConfig:i}))}))}}}function k({ui:{hyperStatusLine:e}},M){return Object.assign({},M,{hyperStatusLine:Object.assign({},e)})}var S=exports;for(var b in M)S[b]=M[b];M.__esModule&&Object.defineProperty(S,"__esModule",{value:!0})})();