anl
Version:
FE command line tool
2 lines (1 loc) • 3.74 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("yoctocolors-cjs"),s=require("../../../figures/dist/esm/index.mjs.js"),t=require("ansi-escapes"),r=require("../../../core/dist/esm/lib/create-prompt.mjs.js"),i=require("../../../core/dist/esm/lib/make-theme.mjs.js"),o=require("../../../core/dist/esm/lib/use-prefix.mjs.js"),a=require("../../../core/dist/esm/lib/use-ref.mjs.js"),c=require("../../../core/dist/esm/lib/use-state.mjs.js"),l=require("../../../core/dist/esm/lib/use-memo.mjs.js"),n=require("../../../core/dist/esm/lib/errors.mjs.js"),u=require("../../../core/dist/esm/lib/use-keypress.mjs.js"),d=require("../../../core/dist/esm/lib/key.mjs.js"),m=require("../../../core/dist/esm/lib/pagination/use-pagination.mjs.js"),p=require("../../../core/dist/esm/lib/Separator.mjs.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var h=f(e),y=f(t);const j={icon:{checked:h.default.green(s.default.circleFilled),unchecked:s.default.circle,cursor:s.default.pointer},style:{disabledChoice:e=>h.default.dim(`- ${e}`),renderSelectedChoices:e=>e.map((e=>e.short??e.name??e.value)).join(", ")},helpMode:"auto"};function b(e){return!p.Separator.isSeparator(e)&&!e.disabled}function $(e){return b(e)&&Boolean(e.checked)}function g(e){return b(e)?{...e,checked:!e.checked}:e}var k=r.createPrompt(((e,s)=>{const{instructions:t,pageSize:r=7,loop:f=!0,choices:h,required:k,validate:S=()=>!0}=e,v=i.makeTheme(j,e.theme),q=o.usePrefix({theme:v}),w=a.useRef(!0),[x,K]=c.useState("pending"),[M,P]=c.useState(h.map((e=>({...e})))),C=l.useMemo((()=>{const e=M.findIndex(b),s=M.findLastIndex(b);if(e<0)throw new n.ValidationError("[checkbox prompt] No selectable choices. All choices are disabled.");return{first:e,last:s}}),[M]),[U,A]=c.useState(C.first),[I,N]=c.useState(!0),[z,D]=c.useState();u.useKeypress((async e=>{if(d.isEnterKey(e)){const e=M.filter($),t=await S([...e]);k&&!M.some($)?D("At least one choice must be selected"):!0===t?(K("done"),s(e.map((e=>e.value)))):D(t||"You must select a valid value")}else if(d.isUpKey(e)||d.isDownKey(e)){if(f||d.isUpKey(e)&&U!==C.first||d.isDownKey(e)&&U!==C.last){const s=d.isUpKey(e)?-1:1;let t=U;do{t=(t+s+M.length)%M.length}while(!b(M[t]));A(t)}}else if(d.isSpaceKey(e))D(void 0),N(!1),P(M.map(((e,s)=>s===U?g(e):e)));else if("a"===e.name){const e=M.some((e=>b(e)&&!e.checked));P(M.map((t=e,function(e){return b(e)?{...e,checked:t}:e})))}else if("i"===e.name)P(M.map(g));else if(d.isNumberKey(e)){const s=Number(e.name)-1,t=M[s];null!=t&&b(t)&&(A(s),P(M.map(((e,t)=>t===s?g(e):e))))}var t}));const E=v.style.message(e.message),_=m.usePagination({items:M,active:U,renderItem({item:e,isActive:s}){if(p.Separator.isSeparator(e))return` ${e.separator}`;const t=String(e.name||e.value);if(e.disabled){const s="string"==typeof e.disabled?e.disabled:"(disabled)";return v.style.disabledChoice(`${t} ${s}`)}const r=e.checked?v.icon.checked:v.icon.unchecked;return(s?v.style.highlight:e=>e)(`${s?v.icon.cursor:" "}${r} ${t}`)},pageSize:r,loop:f});if("done"===x){const e=M.filter($);return`${q} ${E} ${v.style.answer(v.style.renderSelectedChoices(e,M))}`}let B="",F="";if("always"===v.helpMode||"auto"===v.helpMode&&I&&(void 0===t||t)){if("string"==typeof t)B=t;else{B=` (Press ${[`${v.style.key("space")} to select`,`${v.style.key("a")} to toggle all`,`${v.style.key("i")} to invert selection`,`and ${v.style.key("enter")} to proceed`].join(", ")})`}M.length>r&&("always"===v.helpMode||"auto"===v.helpMode&&w.current)&&(F=`\n${v.style.help("(Use arrow keys to reveal more choices)")}`,w.current=!1)}let H="";return z&&(H=`\n${v.style.error(z)}`),`${q} ${E}${B}\n${_}${F}${H}${y.default.cursorHide}`}));exports.Separator=p.Separator,exports.default=k;