UNPKG

anl

Version:
2 lines (1 loc) 1.77 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../core/dist/esm/lib/create-prompt.mjs.js"),t=require("../../../core/dist/esm/lib/make-theme.mjs.js"),s=require("../../../core/dist/esm/lib/use-state.mjs.js"),i=require("../../../core/dist/esm/lib/use-prefix.mjs.js"),r=require("../../../core/dist/esm/lib/use-keypress.mjs.js"),a=require("../../../core/dist/esm/lib/key.mjs.js");function n(e,{min:t,max:s,step:i}){return null!=e&&!Number.isNaN(e)&&(e<t||e>s?`Value must be between ${t} and ${s}`:!("any"!==i&&!function(e,t,s){const i=e*Math.pow(10,6),r=t*Math.pow(10,6),a=s*Math.pow(10,6);return(i-(Number.isFinite(s)?a:0))%r==0}(e,i,t))||`Value must be a multiple of ${i}${Number.isFinite(t)?` starting from ${t}`:""}`)}var u=e.createPrompt(((e,u)=>{const{validate:m=()=>!0,min:o=-1/0,max:l=1/0,step:d=1,required:p=!1}=e,c=t.makeTheme(e.theme),[b,f]=s.useState("pending"),[j,v]=s.useState(""),y=!0===n(e.default,{min:o,max:l,step:d})?e.default?.toString():void 0,[g="",w]=s.useState(y),[x,h]=s.useState(),q="loading"===b,N=i.usePrefix({isLoading:q,theme:c});r.useKeypress((async(e,t)=>{if("pending"===b)if(a.isEnterKey(e)){const e=j||g,s=""===e?void 0:Number(e);f("loading");let i=!0;(p||null!=s)&&(i=n(s,{min:o,max:l,step:d})),!0===i&&(i=await m(s)),!0===i?(v(String(s??"")),f("done"),u(s)):(t.write(j),h(i||"You must provide a valid numeric value"),f("pending"))}else a.isBackspaceKey(e)&&!j?w(void 0):"tab"!==e.name||j?(v(t.line),h(void 0)):(w(void 0),t.clearLine(0),t.write(g),v(g))}));const S=c.style.message(e.message);let k,$=j;"done"===b&&($=c.style.answer(j)),g&&"done"!==b&&!j&&(k=c.style.defaultAnswer(g));let M="";return x&&(M=c.style.error(x)),[[N,S,k,$].filter((e=>void 0!==e)).join(" "),M]}));exports.default=u;