anl
Version:
FE command line tool
2 lines (1 loc) • 1.45 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("node:async_hooks"),s=require("external-editor"),t=require("../../../core/dist/esm/lib/create-prompt.mjs.js"),r=require("../../../core/dist/esm/lib/make-theme.mjs.js"),i=require("../../../core/dist/esm/lib/use-state.mjs.js"),o=require("../../../core/dist/esm/lib/use-prefix.mjs.js"),n=require("../../../core/dist/esm/lib/use-effect.mjs.js"),u=require("../../../core/dist/esm/lib/use-keypress.mjs.js"),a=require("../../../core/dist/esm/lib/key.mjs.js"),l=t.createPrompt(((t,l)=>{const{waitForUseInput:d=!0,postfix:c=".txt",validate:m=()=>!0}=t,p=r.makeTheme(t.theme),[f,j]=i.useState("pending"),[y,g]=i.useState(t.default||""),[b,q]=i.useState(),h="loading"===f,v=o.usePrefix({isLoading:h,theme:p});function x(t){t.pause();const r=e.AsyncResource.bind((async(e,s)=>{if(t.resume(),e)q(e.toString());else{j("loading");const e=await m(s);!0===e?(q(void 0),j("done"),l(s)):(g(s),q(e||"You must provide a valid value"),j("pending"))}}));s.editAsync(y,((e,s)=>{r(e,s)}),{postfix:c})}n.useEffect((e=>{d||x(e)}),[]),u.useKeypress(((e,s)=>{"pending"===f&&a.isEnterKey(e)&&x(s)}));const k=p.style.message(t.message);let P="";if("loading"===f)P=p.style.help("Received");else if("pending"===f){const e=p.style.key("enter");P=p.style.help(`Press ${e} to launch your preferred editor.`)}let S="";return b&&(S=p.style.error(b)),[[v,k,P].filter(Boolean).join(" "),S]}));exports.default=l;