import{p as m,a as K,I as U,u as lt,l as et,g as dt}from"./Editor-58f9343f.js";import{y as it,$ as J,b as pt,v as _,B as j,C as q,S as A,E as V}from"./utils-wvIv1qJ9-967f341c.js";import"./index-4bca499f.js";const ct=/[([{][^\n)\]}]*$|(?:(?:^|[^.])\b(?:if\s*\(.+?\)|else|case.+?:))[ \t]*$/,P=/\[]|\(\)|{}/,W=/<(?![!\d])([^\s>\/=$<%]+)(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*>[ \t]*$/,rt=/^<\/(?!\d)[^\s>\/=$<%]+\s*>/,Y=/[([{][^\n)\]}]*$/;m.clike=m.js=m.javascript=m.ts=m.typescript=m.java=m.cs=m.csharp=m.c=m.cpp={comments:{line:"//",block:["/*","*/"]},autoIndent:[([n],l)=>ct.test(l.slice(0,n)),([n,l],t)=>P.test(t[n-1]+t[l])]};m.css=m.sass=m.scss={comments:{block:["/*","*/"]},autoIndent:[([n],l)=>Y.test(l.slice(0,n)),([n,l],t)=>P.test(t[n-1]+t[l])]};const ot=/^(?:area|base|w?br|col|embed|hr|img|input|link|meta|source|track)$/,st=n=>!ot.test(n.match(W)?.[1]||"br");m.markup=m.html=m.markdown=m.md={comments:{block:[""]},autoIndent:[([n],l)=>st(l=l.slice(0,n))||Y.test(l),([n,l],t)=>P.test(t[n-1]+t[l])||st(t.slice(0,n))&&rt.test(t.slice(l))],autoCloseTags([n,l],t){const d=n==l&&(t.slice(0,n)+">").match(W)?.[1];if(d&&!ot.test(d))return``}};const F=/(?:^|[^\w$])<(?:(?!\d)([^\s>\/=<%]+)(?:(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\/)+(?:[^\s{*<>\/=]+(?:(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\/)*=\s*(?:"[^"]*"|'[^']*'|[^\s{'"\/>=]+|(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})))?|(?:\{(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\.{3}(?:[^{}]|(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\}))*\})))*(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))*\*\/)*)?>[ \t]*$/,ut=/^<\/(?!\d)[^\s>\/=<%]*\s*>/,gt=({tags:n,pairs:l},{brackets:t,pairs:d},x)=>{for(let w=n.length,$,v=0;$=n[--w];)if($[3]>x&&$[1]=v&&$[3]<=x&&!(n[l[w]]?.[1]=$[3]&&f[1]F.test(l=l.slice(0,n))||ct.test(l),([n,l],t)=>P.test(t[n-1]+t[l])||F.test(t.slice(0,n))&&ut.test(t.slice(l))],autoCloseTags([n,l],t){const d=n==l&&(t.slice(0,n)+">").match(F);return d?``:""}};const mt=/[([{][^\n)\]}]*$|:[ \t]*$/;m.py=m.python={comments:{line:"#"},autoIndent:[([n],l)=>mt.test(l.slice(0,n)),([n,l],t)=>P.test(t[n-1]+t[l])]};m.xml=m.ssml=m.atom=m.rss=m.mathml=m.svg={comments:{block:[""]},autoIndent:[([n],l)=>W.test(l=l.slice(0,n))||Y.test(l),([n,l],t)=>P.test(t[n-1]+t[l])||W.test(t.slice(0,n))&&rt.test(t.slice(l))],autoCloseTags([n,l],t){const d=n==l&&(t.slice(0,n)+">").match(W);return d?``:""}};const Q=[],X=[],xt=(n=!0)=>{let l,t;const d=[],x=[],w=v=>{if(l=[],x.length=d.length=t=0,$(v.tokens,0),n)for(let k=0,f;f=d[k];){let o=f[0].alias;f[0].alias=(o?(o.join?.(" ")||o)+" ":"")+`bracket-${x[k++]==null?"error":"level-"+f[2]%12}`}},$=(v,k)=>{for(let f=0,o;o=v[f++];){if(typeof o!="string"){const y=o.type,E=o.content;if(y!="regex"){if(Array.isArray(E))$(E,k);else if((o.alias||y)=="punctuation"){let M=E.charCodeAt(E.length-1),b=!!Q[M];if(b||X[M]){if(d[t]=[o,k,0,E,b],b)l.push([t,M]);else for(let a=l.length;a;){let[e,s]=l[--a];if(M-s<3&&M-s>0){x[x[t]=e]=t,d[t][2]=d[e][2]=l.length=a;break}}t++}}}}k+=o.length}};return{update(v){this.update=()=>{},v.extensions.matchBrackets=this,v.addListener("tokenize",w),n&&v.tokens[0]?v.update():w(v)},brackets:d,pairs:x}};Q[40]=Q[91]=Q[123]=!0;X[41]=X[93]=X[125]=!0;const bt=()=>({update(n){this.update=()=>{};let l,t=-1,d=[],x=([k,f]=n.getSelection())=>{let o=k==f&&(l=n.extensions.matchBrackets)&&n.focused&&w(f)||-1;o!=t&&($(),o+1?(d=[l.pairs[o],o].map(y=>it(n,".punctuation",0,-1,l.brackets[y][1])),d[0].nextSibling==d[1]&&(d[0].textContent+=d[1].textContent,d[1].textContent="",d[1]=d[0]),$(!0)):d=[],t=o)},w=k=>{for(let f=0,{brackets:o,pairs:y}=l,E;E=o[++f];)if(!E[4]&&E[1]>k-2&&o[y[f]]?.[1]<=k)return f},$=k=>d.forEach(f=>f.classList.toggle("active-bracket",!!k)),v=addEventListener.bind(n.textarea);v("blur",()=>x()),v("focus",()=>x()),n.addListener("selectionChange",x),n.addListener("update",()=>{$(),t=-1})}}),$t=K('
',"left:var(--padding-left)","guide-indents"),kt=K("","width:1px;position:absolute;background:var(--bg-guide-indent)"),vt=()=>{let n,l=0,t,d=-1,x;const w=[],$=[],v=$t.cloneNode(!0),k=v.lastChild,f=[],o=b=>{t=[];const a=E(b.split(` `)),e=a.length;for(let s=0,i=[],r=a[0];r;s++){const{style:c}=w[s]||(w[s]=kt.cloneNode()),[h,u,p]=r,g=$[s];r=a[s+1],h!=g?.[0]&&(c.top=h+"00%"),u!=g?.[1]&&(c.height=u+"00%"),p!=g?.[2]&&(c.left=p+"00%");const C=i[0]!=h&&r?.[0]!=h,S=i[0]+i[1]!=h+u&&r?.[0]+r?.[1]!=h+u;for(let L=-C,z=u+S;Le;)w[--s].remove();k.append(...w.slice(l,l=e))},y=()=>{const b=t[x.activeLineNumber-1]??-1;b!=d&&(d>-1&&(w[d].className=""),b>-1&&(w[b].className="active")),d=b},E=b=>{const a=b.length,e=[],s=[];for(let i=0,r=-1,c=0,h=0;;c++){const u=c==a,p=u?0:f[c]=M(b[c]);if(p==-1)r==-1&&(r=c);else{for(let g=p;g-1&&(g>p||u)?r:c)-e[g][0];for(let g=i;gi?c:r,0,g++*n];r=-1,i=p}if(u)break}return f.length=a,s},M=b=>{let a=b.search(/\S/),e=0;if(a==-1)return-1;for(let s=0;s ","position:absolute;top:0;opacity:0;padding:inherit"),Ct=()=>{let n=!1,l,t=" ",d=" ",x=yt.cloneNode(!0),[w,$,v]=x.childNodes,k=([o,y,E])=>{let{value:M,activeLine:b}=l,a=E=="backward"?o:y,e=J(M,a),s=/.*/.exec(M.slice(a))[0];!e&&!s&&(s=" "),t!=e&&(w.data=t=e),d!=s&&(v.data=d=s),x.parentNode!=b&&b.prepend(x),n!=(n=!1)&&f()},f=()=>pt(l,$);return{update(o){l||(o.addListener("selectionChange",k),l=o,o.extensions.cursor=this,o.textarea.addEventListener("beforeinput",y=>{n=/history/.test(y.inputType)}),o.activeLine&&k(o.getSelection()))},getPosition(){const o=$.getBoundingClientRect(),y=l.overlays.getBoundingClientRect();return{top:o.y-y.y,bottom:y.bottom-o.bottom,left:o.x-y.x,right:y.right-o.x,height:o.height}},scrollIntoView:f,element:$}},at=navigator.clipboard,H=lt?4:2,St=(n=['""',"''","``","()","[]","{}"],l=/([^\w$'"`]["'`]|.[[({])[;:,.\])}>\s]|.[[({]`/s)=>({update(t,d){this.update=()=>{};let x;const{textarea:w,keyCommandMap:$,inputCommandMap:v,getSelection:k}=t,f=({insertSpaces:a=!0,tabSize:e})=>[a?" ":" ",a?e||2:1],o=()=>!t.extensions.cursor?.scrollIntoView(),y=([a,e],[s,i],r,c)=>(aa==e&&i[e]==s&&!t.setSelection(a+1),M=(a,e,s,i,r,c)=>{let h=e.join(` `);if(h!=a.join(` `)){const u=a.length-1,p=e[u],g=a[u],C=g.length-p.length,S=e[0].length-a[0].length,L=s+(S<0?e:a)[0].search(/\S|$/),z=i-g.length+(C>0?p:g).search(/\S|$/),O=s-i+h.length+C,T=L>r?r:Math.max(L,r+S),B=c+s-i+h.length;j(t,h,s,i,T,c{M(e,e.map(a?p=>p.slice(p.search(/\S|$/)?u-p.search(/\S|$/)%u:0):p=>p&&h.repeat(u-p.search(/\S|$/)%u)+p),s,i,r,c)};v["<"]=(a,e,s)=>y(e,"<>",s,!0),n.forEach(([a,e])=>{const s=a==e;v[a]=(i,r,c)=>(s&&E(r,e,c)||y(r,a+e,c))&&o(),s||(v[e]=(i,r,c)=>E(r,e,c)&&o())}),v[">"]=(a,e,s)=>{const i=m[_(t)]?.autoCloseTags?.call(t,e,s);i&&(j(t,">"+i,null,null,e[0]+1),U(a))},$.Tab=(a,[e,s],i)=>{if(et||d.readOnly||q(a)&6)return;const[r,c]=f(d),h=a.shiftKey,[u,p,g]=A(i,e,s);return e{const i=q(a)&7;if(!i||i==H){i&&(e=Array(2).fill(A(s,e[1],e[1])[2]));const[r,c]=f(d),h=m[_(t)]?.autoIndent,u=Math.floor(J(s,e[0]).search(/\S|$/)/c)*c,p=h?.[0]?.call(t,e,s)?c:0,g=h?.[1]?.call(t,e,s),C=` `+r.repeat(u+p)+(g?` `+r.repeat(u):"");if(C[1]||e[1]{if(e==s){const r=J(i,e),[,c]=f(d),h=n.includes(i.slice(e-1,e+1)),u=r.length%c||c;if(h||u!=1&&!/\S|^$/.test(r))return j(t,"",e-(h?1:u),e+ +h),o()}};for(let a=0;a<2;a++)$[a?"ArrowDown":"ArrowUp"]=(e,[s,i],r)=>{const c=q(e);if((c&7)==1){if(c==1){const h=a?s:r.lastIndexOf(` `,s-1),u=a?r.indexOf(` `,i)+1:i;if(h>-1&&u>0){const[p,g,C]=A(r,h,u),S=p[a?"pop":"shift"](),L=S.length+1;p[a?"unshift":"push"](S),j(t,p.join(` `),g,C,s+(a?L:-L),i+(a?L:-L))}}else{const[h,u,p]=A(r,s,i),g=h.join(` `),C=a?g.length+1:0;j(t,g+` `+g,u,p,s+C,i+C)}return o()}};w.addEventListener("keydown",a=>{const e=q(a),s=a.keyCode;if(e==H&&(s==221||s==219)){const[i,r]=k();b(s==219,...A(t.value,i,r),i,r,...f(d))}else if(e==(lt?10:2)&&s==77)dt(!et),U(a);else if(a.code=="Backslash"&&e==H||s==65&&e==9){const i=t.value,r=e==9,[c,h]=k(),u=r?c:i.lastIndexOf(` `,c-1)+1,p=m[_(t,u)]||{},{line:g,block:C}=p.getComments?.(t,u,i)||p.comments||{},[S,L,z]=A(i,c,h),O=S.length-1;if(r){if(C){const[T,B]=C,D=i.slice(c,h),I=i.slice(0,c).search(V(T)+" ?$"),N=RegExp("^ ?"+V(B)).test(i.slice(h));I+1&&N?j(t,D,I,h+ +(i[h]==" ")+B.length,I,I+h-c):j(t,`${T} ${D} ${B}`,c,h,c+T.length+1,h+T.length+1),o()}}else if(g){const T=V(g),B=RegExp(`^\\s*(${T} ?|$)`),D=RegExp(T+" ?"),I=!/\S/.test(i.slice(L,z)),N=S.map(S.every(R=>B.test(R))&&!I?R=>R.replace(D,""):R=>I||/\S/.test(R)?R.replace(/^\s*/,`$&${g} `):R);M(S,N,L,z,c,h),o()}else if(C){const[T,B]=C,D=S[0].search(/\S|$/),I=S[0].startsWith(T,D)&&S[O].endsWith(B),N=S.slice();N[0]=S[0].replace(I?RegExp(V(T)+" ?"):/(?=\S)|$/,I?"":T+" ");let R=N[0].length-S[0].length;N[O]=I?N[O].replace(RegExp(`( ?${V(B)})?$`),""):N[O]+" "+B;let Z=N.join(` `),G=D+L,tt=G>c?c:Math.max(c+R,G),ht=G>h-(c!=h)?h:Math.min(Math.max(G,h+R),L+Z.length);j(t,Z,L,z,tt,Math.max(tt,ht)),o()}}else if(e==8+H&&s==75){const i=t.value,[r,c,h]=k(),[u,p,g]=A(i,r,c),C=h=="forward"?c-g+u.pop().length:r-p,S=A(i,g+1)[0][0].length;j(t,"",p-!!p,g+!p,p+Math.min(C,S)),o()}}),["copy","cut","paste"].forEach(a=>w.addEventListener(a,e=>{const[s,i]=k();if(s==i&&at){const[[r],c,h]=A(t.value,s,i);a=="paste"?e.clipboardData.getData("text/plain")==x&&(j(t,x+` `,c,c,s+x.length+1),o(),U(e)):(at.writeText(x=r),a=="cut"&&(j(t,"",c,h+1),o()),U(e))}}))}}),jt=n=>{n.addExtensions(St(),vt(),xt(),bt(),Ct())};export{jt as addExtensions};