UNPKG

anl

Version:
2 lines (1 loc) 3.09 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("yoctocolors-cjs"),s=require("../../../figures/dist/esm/index.mjs.js"),r=require("../../../core/dist/esm/lib/create-prompt.mjs.js"),t=require("../../../core/dist/esm/lib/make-theme.mjs.js"),i=require("../../../core/dist/esm/lib/use-ref.mjs.js"),a=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-memo.mjs.js"),l=require("../../../core/dist/esm/lib/use-effect.mjs.js"),u=require("../../../core/dist/esm/lib/use-keypress.mjs.js"),d=require("../../../core/dist/esm/lib/pagination/use-pagination.mjs.js"),c=require("../../../core/dist/esm/lib/Separator.mjs.js"),m=require("../../../core/dist/esm/lib/key.mjs.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=p(e);const g={icon:{cursor:s.default.pointer},style:{disabled:e=>f.default.dim(`- ${e}`),searchTerm:e=>f.default.cyan(e),description:e=>f.default.cyan(e)},helpMode:"auto"};function j(e){return!c.Separator.isSeparator(e)&&!e.disabled}var h=r.createPrompt(((e,s)=>{const{pageSize:r=7}=e,p=t.makeTheme(g,e.theme),f=i.useRef(!0),[h,y]=a.useState("searching"),[b,S]=a.useState(""),[v,$]=a.useState([]),[q,w]=a.useState(),x="loading"===h||"searching"===h,k=o.usePrefix({isLoading:x,theme:p}),M=n.useMemo((()=>({first:v.findIndex(j),last:v.findLastIndex(j)})),[v]),[P=M.first,E]=a.useState();l.useEffect((()=>{const s=new AbortController;y("searching"),w(void 0);return(async()=>{try{const r=await e.source(b||void 0,{signal:s.signal});s.signal.aborted||(E(void 0),w(void 0),$(r),y("pending"))}catch(e){!s.signal.aborted&&e instanceof Error&&w(e.message)}})(),()=>{s.abort()}}),[b]);const I=v[P];u.useKeypress(((e,r)=>{if(m.isEnterKey(e)&&I)y("done"),s(I.value);else if("searching"===h||"up"!==e.name&&"down"!==e.name)S(r.line);else if(r.clearLine(0),"up"===e.name&&P!==M.first||"down"===e.name&&P!==M.last){const s="up"===e.name?-1:1;let r=P;do{r=(r+s+v.length)%v.length}while(!j(v[r]));E(r)}}));const L=p.style.message(e.message);P>0&&(f.current=!1);let T="";"pending"===h&&v.length>0&&("always"===p.helpMode||"auto"===p.helpMode&&f.current)&&(T=v.length>r?`\n${p.style.help("(Use arrow keys to reveal more choices)")}`:p.style.help("(Use arrow keys)"));const z=d.usePagination({items:v,active:P,renderItem({item:e,isActive:s}){if(c.Separator.isSeparator(e))return` ${e.separator}`;const r=String(e.name||e.value);if(e.disabled){const s="string"==typeof e.disabled?e.disabled:"(disabled)";return p.style.disabled(`${r} ${s}`)}return(s?p.style.highlight:e=>e)(`${s?p.icon.cursor:" "} ${r}`)},pageSize:r,loop:!1});let A,K;if(q?A=p.style.error(q):0===v.length&&""!==b&&"pending"===h&&(A=p.style.error("No results found")),"done"===h&&I){const e=I.short??I.name??String(I.value);return`${k} ${L} ${p.style.answer(e)}`}K=p.style.searchTerm(b);const U=I?.description?`\n${p.style.description(I.description)}`:"";return[[k,L,K].filter(Boolean).join(" "),`${A??z}${T}${U}`]}));exports.Separator=c.Separator,exports.default=h;