@aminnairi/i3status
Version:
Library to create your own i3 status bar in Node.js using the Flux architecture
2 lines (1 loc) • 729 B
JavaScript
const e=(t,n)=>{t.question("").then((r=>{n(r),e(t,n)}))},t=({createInterface:t,input:n,output:r})=>({initialBlocks:s,onDispatch:o,onEvent:a})=>{const i=(e=>{const t={value:e,observers:[]};return{observe:e=>{t.observers.push(e)},next:e=>{t.value=e(t.value),t.observers.forEach((e=>{e(t.value)}))},emit:e=>{t.value=e,t.observers.forEach((t=>{t(e)}))}}})([]),c=t({input:n});r.write(JSON.stringify({version:1,click_events:!0})),r.write("["),i.observe((e=>{r.write(JSON.stringify(e)+",")}));const v=({name:e,payload:t})=>{i.next((n=>o({blocks:n,action:{name:e,payload:t}})))};return e(c,(e=>{(async e=>JSON.parse(e.slice(1)))(e.trim()).then((e=>{a({event:e,dispatch:v})})).catch((()=>{}))})),i.emit(s),v};export{t as createRenderer};