UNPKG

starboard-notebook

Version:

Starboard Notebook

1 lines 674 kB
(self.webpackChunkstarboard_notebook=self.webpackChunkstarboard_notebook||[]).push([["codemirrorEditor"],{"./src/components/editor/codemirror/editor.ts":(Ri,bt,Ne)=>{"use strict";Ne.r(bt),Ne.d(bt,{createCodeMirrorEditor:()=>Ii});var v=Ne("./node_modules/@codemirror/view/dist/index.js"),le=Ne("./node_modules/@codemirror/state/dist/index.js"),Re=Ne("./node_modules/@codemirror/text/dist/index.js"),Ze=Ne("./node_modules/@codemirror/language/dist/index.js"),nt=Ne("./node_modules/@lezer/common/dist/index.js");const He=v.tk.baseTheme({".cm-matchingBracket":{backgroundColor:"#328c8252"},".cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),st=1e4,ut="()[]{}",it=le.r$.define({combine(a){return(0,le.BO)(a,{afterCursor:!0,brackets:ut,maxScanDistance:st})}}),rt=v.p.mark({class:"cm-matchingBracket"}),Tt=v.p.mark({class:"cm-nonmatchingBracket"}),ze=[le.QQ.define({create(){return v.p.none},update(a,l){if(!l.docChanged&&!l.selection)return a;let u=[],m=l.state.facet(it);for(let P of l.state.selection.ranges){if(!P.empty)continue;let b=je(l.state,P.head,-1,m)||P.head>0&&je(l.state,P.head-1,1,m)||m.afterCursor&&(je(l.state,P.head,1,m)||P.head<l.state.doc.length&&je(l.state,P.head+1,-1,m));if(!b)continue;let R=b.matched?rt:Tt;u.push(R.range(b.start.from,b.start.to)),b.end&&u.push(R.range(b.end.from,b.end.to))}return v.p.set(u,!0)},provide:a=>v.tk.decorations.from(a)}),He];function Ee(a={}){return[it.of(a),ze]}function Le(a,l,u){let m=a.prop(l<0?nt.md.openedBy:nt.md.closedBy);if(m)return m;if(a.name.length==1){let P=u.indexOf(a.name);if(P>-1&&P%2==(l<0?1:0))return[u[P+l]]}return null}function je(a,l,u,m={}){let P=m.maxScanDistance||st,b=m.brackets||ut,R=(0,Ze.qz)(a),te=R.resolveInner(l,u);for(let oe=te;oe;oe=oe.parent){let we=Le(oe.type,u,b);if(we&&oe.from<oe.to)return pt(a,l,u,oe,we,b)}return _t(a,l,u,R,te.type,P,b)}function pt(a,l,u,m,P,b){let R=m.parent,te={from:m.from,to:m.to},oe=0,we=R==null?void 0:R.cursor;if(we&&(u<0?we.childBefore(m.from):we.childAfter(m.to)))do if(u<0?we.to<=m.from:we.from>=m.to){if(oe==0&&P.indexOf(we.type.name)>-1&&we.from<we.to)return{start:te,end:{from:we.from,to:we.to},matched:!0};if(Le(we.type,u,b))oe++;else if(Le(we.type,-u,b)&&(oe--,oe==0))return{start:te,end:we.from==we.to?void 0:{from:we.from,to:we.to},matched:!1}}while(u<0?we.prevSibling():we.nextSibling());return{start:te,matched:!1}}function _t(a,l,u,m,P,b,R){let te=u<0?a.sliceDoc(l-1,l):a.sliceDoc(l,l+1),oe=R.indexOf(te);if(oe<0||oe%2==0!=u>0)return null;let we={from:u<0?l-1:l,to:u>0?l+1:l},_e=a.doc.iterRange(l,u>0?a.doc.length:0),ct=0;for(let Ot=0;!_e.next().done&&Ot<=b;){let It=_e.value;u<0&&(Ot+=It.length);let jt=l+Ot*u;for(let Oi=u>0?0:It.length-1,ao=u>0?It.length:-1;Oi!=ao;Oi+=u){let qs=R.indexOf(It[Oi]);if(!(qs<0||m.resolve(jt+Oi,1).type!=P))if(qs%2==0==u>0)ct++;else{if(ct==1)return{start:we,end:{from:jt+Oi,to:jt+Oi+1},matched:qs>>1==oe>>1};ct--}}u>0&&(Ot+=It.length)}return _e.done?{start:we,matched:!1}:null}function We(a,l){return le.jT.create(a.ranges.map(l),a.mainIndex)}function H(a,l){return a.update({selection:l,scrollIntoView:!0,userEvent:"select"})}function ee({state:a,dispatch:l},u){let m=We(a.selection,u);return m.eq(a.selection)?!1:(l(H(a,m)),!0)}function ue(a,l){return le.jT.cursor(l?a.to:a.from)}function Pe(a,l){return ee(a,u=>u.empty?a.moveByChar(u,l):ue(u,l))}const xe=a=>Pe(a,a.textDirection!=v.Nm.LTR),se=a=>Pe(a,a.textDirection==v.Nm.LTR),z=a=>Pe(a,!0),C=a=>Pe(a,!1);function re(a,l){return ee(a,u=>u.empty?a.moveByGroup(u,l):ue(u,l))}const fe=a=>re(a,a.textDirection!=v.Nm.LTR),ye=a=>re(a,a.textDirection==v.Nm.LTR),Ve=a=>re(a,!0),Ie=a=>re(a,!1);function Ue(a,l,u){let m=a.state.charCategorizer(l.from);return a.moveByChar(l,u,P=>{let b=CharCategory.Space,R=l.from,te=!1,oe=!1,we=!1,_e=ct=>{if(te)return!1;R+=u?ct.length:-ct.length;let Ot=m(ct),It;if(b==CharCategory.Space&&(b=Ot),b!=Ot)return!1;if(b==CharCategory.Word)if(ct.toLowerCase()==ct){if(!u&&oe)return!1;we=!0}else if(we){if(u)return!1;te=!0}else{if(oe&&u&&m(It=a.state.sliceDoc(R,R+1))==CharCategory.Word&&It.toLowerCase()==It)return!1;oe=!0}return!0};return _e(P),_e})}function yt(a,l){return ee(a,u=>u.empty?Ue(a,u,l):ue(u,l))}const Wt=a=>yt(a,!0),Lt=a=>yt(a,!1);function xt(a,l,u){if(l.type.prop(u))return!0;let m=l.to-l.from;return m&&(m>2||/[^\s,.;:]/.test(a.sliceDoc(l.from,l.to)))||l.firstChild}function ft(a,l,u){let m=(0,Ze.qz)(a).resolveInner(l.head),P=u?nt.md.closedBy:nt.md.openedBy;for(let oe=l.head;;){let we=u?m.childAfter(oe):m.childBefore(oe);if(!we)break;xt(a,we,P)?m=we:oe=u?we.to:we.from}let b=m.type.prop(P),R,te;return b&&(R=u?je(a,m.from,1):je(a,m.to,-1))&&R.matched?te=u?R.end.to:R.end.from:te=u?m.to:m.from,le.jT.cursor(te,u?-1:1)}const St=a=>ee(a,l=>ft(a.state,l,a.textDirection!=v.Nm.LTR)),Gt=a=>ee(a,l=>ft(a.state,l,a.textDirection==v.Nm.LTR));function Ye(a,l){return ee(a,u=>{if(!u.empty)return ue(u,l);let m=a.moveVertically(u,l);return m.head!=u.head?m:a.moveToLineBoundary(u,l)})}const Q=a=>Ye(a,!1),_=a=>Ye(a,!0);function E(a,l){return ee(a,u=>u.empty?a.moveVertically(u,l,a.dom.clientHeight):ue(u,l))}const U=a=>E(a,!1),Y=a=>E(a,!0);function F(a,l,u){let m=a.visualLineAt(l.head),P=a.moveToLineBoundary(l,u);if(P.head==l.head&&P.head!=(u?m.to:m.from)&&(P=a.moveToLineBoundary(l,u,!1)),!u&&P.head==m.from&&m.length){let b=/^\s*/.exec(a.state.sliceDoc(m.from,Math.min(m.from+100,m.to)))[0].length;b&&l.head!=m.from+b&&(P=le.jT.cursor(m.from+b))}return P}const Oe=a=>ee(a,l=>F(a,l,!0)),me=a=>ee(a,l=>F(a,l,!1)),ie=a=>ee(a,l=>le.jT.cursor(a.visualLineAt(l.head).from,1)),T=a=>ee(a,l=>le.jT.cursor(a.visualLineAt(l.head).to,-1));function I(a,l,u){let m=!1,P=We(a.selection,b=>{let R=je(a,b.head,-1)||je(a,b.head,1)||b.head>0&&je(a,b.head-1,1)||b.head<a.doc.length&&je(a,b.head+1,-1);if(!R||!R.end)return b;m=!0;let te=R.start.from==b.head?R.end.to:R.end.from;return u?le.jT.range(b.anchor,te):le.jT.cursor(te)});return m?(l(H(a,P)),!0):!1}const D=({state:a,dispatch:l})=>I(a,l,!1),M=({state:a,dispatch:l})=>I(a,l,!0);function w(a,l){let u=We(a.state.selection,m=>{let P=l(m);return le.jT.range(m.anchor,P.head,P.goalColumn)});return u.eq(a.state.selection)?!1:(a.dispatch(H(a.state,u)),!0)}function Xe(a,l){return w(a,u=>a.moveByChar(u,l))}const Fe=a=>Xe(a,a.textDirection!=v.Nm.LTR),Ge=a=>Xe(a,a.textDirection==v.Nm.LTR),Qt=a=>Xe(a,!0),Be=a=>Xe(a,!1);function at(a,l){return w(a,u=>a.moveByGroup(u,l))}const B=a=>at(a,a.textDirection!=v.Nm.LTR),g=a=>at(a,a.textDirection==v.Nm.LTR),S=a=>at(a,!0),q=a=>at(a,!1);function V(a,l){return w(a,u=>Ue(a,u,l))}const L=a=>V(a,!0),K=a=>V(a,!1),de=a=>w(a,l=>ft(a.state,l,a.textDirection!=v.Nm.LTR)),qe=a=>w(a,l=>ft(a.state,l,a.textDirection==v.Nm.LTR));function ve(a,l){return w(a,u=>a.moveVertically(u,l))}const Se=a=>ve(a,!1),tt=a=>ve(a,!0);function ht(a,l){return w(a,u=>a.moveVertically(u,l,a.dom.clientHeight))}const dt=a=>ht(a,!1),Pt=a=>ht(a,!0),mt=a=>w(a,l=>F(a,l,!0)),Ut=a=>w(a,l=>F(a,l,!1)),Rt=a=>w(a,l=>le.jT.cursor(a.visualLineAt(l.head).from)),qi=a=>w(a,l=>le.jT.cursor(a.visualLineAt(l.head).to)),hi=({state:a,dispatch:l})=>(l(H(a,{anchor:0})),!0),ui=({state:a,dispatch:l})=>(l(H(a,{anchor:a.doc.length})),!0),yi=({state:a,dispatch:l})=>(l(H(a,{anchor:a.selection.main.anchor,head:0})),!0),wr=({state:a,dispatch:l})=>(l(H(a,{anchor:a.selection.main.anchor,head:a.doc.length})),!0),Fi=({state:a,dispatch:l})=>(l(a.update({selection:{anchor:0,head:a.doc.length},userEvent:"select"})),!0),nr=({state:a,dispatch:l})=>{let u=ci(a).map(({from:m,to:P})=>le.jT.range(m,Math.min(P+1,a.doc.length)));return l(a.update({selection:le.jT.create(u),userEvent:"select"})),!0},Er=({state:a,dispatch:l})=>{let u=We(a.selection,m=>{var P;let b=(0,Ze.qz)(a).resolveInner(m.head,1);for(;!(b.from<m.from&&b.to>=m.to||b.to>m.to&&b.from<=m.from||!((P=b.parent)===null||P===void 0?void 0:P.parent));)b=b.parent;return le.jT.range(b.to,b.from)});return l(H(a,u)),!0},yr=({state:a,dispatch:l})=>{let u=a.selection,m=null;return u.ranges.length>1?m=le.jT.create([u.main]):u.main.empty||(m=le.jT.create([le.jT.cursor(u.main.head)])),m?(l(H(a,m)),!0):!1};function sr({state:a,dispatch:l},u){if(a.readOnly)return!1;let m="delete.selection",P=a.changeByRange(b=>{let{from:R,to:te}=b;if(R==te){let oe=u(R);oe<R?m="delete.backward":oe>R&&(m="delete.forward"),R=Math.min(R,oe),te=Math.max(te,oe)}return R==te?{range:b}:{changes:{from:R,to:te},range:le.jT.cursor(R)}});return P.changes.empty?!1:(l(a.update(P,{scrollIntoView:!0,userEvent:m})),!0)}function Ji(a,l,u){if(a instanceof v.tk)for(let m of a.pluginField(v.BF.atomicRanges))m.between(l,l,(P,b)=>{P<l&&b>l&&(l=u?b:P)});return l}const xr=(a,l)=>sr(a,u=>{let{state:m}=a,P=m.doc.lineAt(u),b,R;if(!l&&u>P.from&&u<P.from+200&&!/[^ \t]/.test(b=P.text.slice(0,u-P.from))){if(b[b.length-1]==" ")return u-1;let te=(0,Re.IS)(b,m.tabSize),oe=te%(0,Ze.y1)(m)||(0,Ze.y1)(m);for(let we=0;we<oe&&b[b.length-1-we]==" ";we++)u--;R=u}else R=(0,Re.cp)(P.text,u-P.from,l)+P.from,R==u&&P.number!=(l?m.doc.lines:1)&&(R+=l?1:-1);return Ji(a,R,l)}),Hi=a=>xr(a,!1),Gi=a=>xr(a,!0),gi=(a,l)=>sr(a,u=>{let m=u,{state:P}=a,b=P.doc.lineAt(m),R=P.charCategorizer(m);for(let te=null;;){if(m==(l?b.to:b.from)){m==u&&b.number!=(l?P.doc.lines:1)&&(m+=l?1:-1);break}let oe=(0,Re.cp)(b.text,m-b.from,l)+b.from,we=b.text.slice(Math.min(m,oe)-b.from,Math.max(m,oe)-b.from),_e=R(we);if(te!=null&&_e!=te)break;(we!=" "||m!=u)&&(te=_e),m=oe}return Ji(a,m,l)}),Zi=a=>gi(a,!1),Lr=a=>gi(a,!0),Bt=a=>sr(a,l=>{let u=a.visualLineAt(l).to;return Ji(a,l<u?u:Math.min(a.state.doc.length,l+1),!0)}),Sr=a=>sr(a,l=>{let u=a.visualLineAt(l).from;return Ji(a,l>u?u:Math.max(0,l-1),!1)}),Yi=({state:a,dispatch:l})=>{if(a.readOnly)return!1;let u=[];for(let m=0,P="",b=a.doc.iter();;){if(b.next(),b.lineBreak||b.done){let R=P.search(/\s+$/);if(R>-1&&u.push({from:m-(P.length-R),to:m}),b.done)break;P=""}else P=b.value;m+=b.value.length}return u.length?(l(a.update({changes:u,userEvent:"delete"})),!0):!1},fi=({state:a,dispatch:l})=>{if(a.readOnly)return!1;let u=a.changeByRange(m=>({changes:{from:m.from,to:m.to,insert:Re.xv.of(["",""])},range:le.jT.cursor(m.from)}));return l(a.update(u,{scrollIntoView:!0,userEvent:"input"})),!0},kr=({state:a,dispatch:l})=>{if(a.readOnly)return!1;let u=a.changeByRange(m=>{if(!m.empty||m.from==0||m.from==a.doc.length)return{range:m};let P=m.from,b=a.doc.lineAt(P),R=P==b.from?P-1:(0,Re.cp)(b.text,P-b.from,!1)+b.from,te=P==b.to?P+1:(0,Re.cp)(b.text,P-b.from,!0)+b.from;return{changes:{from:R,to:te,insert:a.doc.slice(P,te).append(a.doc.slice(R,P))},range:le.jT.cursor(te)}});return u.changes.empty?!1:(l(a.update(u,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function ci(a){let l=[],u=-1;for(let m of a.selection.ranges){let P=a.doc.lineAt(m.from),b=a.doc.lineAt(m.to);if(!m.empty&&m.to==b.from&&(b=a.doc.lineAt(m.to-1)),u>=P.number){let R=l[l.length-1];R.to=b.to,R.ranges.push(m)}else l.push({from:P.from,to:b.to,ranges:[m]});u=b.number+1}return l}function Xr(a,l,u){if(a.readOnly)return!1;let m=[],P=[];for(let b of ci(a)){if(u?b.to==a.doc.length:b.from==0)continue;let R=a.doc.lineAt(u?b.to+1:b.from-1),te=R.length+1;if(u){m.push({from:b.to,to:R.to},{from:b.from,insert:R.text+a.lineBreak});for(let oe of b.ranges)P.push(le.jT.range(Math.min(a.doc.length,oe.anchor+te),Math.min(a.doc.length,oe.head+te)))}else{m.push({from:R.from,to:b.from},{from:b.to,insert:a.lineBreak+R.text});for(let oe of b.ranges)P.push(le.jT.range(oe.anchor-te,oe.head-te))}}return m.length?(l(a.update({changes:m,scrollIntoView:!0,selection:le.jT.create(P,a.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Dr=({state:a,dispatch:l})=>Xr(a,l,!1),Tr=({state:a,dispatch:l})=>Xr(a,l,!0);function Xi(a,l,u){if(a.readOnly)return!1;let m=[];for(let P of ci(a))u?m.push({from:P.from,insert:a.doc.slice(P.from,P.to)+a.lineBreak}):m.push({from:P.to,insert:a.lineBreak+a.doc.slice(P.from,P.to)});return l(a.update({changes:m,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const or=({state:a,dispatch:l})=>Xi(a,l,!1),xi=({state:a,dispatch:l})=>Xi(a,l,!0),vr=a=>{if(a.state.readOnly)return!1;let{state:l}=a,u=l.changes(ci(l).map(({from:P,to:b})=>(P>0?P--:b<l.doc.length&&b++,{from:P,to:b}))),m=We(l.selection,P=>a.moveVertically(P,!0)).map(u);return a.dispatch({changes:u,selection:m,scrollIntoView:!0,userEvent:"delete.line"}),!0},G=({state:a,dispatch:l})=>(l(a.update(a.replaceSelection(a.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);function x(a,l){if(/\(\)|\[\]|\{\}/.test(a.sliceDoc(l-1,l+1)))return{from:l,to:l};let u=(0,Ze.qz)(a).resolveInner(l),m=u.childBefore(l),P=u.childAfter(l),b;return m&&P&&m.to<=l&&P.from>=l&&(b=m.type.prop(nt.md.closedBy))&&b.indexOf(P.name)>-1&&a.doc.lineAt(m.to).from==a.doc.lineAt(P.from).from?{from:m.to,to:P.from}:null}const k=N(!1),j=N(!0);function N(a){return({state:l,dispatch:u})=>{if(l.readOnly)return!1;let m=l.changeByRange(P=>{let{from:b,to:R}=P,te=l.doc.lineAt(b),oe=!a&&b==R&&x(l,b);a&&(b=R=(R<=te.to?te:l.doc.lineAt(R)).to);let we=new Ze.Gn(l,{simulateBreak:b,simulateDoubleBreak:!!oe}),_e=(0,Ze.K0)(we,b);for(_e==null&&(_e=/^\s*/.exec(l.doc.lineAt(b).text)[0].length);R<te.to&&/\s/.test(te.text[R-te.from]);)R++;oe?{from:b,to:R}=oe:b>te.from&&b<te.from+100&&!/\S/.test(te.text.slice(0,b))&&(b=te.from);let ct=["",(0,Ze.SS)(l,_e)];return oe&&ct.push((0,Ze.SS)(l,we.lineIndent(te.from,-1))),{changes:{from:b,to:R,insert:Re.xv.of(ct)},range:le.jT.cursor(b+1+ct[1].length)}});return u(l.update(m,{scrollIntoView:!0,userEvent:"input"})),!0}}function ne(a,l){let u=-1;return a.changeByRange(m=>{let P=[];for(let R=m.from;R<=m.to;){let te=a.doc.lineAt(R);te.number>u&&(m.empty||m.to>te.from)&&(l(te,P,m),u=te.number),R=te.to+1}let b=a.changes(P);return{changes:P,range:le.jT.range(b.mapPos(m.anchor,1),b.mapPos(m.head,1))}})}const pe=({state:a,dispatch:l})=>{if(a.readOnly)return!1;let u=Object.create(null),m=new Ze.Gn(a,{overrideIndentation:b=>{let R=u[b];return R==null?-1:R}}),P=ne(a,(b,R,te)=>{let oe=(0,Ze.K0)(m,b.from);if(oe==null)return;/\S/.test(b.text)||(oe=0);let we=/^\s*/.exec(b.text)[0],_e=(0,Ze.SS)(a,oe);(we!=_e||te.from<b.from+we.length)&&(u[b.from]=oe,R.push({from:b.from,to:b.from+we.length,insert:_e}))});return P.changes.empty||l(a.update(P,{userEvent:"indent"})),!0},ge=({state:a,dispatch:l})=>a.readOnly?!1:(l(a.update(ne(a,(u,m)=>{m.push({from:u.from,insert:a.facet(Ze.c)})}),{userEvent:"input.indent"})),!0),be=({state:a,dispatch:l})=>a.readOnly?!1:(l(a.update(ne(a,(u,m)=>{let P=/^\s*/.exec(u.text)[0];if(!P)return;let b=(0,Re.IS)(P,a.tabSize),R=0,te=(0,Ze.SS)(a,Math.max(0,b-(0,Ze.y1)(a)));for(;R<P.length&&R<te.length&&P.charCodeAt(R)==te.charCodeAt(R);)R++;m.push({from:u.from+R,to:u.from+P.length,insert:te.slice(R)})}),{userEvent:"delete.dedent"})),!0),De=({state:a,dispatch:l})=>a.selection.ranges.some(u=>!u.empty)?ge({state:a,dispatch:l}):(l(a.update(a.replaceSelection(" "),{scrollIntoView:!0,userEvent:"input"})),!0),Je=[{key:"Ctrl-b",run:xe,shift:Fe,preventDefault:!0},{key:"Ctrl-f",run:se,shift:Ge},{key:"Ctrl-p",run:Q,shift:Se},{key:"Ctrl-n",run:_,shift:tt},{key:"Ctrl-a",run:ie,shift:Rt},{key:"Ctrl-e",run:T,shift:qi},{key:"Ctrl-d",run:Gi},{key:"Ctrl-h",run:Hi},{key:"Ctrl-k",run:Bt},{key:"Ctrl-Alt-h",run:Zi},{key:"Ctrl-o",run:fi},{key:"Ctrl-t",run:kr},{key:"Alt-<",run:hi},{key:"Alt->",run:ui},{key:"Ctrl-v",run:Y},{key:"Alt-v",run:U}],vt=[{key:"ArrowLeft",run:xe,shift:Fe,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:fe,shift:B},{mac:"Cmd-ArrowLeft",run:me,shift:Ut},{key:"ArrowRight",run:se,shift:Ge,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ye,shift:g},{mac:"Cmd-ArrowRight",run:Oe,shift:mt},{key:"ArrowUp",run:Q,shift:Se,preventDefault:!0},{mac:"Cmd-ArrowUp",run:hi,shift:yi},{mac:"Ctrl-ArrowUp",run:U,shift:dt},{key:"ArrowDown",run:_,shift:tt,preventDefault:!0},{mac:"Cmd-ArrowDown",run:ui,shift:wr},{mac:"Ctrl-ArrowDown",run:Y,shift:Pt},{key:"PageUp",run:U,shift:dt},{key:"PageDown",run:Y,shift:Pt},{key:"Home",run:me,shift:Ut},{key:"Mod-Home",run:hi,shift:yi},{key:"End",run:Oe,shift:mt},{key:"Mod-End",run:ui,shift:wr},{key:"Enter",run:k},{key:"Mod-a",run:Fi},{key:"Backspace",run:Hi,shift:Hi},{key:"Delete",run:Gi,shift:Gi},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Zi},{key:"Mod-Delete",mac:"Alt-Delete",run:Lr},{mac:"Mod-Backspace",run:Sr},{mac:"Mod-Delete",run:Bt}].concat(Je.map(a=>({mac:a.key,run:a.run,shift:a.shift}))),Ti=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:St,shift:de},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Gt,shift:qe},{key:"Alt-ArrowUp",run:Dr},{key:"Shift-Alt-ArrowUp",run:or},{key:"Alt-ArrowDown",run:Tr},{key:"Shift-Alt-ArrowDown",run:xi},{key:"Escape",run:yr},{key:"Mod-Enter",run:j},{key:"Alt-l",mac:"Ctrl-l",run:nr},{key:"Mod-i",run:Er,preventDefault:!0},{key:"Mod-[",run:be},{key:"Mod-]",run:ge},{key:"Mod-Alt-\\",run:pe},{key:"Shift-Mod-k",run:vr},{key:"Shift-Mod-\\",run:D}].concat(vt),ti={key:"Tab",run:ge,shift:be};var Et=Ne("./node_modules/@codemirror/rangeset/dist/index.js");const Qi={brackets:["(","[","{","'",'"'],before:`)]}'":;>`},Ht=le.Py.define({map(a,l){let u=l.mapPos(a,-1,le.gc.TrackAfter);return u==null?void 0:u}}),kt=le.Py.define({map(a,l){return l.mapPos(a)}}),si=new class extends Et.uU{};si.startSide=1,si.endSide=-1;const $i=le.QQ.define({create(){return Et.Xs.empty},update(a,l){if(l.selection){let u=l.state.doc.lineAt(l.selection.main.head).from,m=l.startState.doc.lineAt(l.startState.selection.main.head).from;u!=l.changes.mapPos(m,-1)&&(a=Et.Xs.empty)}a=a.map(l.changes);for(let u of l.effects)u.is(Ht)?a=a.update({add:[si.range(u.value,u.value+1)]}):u.is(kt)&&(a=a.update({filter:m=>m!=u.value}));return a}});function Vt(){return[v.tk.inputHandler.of(mn),$i]}const Ct="()[]{}<>";function Ki(a){for(let l=0;l<Ct.length;l+=2)if(Ct.charCodeAt(l)==a)return Ct.charAt(l+1);return(0,Re.bg)(a<128?a:a+1)}function pn(a,l){return a.languageDataAt("closeBrackets",l)[0]||Qi}function mn(a,l,u,m){if(a.composing)return!1;let P=a.state.selection.main;if(m.length>2||m.length==2&&(0,Re.nZ)((0,Re.gm)(m,0))==1||l!=P.from||u!=P.to)return!1;let b=ms(a.state,m);return b?(a.dispatch(b),!0):!1}const Gs=[{key:"Backspace",run:({state:a,dispatch:l})=>{let m=pn(a,a.selection.main.head).brackets||Qi.brackets,P=null,b=a.changeByRange(R=>{if(R.empty){let te=Mn(a.doc,R.head);for(let oe of m)if(oe==te&&ar(a.doc,R.head)==Ki((0,Re.gm)(oe,0)))return{changes:{from:R.head-oe.length,to:R.head+oe.length},range:le.jT.cursor(R.head-oe.length),userEvent:"delete.backward"}}return{range:P=R}});return P||l(a.update(b,{scrollIntoView:!0})),!P}}];function ms(a,l){let u=pn(a,a.selection.main.head),m=u.brackets||Qi.brackets;for(let P of m){let b=Ki((0,Re.gm)(P,0));if(l==P)return b==P?Bn(a,P,m.indexOf(P+P+P)>-1):Nn(a,P,b,u.before||Qi.before);if(l==b&&Dn(a,a.selection.main.from))return gn(a,P,b)}return null}function Dn(a,l){let u=!1;return a.field($i).between(0,a.doc.length,m=>{m==l&&(u=!0)}),u}function ar(a,l){let u=a.sliceString(l,l+2);return u.slice(0,(0,Re.nZ)((0,Re.gm)(u,0)))}function Mn(a,l){let u=a.sliceString(l-2,l);return(0,Re.nZ)((0,Re.gm)(u,0))==u.length?u:u.slice(1)}function Nn(a,l,u,m){let P=null,b=a.changeByRange(R=>{if(!R.empty)return{changes:[{insert:l,from:R.from},{insert:u,from:R.to}],effects:Ht.of(R.to+l.length),range:le.jT.range(R.anchor+l.length,R.head+l.length)};let te=ar(a.doc,R.head);return!te||/\s/.test(te)||m.indexOf(te)>-1?{changes:{insert:l+u,from:R.head},effects:Ht.of(R.head+l.length),range:le.jT.cursor(R.head+l.length)}:{range:P=R}});return P?null:a.update(b,{scrollIntoView:!0,userEvent:"input.type"})}function gn(a,l,u){let m=null,P=a.selection.ranges.map(b=>b.empty&&ar(a.doc,b.head)==u?le.jT.cursor(b.head+u.length):m=b);return m?null:a.update({selection:le.jT.create(P,a.selection.mainIndex),scrollIntoView:!0,effects:a.selection.ranges.map(({from:b})=>kt.of(b))})}function Bn(a,l,u){let m=null,P=a.changeByRange(b=>{if(!b.empty)return{changes:[{insert:l,from:b.from},{insert:l,from:b.to}],effects:Ht.of(b.to+l.length),range:le.jT.range(b.anchor+l.length,b.head+l.length)};let R=b.head,te=ar(a.doc,R);if(te==l){if(Qn(a,R))return{changes:{insert:l+l,from:R},effects:Ht.of(R+l.length),range:le.jT.cursor(R+l.length)};if(Dn(a,R)){let oe=u&&a.sliceDoc(R,R+l.length*3)==l+l+l;return{range:le.jT.cursor(R+l.length*(oe?3:1)),effects:kt.of(R)}}}else{if(u&&a.sliceDoc(R-2*l.length,R)==l+l&&Qn(a,R-2*l.length))return{changes:{insert:l+l+l+l,from:R},effects:Ht.of(R+l.length),range:le.jT.cursor(R+l.length)};if(a.charCategorizer(R)(te)!=le.D0.Word){let oe=a.sliceDoc(R-1,R);if(oe!=l&&a.charCategorizer(R)(oe)!=le.D0.Word)return{changes:{insert:l+l,from:R},effects:Ht.of(R+l.length),range:le.jT.cursor(R+l.length)}}}return{range:m=b}});return m?null:a.update(P,{scrollIntoView:!0,userEvent:"input.type"})}function Qn(a,l){let u=(0,Ze.qz)(a).resolveInner(l+1);return u.parent&&u.from==l}class vi extends Et.uU{compare(l){return this==l||this.constructor==l.constructor&&this.eq(l)}eq(l){return!1}}vi.prototype.elementClass="",vi.prototype.toDOM=void 0,vi.prototype.mapMode=le.gc.TrackBefore,vi.prototype.startSide=vi.prototype.endSide=-1,vi.prototype.point=!0;const $n=le.r$.define(),gs={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Et.Xs.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},lr=le.r$.define();function Qs(a){return[Fn(),lr.of(Object.assign(Object.assign({},gs),a))]}const $s=v.tk.baseTheme({".cm-gutters":{display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#999",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"}}),oi=le.r$.define({combine:a=>a.some(l=>l)});function Fn(a){let l=[Ai,$s];return a&&a.fixed===!1&&l.push(oi.of(!0)),l}const Ai=v.lg.fromClass(class{constructor(a){this.view=a,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=a.state.facet(lr).map(l=>new Or(a,l));for(let l of this.gutters)this.dom.appendChild(l.dom);this.fixed=!a.state.facet(oi),this.fixed&&(this.dom.style.position="sticky"),a.scrollDOM.insertBefore(this.dom,a.contentDOM),this.syncGutters()}update(a){this.updateGutters(a)&&this.syncGutters(),a.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(oi)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"")}syncGutters(){let a=Et.Xs.iter(this.view.state.facet($n),this.view.viewport.from),l=[],u=this.gutters.map(m=>new Ps(m,this.view.viewport));this.view.viewportLines(m=>{let P;if(Array.isArray(m.type)){for(let b of m.type)if(b.type==v.kH.Text){P=b;break}}else P=m.type==v.kH.Text?m:void 0;if(!!P){l.length&&(l=[]),Jn(a,l,m.from);for(let b of u)b.line(this.view,P,l)}},0);for(let m of u)m.finish()}updateGutters(a){let l=a.startState.facet(lr),u=a.state.facet(lr),m=a.docChanged||a.heightChanged||a.viewportChanged||!Et.Xs.eq(a.startState.facet($n),a.state.facet($n),a.view.viewport.from,a.view.viewport.to);if(l==u)for(let P of this.gutters)P.update(a)&&(m=!0);else{m=!0;let P=[];for(let b of u){let R=l.indexOf(b);R<0?P.push(new Or(this.view,b)):(this.gutters[R].update(a),P.push(this.gutters[R]))}for(let b of this.gutters)b.dom.remove();for(let b of P)this.dom.appendChild(b.dom);this.gutters=P}return m}destroy(){this.dom.remove()}},{provide:v.BF.scrollMargins.from(a=>a.gutters.length==0||!a.fixed?null:a.view.textDirection==v.Nm.LTR?{left:a.dom.offsetWidth}:{right:a.dom.offsetWidth})});function Pn(a){return Array.isArray(a)?a:[a]}function Jn(a,l,u){for(;a.value&&a.from<=u;)a.from==u&&l.push(a.value),a.next()}class Ps{constructor(l,u){this.gutter=l,this.localMarkers=[],this.i=0,this.height=0,this.cursor=Et.Xs.iter(l.markers,u.from)}line(l,u,m){this.localMarkers.length&&(this.localMarkers=[]),Jn(this.cursor,this.localMarkers,u.from);let P=m.length?this.localMarkers.concat(m):this.localMarkers,b=this.gutter.config.lineMarker(l,u,P);b&&P.unshift(b);let R=this.gutter;if(P.length==0&&!R.config.renderEmptyElements)return;let te=u.top-this.height;if(this.i==R.elements.length){let oe=new bs(l,u.height,te,P);R.elements.push(oe),R.dom.appendChild(oe.dom)}else{let oe=R.elements[this.i];bn(P,oe.markers)&&(P=oe.markers),oe.update(l,u.height,te,P)}this.height=u.bottom,this.i++}finish(){let l=this.gutter;for(;l.elements.length>this.i;)l.dom.removeChild(l.elements.pop().dom)}}class Or{constructor(l,u){this.view=l,this.config=u,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let m in u.domEventHandlers)this.dom.addEventListener(m,P=>{let b=l.visualLineAtHeight(P.clientY,l.contentDOM.getBoundingClientRect().top);u.domEventHandlers[m](l,b,P)&&P.preventDefault()});this.markers=Pn(u.markers(l)),u.initialSpacer&&(this.spacer=new bs(l,0,0,[u.initialSpacer(l)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(l){let u=this.markers;if(this.markers=Pn(this.config.markers(l.view)),this.spacer&&this.config.updateSpacer){let P=this.config.updateSpacer(this.spacer.markers[0],l);P!=this.spacer.markers[0]&&this.spacer.update(l.view,0,0,[P])}let m=l.view.viewport;return!Et.Xs.eq(this.markers,u,m.from,m.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(l):!1)}}class bs{constructor(l,u,m,P){this.height=-1,this.above=0,this.dom=document.createElement("div"),this.update(l,u,m,P)}update(l,u,m,P){if(this.height!=u&&(this.dom.style.height=(this.height=u)+"px"),this.above!=m&&(this.dom.style.marginTop=(this.above=m)?m+"px":""),this.markers!=P){this.markers=P;for(let R;R=this.dom.lastChild;)R.remove();let b="cm-gutterElement";for(let R of P){R.toDOM&&this.dom.appendChild(R.toDOM(l));let te=R.elementClass;te&&(b+=" "+te)}this.dom.className=b}}}function bn(a,l){if(a.length!=l.length)return!1;for(let u=0;u<a.length;u++)if(!a[u].compare(l[u]))return!1;return!0}const Ft=le.r$.define(),ji=le.r$.define({combine(a){return(0,le.BO)(a,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(l,u){let m=Object.assign({},l);for(let P in u){let b=m[P],R=u[P];m[P]=b?(te,oe,we)=>b(te,oe,we)||R(te,oe,we):R}return m}})}});class Wi extends vi{constructor(l){super();this.number=l}eq(l){return this.number==l.number}toDOM(){return document.createTextNode(this.number)}}function Ei(a,l){return a.state.facet(ji).formatNumber(l,a.state)}const Mr=lr.compute([ji],a=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(l){return l.state.facet(Ft)},lineMarker(l,u,m){return m.some(P=>P.toDOM)?null:new Wi(Ei(l,l.state.doc.lineAt(u.from).number))},lineMarkerChange:l=>l.startState.facet(ji)!=l.state.facet(ji),initialSpacer(l){return new Wi(Ei(l,Wr(l.state.doc.lines)))},updateSpacer(l,u){let m=Ei(u.view,Wr(u.view.state.doc.lines));return m==l.number?l:new Wi(m)},domEventHandlers:a.facet(ji).domEventHandlers}));function Nr(a={}){return[ji.of(a),Fn(),Mr]}function Wr(a){let l=9;for(;l<a;)l=l*10+9;return l}const di=new class extends vi{constructor(){super(...arguments);this.elementClass="cm-activeLineGutter"}},Me=null;function Br(){return Me}function wn(a,l){let u=l.mapPos(a.from,1),m=l.mapPos(a.to,-1);return u>=m?void 0:{from:u,to:m}}const _r=le.Py.define({map:wn}),er=le.Py.define({map:wn});function Li(a){let l=[];for(let{head:u}of a.state.selection.ranges)l.some(m=>m.from<=u&&m.to>=u)||l.push(a.visualLineAt(u));return l}const Si=le.QQ.define({create(){return v.p.none},update(a,l){a=a.map(l.changes);for(let u of l.effects)u.is(_r)&&!Hn(a,u.value.from,u.value.to)?a=a.update({add:[es.range(u.value.from,u.value.to)]}):u.is(er)&&(a=a.update({filter:(m,P)=>u.value.from!=m||u.value.to!=P,filterFrom:u.value.from,filterTo:u.value.to}));if(l.selection){let u=!1,{head:m}=l.selection.main;a.between(m,m,(P,b)=>{P<m&&b>m&&(u=!0)}),u&&(a=a.update({filterFrom:m,filterTo:m,filter:(P,b)=>b<=m||P>=m}))}return a},provide:a=>v.tk.decorations.from(a)});function ws(a){return a.field(Si,!1)||RangeSet.empty}function tr(a,l,u){var m;let P=null;return(m=a.field(Si,!1))===null||m===void 0||m.between(l,u,(b,R)=>{(!P||P.from>b)&&(P={from:b,to:R})}),P}function Hn(a,l,u){let m=!1;return a.between(l,l,(P,b)=>{P==l&&b==u&&(m=!0)}),m}function yn(a,l){return a.field(Si,!1)?l:l.concat(le.Py.appendConfig.of(ei()))}const Fr=a=>{for(let l of Li(a)){let u=(0,Ze.Fw)(a.state,l.from,l.to);if(u)return a.dispatch({effects:yn(a.state,[_r.of(u),xn(a,u)])}),!0}return!1},Kn=a=>{if(!a.state.field(Si,!1))return!1;let l=[];for(let u of Li(a)){let m=tr(a.state,u.from,u.to);m&&l.push(er.of(m),xn(a,m,!1))}return l.length&&a.dispatch({effects:l}),l.length>0};function xn(a,l,u=!0){let m=a.state.doc.lineAt(l.from).number,P=a.state.doc.lineAt(l.to).number;return v.tk.announce.of(`${a.state.phrase(u?"Folded lines":"Unfolded lines")} ${m} ${a.state.phrase("to")} ${P}.`)}const _i=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Fr},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:Kn},{key:"Ctrl-Alt-[",run:a=>{let{state:l}=a,u=[];for(let m=0;m<l.doc.length;){let P=a.visualLineAt(m),b=(0,Ze.Fw)(l,P.from,P.to);b&&u.push(_r.of(b)),m=(b?a.visualLineAt(b.to):P).to+1}return u.length&&a.dispatch({effects:yn(a.state,u)}),!!u.length}},{key:"Ctrl-Alt-]",run:a=>{let l=a.state.field(Si,!1);if(!l||!l.size)return!1;let u=[];return l.between(0,a.state.doc.length,(m,P)=>{u.push(er.of({from:m,to:P}))}),a.dispatch({effects:u}),!0}}],At={placeholderDOM:null,placeholderText:"\u2026"},Sn=le.r$.define({combine(a){return(0,le.BO)(a,At)}});function ei(a){let l=[Si,ts];return a&&l.push(Sn.of(a)),l}const es=v.p.replace({widget:new class extends v.l9{ignoreEvents(){return!1}toDOM(a){let{state:l}=a,u=l.facet(Sn),m=b=>{let R=a.visualLineAt(a.posAtDOM(b.target)),te=tr(a.state,R.from,R.to);te&&a.dispatch({effects:er.of(te)}),b.preventDefault()};if(u.placeholderDOM)return u.placeholderDOM(a,m);let P=document.createElement("span");return P.textContent=u.placeholderText,P.setAttribute("aria-label",l.phrase("folded code")),P.title=l.phrase("unfold"),P.className="cm-foldPlaceholder",P.onclick=m,P}}}),Pi={openText:"\u2304",closedText:"\u203A",markerDOM:null};class Jt extends vi{constructor(l,u){super();this.config=l,this.open=u}eq(l){return this.config==l.config&&this.open==l.open}toDOM(l){if(this.config.markerDOM)return this.config.markerDOM(this.open);let u=document.createElement("span");return u.textContent=this.open?this.config.openText:this.config.closedText,u.title=l.state.phrase(this.open?"Fold line":"Unfold line"),u}}function Ss(a={}){let l=Object.assign(Object.assign({},Pi),a),u=new Jt(l,!0),m=new Jt(l,!1),P=v.lg.fromClass(class{constructor(b){this.from=b.viewport.from,this.markers=this.buildMarkers(b)}update(b){(b.docChanged||b.viewportChanged||b.startState.facet(Ze.dK)!=b.state.facet(Ze.dK)||b.startState.field(Si,!1)!=b.state.field(Si,!1))&&(this.markers=this.buildMarkers(b.view))}buildMarkers(b){let R=new Et.f_;return b.viewportLines(te=>{let oe=tr(b.state,te.from,te.to)?m:(0,Ze.Fw)(b.state,te.from,te.to)?u:null;oe&&R.add(te.from,te.from,oe)}),R.finish()}});return[P,Qs({class:"cm-foldGutter",markers(b){var R;return((R=b.plugin(P))===null||R===void 0?void 0:R.markers)||Et.Xs.empty},initialSpacer(){return new Jt(l,!1)},domEventHandlers:{click:(b,R)=>{let te=tr(b.state,R.from,R.to);if(te)return b.dispatch({effects:er.of(te)}),!0;let oe=(0,Ze.Fw)(b.state,R.from,R.to);return oe?(b.dispatch({effects:_r.of(oe)}),!0):!1}}}),ei()]}const ts=v.tk.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),Jr=a=>{let l=ir(a.state);return l.line?ks(a):l.block?Rr(a):!1};function Ce(a,l){return({state:u,dispatch:m})=>{let P=a(l,u.selection.ranges,u);return P?(m(u.update(P)),!0):!1}}const ks=Ce(Hr,0),As=null,Xs=null,Rr=Ce(Xn,0),ki=null,Di=null,kn=[{key:"Mod-/",run:Jr},{key:"Alt-A",run:Rr}];function ir(a,l=a.selection.main.head){let u=a.languageDataAt("commentTokens",l);return u.length?u[0]:{}}const hr=50;function cr(a,{open:l,close:u},m,P){let b=a.sliceDoc(m-hr,m),R=a.sliceDoc(P,P+hr),te=/\s*$/.exec(b)[0].length,oe=/^\s*/.exec(R)[0].length,we=b.length-te;if(b.slice(we-l.length,we)==l&&R.slice(oe,oe+u.length)==u)return{open:{pos:m-te,margin:te&&1},close:{pos:P+oe,margin:oe&&1}};let _e,ct;P-m<=2*hr?_e=ct=a.sliceDoc(m,P):(_e=a.sliceDoc(m,m+hr),ct=a.sliceDoc(P-hr,P));let Ot=/^\s*/.exec(_e)[0].length,It=/\s*$/.exec(ct)[0].length,jt=ct.length-It-u.length;return _e.slice(Ot,Ot+l.length)==l&&ct.slice(jt,jt+u.length)==u?{open:{pos:m+Ot+l.length,margin:/\s/.test(_e.charAt(Ot+l.length))?1:0},close:{pos:P-It-u.length,margin:/\s/.test(ct.charAt(jt-1))?1:0}}:null}function Xn(a,l,u){let m=l.map(b=>ir(u,b.from).block);if(!m.every(b=>b))return null;let P=l.map((b,R)=>cr(u,m[R],b.from,b.to));if(a!=2&&!P.every(b=>b)){let b=0;return u.changeByRange(R=>{let{open:te,close:oe}=m[b++];if(P[b])return{range:R};let we=te.length+1;return{changes:[{from:R.from,insert:te+" "},{from:R.to,insert:" "+oe}],range:le.jT.range(R.anchor+we,R.head+we)}})}else if(a!=1&&P.some(b=>b)){let b=[];for(let R=0,te;R<P.length;R++)if(te=P[R]){let oe=m[R],{open:we,close:_e}=te;b.push({from:we.pos-oe.open.length,to:we.pos+we.margin},{from:_e.pos-_e.margin,to:_e.pos+oe.close.length})}return{changes:b}}return null}function Hr(a,l,u){let m=[],P=-1;for(let{from:b,to:R}of l){let te=m.length,oe=1e9;for(let we=b;we<=R;){let _e=u.doc.lineAt(we);if(_e.from>P&&(b==R||R>_e.from)){P=_e.from;let ct=ir(u,we).line;if(!ct)continue;let Ot=/^\s*/.exec(_e.text)[0].length,It=Ot==_e.length,jt=_e.text.slice(Ot,Ot+ct.length)==ct?Ot:-1;Ot<_e.text.length&&Ot<oe&&(oe=Ot),m.push({line:_e,comment:jt,token:ct,indent:Ot,empty:It,single:!1})}we=_e.to+1}if(oe<1e9)for(let we=te;we<m.length;we++)m[we].indent<m[we].line.text.length&&(m[we].indent=oe);m.length==te+1&&(m[te].single=!0)}if(a!=2&&m.some(b=>b.comment<0&&(!b.empty||b.single))){let b=[];for(let{line:te,token:oe,indent:we,empty:_e,single:ct}of m)(ct||!_e)&&b.push({from:te.from+we,insert:oe+" "});let R=u.changes(b);return{changes:R,selection:u.selection.map(R,1)}}else if(a!=1&&m.some(b=>b.comment>=0)){let b=[];for(let{line:R,comment:te,token:oe}of m)if(te>=0){let we=R.from+te,_e=we+oe.length;R.text[_e-R.from]==" "&&_e++,b.push({from:we,to:_e})}return{changes:b}}return null}const qr=le.q6.define(),Tn=le.q6.define(),is=le.r$.define(),Mi=le.r$.define({combine(a){return(0,le.BO)(a,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}}),Zr=le.QQ.define({create(){return pi.empty},update(a,l){let u=l.state.facet(Mi),m=l.annotation(qr);if(m){let oe=ai.fromTransaction(l),we=m.side,_e=we==0?a.undone:a.done;return oe?_e=tn(_e,_e.length,u.minDepth,oe):_e=Wn(_e,l.startState.selection),new pi(we==0?m.rest:_e,we==0?_e:m.rest)}let P=l.annotation(Tn);if((P=="full"||P=="before")&&(a=a.isolate()),l.annotation(le.YW.addToHistory)===!1)return l.changes.empty?a:a.addMapping(l.changes.desc);let b=ai.fromTransaction(l),R=l.annotation(le.YW.time),te=l.annotation(le.YW.userEvent);return b?a=a.addChanges(b,R,te,u.newGroupDelay,u.minDepth):l.selection&&(a=a.addSelection(l.startState.selection,R,te,u.newGroupDelay)),(P=="full"||P=="after")&&(a=a.isolate()),a},toJSON(a){return{done:a.done.map(l=>l.toJSON()),undone:a.undone.map(l=>l.toJSON())}},fromJSON(a){return new pi(a.done.map(ai.fromJSON),a.undone.map(ai.fromJSON))}});function vn(a={}){return[Zr,Mi.of(a),v.tk.domEventHandlers({beforeinput(l,u){return l.inputType=="historyUndo"?en(u):l.inputType=="historyRedo"?Ci(u):!1}})]}const Kr=null;function ur(a,l){return function({state:u,dispatch:m}){let P=u.field(Zr,!1);if(!P)return!1;let b=P.pop(a,u,l);return b?(m(b),!0):!1}}const en=ur(0,!1),Ci=ur(1,!1),fr=ur(0,!0),Ts=ur(1,!0);function rs(a){return function(l){let u=l.field(Zr,!1);if(!u)return 0;let m=a==0?u.done:u.undone;return m.length-(m.length&&!m[0].changes?1:0)}}const ns=null,js=null;class ai{constructor(l,u,m,P,b){this.changes=l,this.effects=u,this.mapped=m,this.startSelection=P,this.selectionsAfter=b}setSelAfter(l){return new ai(this.changes,this.effects,this.mapped,this.startSelection,l)}toJSON(){var l,u,m;return{changes:(l=this.changes)===null||l===void 0?void 0:l.toJSON(),mapped:(u=this.mapped)===null||u===void 0?void 0:u.toJSON(),startSelection:(m=this.startSelection)===null||m===void 0?void 0:m.toJSON(),selectionsAfter:this.selectionsAfter.map(P=>P.toJSON())}}static fromJSON(l){return new ai(l.changes&&le.as.fromJSON(l.changes),[],l.mapped&&le.n0.fromJSON(l.mapped),l.startSelection&&le.jT.fromJSON(l.startSelection),l.selectionsAfter.map(le.jT.fromJSON))}static fromTransaction(l){let u=li;for(let m of l.startState.facet(is)){let P=m(l);P.length&&(u=u.concat(P))}return!u.length&&l.changes.empty?null:new ai(l.changes.invert(l.startState.doc),u,void 0,l.startState.selection,li)}static selection(l){return new ai(void 0,li,void 0,void 0,l)}}function tn(a,l,u,m){let P=l+1>u+20?l-u-1:0,b=a.slice(P,l);return b.push(m),b}function ss(a,l){let u=[],m=!1;return a.iterChangedRanges((P,b)=>u.push(P,b)),l.iterChangedRanges((P,b,R,te)=>{for(let oe=0;oe<u.length;){let we=u[oe++],_e=u[oe++];te>=we&&R<=_e&&(m=!0)}}),m}function rn(a,l){return a.ranges.length==l.ranges.length&&a.ranges.filter((u,m)=>u.empty!=l.ranges[m].empty).length===0}function dr(a,l){return a.length?l.length?a.concat(l):a:l}const li=[],Yr=200;function Wn(a,l){if(a.length){let u=a[a.length-1],m=u.selectionsAfter.slice(Math.max(0,u.selectionsAfter.length-Yr));return m.length&&m[m.length-1].eq(l)?a:(m.push(l),tn(a,a.length-1,1e9,u.setSelAfter(m)))}else return[ai.selection([l])]}function pr(a){let l=a[a.length-1],u=a.slice();return u[a.length-1]=l.setSelAfter(l.selectionsAfter.slice(0,l.selectionsAfter.length-1)),u}function Dt(a,l){if(!a.length)return a;let u=a.length,m=li;for(;u;){let P=Cr(a[u-1],l,m);if(P.changes&&!P.changes.empty||P.effects.length){let b=a.slice(0,u);return b[u-1]=P,b}else l=P.mapped,u--,m=P.selectionsAfter}return m.length?[ai.selection(m)]:li}function Cr(a,l,u){let m=dr(a.selectionsAfter.length?a.selectionsAfter.map(te=>te.map(l)):li,u);if(!a.changes)return ai.selection(m);let P=a.changes.map(l),b=l.mapDesc(a.changes,!0),R=a.mapped?a.mapped.composeDesc(b):b;return new ai(P,le.Py.mapEffects(a.effects,l),R,a.startSelection.map(b),m)}class pi{constructor(l,u,m=0,P=void 0){this.done=l,this.undone=u,this.prevTime=m,this.prevUserEvent=P}isolate(){return this.prevTime?new pi(this.done,this.undone):this}addChanges(l,u,m,P,b){let R=this.done,te=R[R.length-1];return te&&te.changes&&!te.changes.empty&&l.changes&&(!te.selectionsAfter.length&&u-this.prevTime<P&&ss(te.changes,l.changes)||m=="input.type.compose")?R=tn(R,R.length-1,b,new ai(l.changes.compose(te.changes),dr(l.effects,te.effects),te.mapped,te.startSelection,li)):R=tn(R,R.length,b,l),new pi(R,li,u,m)}addSelection(l,u,m,P){let b=this.done.length?this.done[this.done.length-1].selectionsAfter:li;return b.length>0&&u-this.prevTime<P&&m==this.prevUserEvent&&m&&/^select($|\.)/.test(m)&&rn(b[b.length-1],l)?this:new pi(Wn(this.done,l),this.undone,u,m)}addMapping(l){return new pi(Dt(this.done,l),Dt(this.undone,l),this.prevTime,this.prevUserEvent)}pop(l,u,m){let P=l==0?this.done:this.undone;if(P.length==0)return null;let b=P[P.length-1];if(m&&b.selectionsAfter.length)return u.update({selection:b.selectionsAfter[b.selectionsAfter.length-1],annotations:qr.of({side:l,rest:pr(P)}),userEvent:l==0?"select.undo":"select.redo"});if(b.changes){let R=P.length==1?li:P.slice(0,P.length-1);return b.mapped&&(R=Dt(R,b.mapped)),u.update({changes:b.changes,selection:b.startSelection,effects:b.effects,annotations:qr.of({side:l,rest:R}),filter:!1,userEvent:l==0?"undo":"redo"})}else return null}}pi.empty=new pi(li,li);const qt=[{key:"Mod-z",run:en,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ci,preventDefault:!0},{key:"Mod-u",run:fr,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Ts,preventDefault:!0}];var _n=Ne("./node_modules/@codemirror/autocomplete/dist/index.js");const nn=le.r$.define({combine(a){let l,u;for(let m of a)l=l||m.topContainer,u=u||m.bottomContainer;return{topContainer:l,bottomContainer:u}}});function zr(a){return a?[nn.of(a)]:[]}function Ni(a,l){let u=a.plugin(bi),m=u?u.specs.indexOf(l):-1;return m>-1?u.panels[m]:null}const bi=v.lg.fromClass(class{constructor(a){this.input=a.state.facet(Ur),this.specs=this.input.filter(u=>u),this.panels=this.specs.map(u=>u(a));let l=a.state.facet(nn);this.top=new Ir(a,!0,l.topContainer),this.bottom=new Ir(a,!1,l.bottomContainer),this.top.sync(this.panels.filter(u=>u.top)),this.bottom.sync(this.panels.filter(u=>!u.top));for(let u of this.panels)u.dom.classList.add("cm-panel"),u.mount&&u.mount()}update(a){let l=a.state.facet(nn);this.top.container!=l.topContainer&&(this.top.sync([]),this.top=new Ir(a.view,!0,l.topContainer)),this.bottom.container!=l.bottomContainer&&(this.bottom.sync([]),this.bottom=new Ir(a.view,!1,l.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let u=a.state.facet(Ur);if(u!=this.input){let m=u.filter(oe=>oe),P=[],b=[],R=[],te=[];for(let oe of m){let we=this.specs.indexOf(oe),_e;we<0?(_e=oe(a.view),te.push(_e)):(_e=this.panels[we],_e.update&&_e.update(a)),P.push(_e),(_e.top?b:R).push(_e)}this.specs=m,this.panels=P,this.top.sync(b),this.bottom.sync(R);for(let oe of te)oe.dom.classList.add("cm-panel"),oe.mount&&oe.mount()}else for(let m of this.panels)m.update&&m.update(a)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:v.BF.scrollMargins.from(a=>({top:a.top.scrollMargin(),bottom:a.bottom.scrollMargin()}))});class Ir{constructor(l,u,m){this.view=l,this.top=u,this.container=m,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(l){this.panels=l,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let u=this.container||this.view.dom;u.insertBefore(this.dom,this.top?u.firstChild:null)}let l=this.dom.firstChild;for(let u of this.panels)if(u.dom.parentNode==this.dom){for(;l!=u.dom;)l=mr(l);l=l.nextSibling}else this.dom.insertBefore(u.dom,l);for(;l;)l=mr(l)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let l of this.classes.split(" "))l&&this.container.classList.remove(l);for(let l of(this.classes=this.view.themeClasses).split(" "))l&&this.container.classList.add(l)}}}function mr(a){let l=a.nextSibling;return a.remove(),l}const Rn=v.tk.baseTheme({".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"}}),Ur=le.r$.define({enables:[bi,Rn]});function ii(){var a=arguments[0];typeof a=="string"&&(a=document.createElement(a));var l=1,u=arguments[1];if(u&&typeof u=="object"&&u.nodeType==null&&!Array.isArray(u)){for(var m in u)if(Object.prototype.hasOwnProperty.call(u,m)){var P=u[m];typeof P=="string"?a.setAttribute(m,P):P!=null&&(a[m]=P)}l++}for(;l<arguments.length;l++)sn(a,arguments[l]);return a}function sn(a,l){if(typeof l=="string")a.appendChild(document.createTextNode(l));else if(l!=null)if(l.nodeType!=null)a.appendChild(l);else if(Array.isArray(l))for(var u=0;u<l.length;u++)sn(a,l[u]);else throw new RangeError("Unsupported child node: "+l)}const qn=typeof String.prototype.normalize=="function"?a=>a.normalize("NFKD"):a=>a;class mi{constructor(l,u,m=0,P=l.length,b){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=l.iterRange(m,P),this.bufferStart=m,this.normalize=b?R=>b(qn(R)):qn,this.query=this.normalize(u)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return(0,Re.gm)(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let l=this.peek();if(l<0)return this.done=!0,this;let u=(0,Re.bg)(l),m=this.bufferStart+this.bufferPos;this.bufferPos+=(0,Re.nZ)(l);let P=this.normalize(u);for(let b=0,R=m;;b++){let te=P.charCodeAt(b),oe=this.match(te,R);if(oe)return this.value=oe,this;if(b==P.length-1)break;R==m&&b<u.length&&u.charCodeAt(b)==te&&R++}}}match(l,u){let m=null;for(let P=0;P<this.matches.length;P+=2){let b=this.matches[P],R=!1;this.query.charCodeAt(b)==l&&(b==this.query.length-1?m={from:this.matches[P+1],to:u+1}:(this.matches[P]++,R=!0)),R||(this.matches.splice(P,2),P-=2)}return this.query.charCodeAt(0)==l&&(this.query.length==1?m={from:u,to:u+1}:this.matches.push(1,u)),m}}typeof Symbol!="undefined"&&(mi.prototype[Symbol.iterator]=function(){return this});const on={from:-1,to:-1,match:/.*/.exec("")},Zn="gm"+(/x/.unicode==null?"":"u");class Yn{constructor(l,u,m,P=0,b=l.length){if(this.to=b,this.curLine="",this.done=!1,this.value=on,/\\[sWDnr]|\n|\r|\[\^/.test(u))return new vs(l,u,m,P,b);this.re=new RegExp(u,Zn+((m==null?void 0:m.ignoreCase)?"i":"")),this.iter=l.iter();let R=l.lineAt(P);this.curLineStart=R.from,this.matchPos=P,this.getLine(this.curLineStart)}getLine(l){this.iter.next(l),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let l=this.matchPos-this.curLineStart;;){this.re.lastIndex=l;let u=this.matchPos<=this.to&&this.re.exec(this.curLine);if(u){let m=this.curLineStart+u.index,P=m+u[0].length;if(this.matchPos=P+(m==P?1:0),m==this.curLine.length&&this.nextLine(),m<P||m>this.value.to)return this.value={from:m,to:P,match:u},this;l=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),l=0;else return this.done=!0,this}}}const Cn=new WeakMap;class gr{constructor(l,u){this.from=l,this.text=u}get to(){return this.from+this.text.length}static get(l,u,m){let P=Cn.get(l);if(!P||P.from>=m||P.to<=u){let te=new gr(u,l.sliceString(u,m));return Cn.set(l,te),te}if(P.from==u&&P.to==m)return P;let{text:b,from:R}=P;return R>u&&(b=l.sliceString(u,R)+b,R=u),P.to<m&&(b+=l.sliceString(P.to,m)),Cn.set(l,new gr(R,b)),new gr(u,b.slice(u-R,m-R))}}class vs{constructor(l,u,m,P,b){this.text=l,this.to=b,this.done=!1,this.value=on,this.matchPos=P,this.re=new RegExp(u,Zn+((m==null?void 0:m.ignoreCase)?"i":"")),this.flat=gr.get(l,P,this.chunkEnd(P+5e3))}chunkEnd(l){return l>=this.to?this.to:this.text.lineAt(l).to}next(){for(;;){let l=this.re.lastIndex=this.matchPos-this.flat.from,u=this.re.exec(this.flat.text);if(u&&!u[0]&&u.index==l&&(this.re.lastIndex=l+1,u=this.re.exec(this.flat.text)),u&&this.flat.to<this.to&&u.index+u[0].length>this.flat.text.length-10&&(u=null),u){let m=this.flat.from+u.index,P=m+u[0].length;return this.value={from:m,to:P,match:u},this.matchPos=P+(m==P?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=gr.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol!="undefined"&&(Yn.prototype[Symbol.iterator]=vs.prototype[Symbol.iterator]=function(){return this});function os(a){try{return new RegExp(a,Zn),!0}catch(l){return!1}}function zn(a){let l=ii("input",{class:"cm-textfield",name:"line"}),u=ii("form",{class:"cm-gotoLine",onkeydown:P=>{P.keyCode==27?(P.preventDefault(),a.dispatch({effects:Qr.of(!1)}),a.focus()):P.keyCode==13&&(P.preventDefault(),m())},onsubmit:P=>{P.preventDefault(),m()}},ii("label",a.state.phrase("Go to line"),": ",l)," ",ii("button",{class:"cm-button",type:"submit"},a.state.phrase("go")));function m(){let P=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(l.value);if(!P)return;let{state:b}=a,R=b.doc.lineAt(b.selection.main.head),[,te,oe,we,_e]=P,ct=we?+we.slice(1):0,Ot=oe?+oe:R.number;if(oe&&_e){let jt=Ot/100;te&&(jt=jt*(te=="-"?-1:1)+R.number/b.doc.lines),Ot=Math.round(b.doc.lines*jt)}else oe&&te&&(Ot=Ot*(te=="-"?-1:1)+R.number);let It=b.doc.line(Math.max(1,Math.min(b.doc.lines,Ot)));a.dispatch({effects:Qr.of(!1),selection:le.jT.cursor(It.from+Math.max(0,Math.min(ct,It.length))),scrollIntoView:!0}),a.focus()}return{dom:u,pos:-10}}const Qr=le.Py.define(),as=le.QQ.define({create(){return!0},update(a,l){for(let u of l.effects)u.is(Qr)&&(a=u.value);return a},provide:a=>Ur.from(a,l=>l?zn:null)}),ls=a=>{let l=Ni(a,zn);if(!l){let u=[Qr.of(!0)];a.state.field(as,!1)==null&&u.push(le.Py.appendConfig.of([as,Os])),a.dispatch({effects:u}),l=Ni(a,zn)}return l&&l.dom.querySelector("input").focus(),!0},Os=v.tk.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),In={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100},Es=le.r$.define({combine(a){return(0,le.BO)(a,In,{highlightWordAroundCursor:(l,u)=>l||u,minSelectionLength:Math.min,maxMatches:Math.min})}});function Ls(a){let l=[_s,Vn];return a&&l.push(Es.of(a)),l}const Un=v.p.mark({class:"cm-selectionMatch"}),Ws=v.p.mark({class:"cm-selectionMatch cm-selectionMatch-main"}),Vn=v.lg.fromClass(class{constructor(a){this.decorations=this.getDe