UNPKG

@visulima/string

Version:

Functions for manipulating strings.

9 lines (8 loc) 7.54 kB
var y=Object.defineProperty;var m=(t,e)=>y(t,"name",{value:e,configurable:!0});import{O as S,P as k,Q as b,S as R,T as O,U as H,V as $,W as P,X as j}from"./packem_shared/constants-CDcaCZKC.mjs";import{getStringWidth as d}from"./get-string-width.mjs";var D=Object.defineProperty,N=m((t,e)=>D(t,"name",{value:e,configurable:!0}),"n");class w{static{m(this,"u")}static{N(this,"AnsiStateTracker")}activeForeground=null;activeBackground=null;activeFormatting=[];processEscape(e){const n=/\x1B\[(\d+)m/.exec(e);if(!n)return;const r=Number.parseInt(n[1],10);switch(r){case 0:{this.activeForeground=null,this.activeBackground=null,this.activeFormatting=[];break}case 39:{this.activeForeground=null;break}case 49:{this.activeBackground=null;break}default:if(r>=30&&r<=37||r>=90&&r<=97)this.activeForeground=e;else if(r>=40&&r<=47||r>=100&&r<=107)this.activeBackground=e;else if([1,2,3,4,7,8,9].includes(r))this.activeFormatting.push(e);else if([22,23,24,27,28,29].includes(r)){const l={22:"[1m",23:"[3m",24:"[4m",27:"[7m",28:"[8m",29:"[9m"}[r];l&&(this.activeFormatting=this.activeFormatting.filter(a=>!a.includes(l)))}}}getStartEscapesForAllActiveAttributes(){return[this.activeBackground,this.activeForeground,...this.activeFormatting].filter(Boolean).join("")}getEndEscapesForAllActiveAttributes(){const e=[];if(this.activeFormatting.length>0){const n={"\x1B[1m":"\x1B[22m","\x1B[2m":"\x1B[22m","\x1B[3m":"\x1B[23m","\x1B[4m":"\x1B[24m","\x1B[7m":"\x1B[27m","\x1B[8m":"\x1B[28m","\x1B[9m":"\x1B[29m"};[...this.activeFormatting].reverse().forEach(r=>{const l=n[r];l&&e.push(l)})}return this.activeForeground&&e.push("\x1B[39m"),this.activeBackground&&e.push("\x1B[49m"),e.join("")}}var q=Object.defineProperty,T=m((t,e)=>q(t,"name",{value:e,configurable:!0}),"o");const I=T((t,e)=>{if(!S.has(t[e]))return{isInsideEscape:!1,isInsideLinkEscape:!1};const n=!0,r=t.slice(e+1,e+1+R.length).join("")===R;return{isInsideEscape:n,isInsideLinkEscape:r}},"checkEscapeSequence"),G=T((t,e={})=>{const n=new w;let r="",l=!1,a=!1,i="",s="",u=!1;const h=[...t];for(let c=0;c<h.length;c++){const o=h[c];if(o&&S.has(o)){if(r){const p=e.getWidth?.(r)??0,v={isEscapeSequence:!1,isGrapheme:!0,text:r,width:p};if(u&&(v.isHyperlink=!0,v.hyperlinkUrl=s),e.onSegment?.(v,n)===!1)return;r=""}if(l=!0,i=o,a=I(h,c).isInsideLinkEscape,a){let p=c+1;for(s="";p<h.length;){const _=h[p];if(_===b)break;s+=_,p+=1}s=s.slice(4);const v={hyperlinkUrl:s,isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkStart:!0,width:0};if(e.onSegment?.(v,n)===!1)return;c=p,u=!0,l=!1,a=!1,i="";continue}if(c+1<h.length&&h[c+1]==="\\"&&u){const p={isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkEnd:!0,width:0};if(e.onSegment?.(p,n)===!1)return;u=!1,s="",c+=1,l=!1,i="";continue}}if(l){if(i!==o&&(i+=o),o===k){l=!1,n.processEscape(i);const p={isEscapeSequence:!0,isGrapheme:!1,text:i,width:0};if(e.onSegment?.(p,n)===!1)return;i=""}continue}r+=o;const f=e.getWidth?.(r)??0,g={isEscapeSequence:!1,isGrapheme:!0,text:r,width:f};if(u&&(g.isHyperlink=!0,g.hyperlinkUrl=s),e.onSegment?.(g,n)===!1)return;r=""}if(r){const c=e.getWidth?.(r)??0,o={isEscapeSequence:!1,isGrapheme:!0,text:r,width:c};u&&(o.isHyperlink=!0,o.hyperlinkUrl=s),e.onSegment?.(o,n)}if(i){const c={isEscapeSequence:!0,isGrapheme:!1,text:i,width:0};e.onSegment?.(c,n)}},"processAnsiString");var L=Object.defineProperty,K=m((t,e)=>L(t,"name",{value:e,configurable:!0}),"t$1");const F=K(t=>`${S.values().next().value}${O}${t}${k}`,"wrapAnsiCode");var U=Object.defineProperty,V=m((t,e)=>U(t,"name",{value:e,configurable:!0}),"t");const W=V(t=>`${S.values().next().value}${R}${t}${b}`,"wrapAnsiHyperlink");var M=Object.defineProperty,Z=m((t,e)=>M(t,"name",{value:e,configurable:!0}),"l");const z=Z(t=>{if(t.length===0)return"";if(t.length===1)return t[0];let e="",n,r;const l=t.join(` `),a=[...l];let i=0;for(const[s,u]of a.entries()){if(e+=u,S.has(u)){const c=H.exec(l.slice(i))?.groups??{};if(c.code!==void 0){const o=Number.parseFloat(c.code);n=o===P?void 0:o}else c.uri!==void 0&&(r=c.uri.length===0?void 0:c.uri)}const h=$.get(Number(n));a[s+1]===` `?(r&&(e+=W("")),n&&h&&(e+=F(h))):u===` `&&(n&&h&&(e+=F(n)),r&&(e+=W(r))),i+=u.length}return e},"preserveAnsi");var Q=Object.defineProperty,E=m((t,e)=>Q(t,"name",{value:e,configurable:!0}),"h");const x=E(t=>{if(!t.includes("\x1B"))return t;let e=t;return t.includes("\x1B[30m")&&(e+="\x1B[39m"),t.includes("\x1B[42m")&&(e+="\x1B[49m"),e},"resetAnsiAtLineBreak"),A=E(t=>{const e=t.split(" ");let n=e.length;for(;n>0&&d(e[n-1])===0;)n--;return n===e.length?t:e.slice(0,n).join(" ")+e.slice(n).join("")},"stringVisibleTrimSpacesRight"),C=E((t,e,n)=>{if(t.length===0)return[""];if(e<=0)return[t];const r=[],l=new w;let a="",i=0,s=!1,u=!1,h="";for(let c=0;c<t.length;c++){const o=t[c];if(S.has(o)){s=!0,h=o,a+=o,u=I([...t],c).isInsideLinkEscape;continue}if(s){h+=o,a+=o,u?o===b&&(s=u=!1):o===k&&(s=!1,l.processEscape(h));continue}const f=d(o),g=o===" ";if(f===0){a+=o;continue}if(i+f>e&&(a&&r.push(a+l.getEndEscapesForAllActiveAttributes()),a=l.getStartEscapesForAllActiveAttributes(),i=d(a),g&&n)){for(;c<t.length&&t[c]===" "&&(c+=1,!(c>=t.length)););c<t.length&&c--;continue}if(a+=o,i+=f,i===e&&c<t.length-1&&(r.push(a+l.getEndEscapesForAllActiveAttributes()),a=l.getStartEscapesForAllActiveAttributes(),i=d(a),c+1<t.length&&t[c+1]===" "&&n)){for(c+=1;c<t.length&&t[c]===" ";)c+=1;c--}}return a&&r.push(a+l.getEndEscapesForAllActiveAttributes()),n?r.map(c=>A(c)):r},"wrapWithBreakAtWidth"),X=E((t,e,n)=>{if(t.length===0)return[];const r=n?t.trim():t;if(r.length===0)return[];const l=[];let a="",i=0;return G(r,{getWidth:d,onSegment:E((s,u)=>{if(s.isEscapeSequence)a+=s.text;else{const h=s.text===" ";if(s.width===0)return a+=s.text,!0;if(i+s.width>e&&(a&&l.push(a),a=u.getStartEscapesForAllActiveAttributes(),i=0,h))return n||l.push(u.getStartEscapesForAllActiveAttributes()+s.text),!0;a+=s.text,i+=s.width}return!0},"onSegment")}),a&&l.push(a),n?l.map(s=>A(s)):l},"wrapCharByChar"),J=E((t,e,n)=>{if(t.length===0)return[];const r=n?t.trim():t;if(r.length===0)return[];const l=r.split(/(?=\s)|(?<=\s)/),a=[];let i="",s=0,u=0;for(;u<l.length;){const h=l[u],c=/^\s+$/.test(h),o=d(h);if(h.length===0){u+=1;continue}if(n&&c&&s===0){u+=1;continue}if(s+o>e&&s>0){n?a.push(A(i)):a.push(i),i="",s=0;continue}i+=h,s+=o,u+=1}return i&&(n?a.push(A(i)):a.push(i)),a},"wrapWithWordBoundaries"),Y=E((t,e,n)=>{if(t.length===0)return[];const r=n?t.trim():t;if(r.length===0)return[];const l=r.split(/(?=\s)|(?<=\s)/),a=[];let i="",s=0,u=0;for(;u<l.length;){const h=l[u],c=/^\s+$/.test(h),o=d(h);if(h.length===0){u+=1;continue}if(n&&c&&s===0){u+=1;continue}if(o>e){i&&a.push(x(n?A(i):i));const f=C(h,e,n);if(f.length>0){for(let g=0;g<f.length-1;g++)a.push(f[g]);i=f[f.length-1],s=d(i)}else i="",s=0;u+=1;continue}if(s+o>e&&s>0&&(a.push(x(n?A(i):i)),i="",s=0,n&&c)){u+=1;continue}i+=h,s+=o,u+=1}return i&&a.push(x(n?A(i):i)),a},"wrapAndBreakWords"),B={BREAK_AT_CHARACTERS:"BREAK_AT_CHARACTERS",BREAK_WORDS:"BREAK_WORDS",PRESERVE_WORDS:"PRESERVE_WORDS",STRICT_WIDTH:"STRICT_WIDTH"},ne=E((t,e={})=>{const{removeZeroWidthCharacters:n=!0,trim:r=!0,width:l=80,wrapMode:a=B.PRESERVE_WORDS}=e;if(r&&t.trim()==="")return"";let i=String(t).normalize("NFC").replaceAll(`\r `,` `);return n&&(i=i.replaceAll(j,"")),i.split(` `).map(s=>{if(r&&s.trim()==="")return"";let u;switch(a){case B.BREAK_AT_CHARACTERS:{u=X(s,l,r);break}case B.BREAK_WORDS:{u=Y(s,l,r);break}case B.STRICT_WIDTH:{u=C(s,l,r);break}default:u=J(s,l,r)}return z(u)}).join(` `)},"wordWrap");export{B as WrapMode,ne as wordWrap};