@pyscript/core 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codemirror-Bt1qaGaC.js +2 -0
- package/dist/codemirror-Bt1qaGaC.js.map +1 -0
- package/dist/{codemirror_commands-DpfBW1Yg.js → codemirror_commands-CQhRq29F.js} +2 -2
- package/dist/{codemirror_commands-DpfBW1Yg.js.map → codemirror_commands-CQhRq29F.js.map} +1 -1
- package/dist/codemirror_lang-python-Be_ZrPIi.js +2 -0
- package/dist/codemirror_lang-python-Be_ZrPIi.js.map +1 -0
- package/dist/{codemirror_language-en2b9geg.js → codemirror_language-15oJ2_xe.js} +2 -2
- package/dist/{codemirror_language-en2b9geg.js.map → codemirror_language-15oJ2_xe.js.map} +1 -1
- package/dist/{codemirror_state-BCMMU3_u.js → codemirror_state-BKbyfKsm.js} +2 -2
- package/dist/{codemirror_state-BCMMU3_u.js.map → codemirror_state-BKbyfKsm.js.map} +1 -1
- package/dist/codemirror_view-ZYshhfdH.js +2 -0
- package/dist/codemirror_view-ZYshhfdH.js.map +1 -0
- package/dist/core-D-4vWlgD.js +3 -0
- package/dist/core-D-4vWlgD.js.map +1 -0
- package/dist/core.js +1 -1
- package/dist/{deprecations-manager-Dp5JCXN_.js → deprecations-manager-DiDuet8A.js} +2 -2
- package/dist/{deprecations-manager-Dp5JCXN_.js.map → deprecations-manager-DiDuet8A.js.map} +1 -1
- package/dist/{error-DDUUH_dr.js → error-BppXsD3P.js} +2 -2
- package/dist/{error-DDUUH_dr.js.map → error-BppXsD3P.js.map} +1 -1
- package/dist/{index-B1rGWcUY.js → index-DvAsRi-_.js} +2 -2
- package/dist/{index-B1rGWcUY.js.map → index-DvAsRi-_.js.map} +1 -1
- package/dist/py-editor-BAF4-6sB.js +2 -0
- package/dist/py-editor-BAF4-6sB.js.map +1 -0
- package/dist/{py-terminal-DSeGkEXM.js → py-terminal-ZUucIGA-.js} +2 -2
- package/dist/{py-terminal-DSeGkEXM.js.map → py-terminal-ZUucIGA-.js.map} +1 -1
- package/dist/toml-DiUM0_qs.js +3 -0
- package/dist/toml-DiUM0_qs.js.map +1 -0
- package/dist/xterm_addon-fit--gyF3PcZ.js.map +1 -1
- package/dist.zip +0 -0
- package/package.json +9 -9
- package/src/3rd-party/xterm_addon-fit.js +1 -1
- package/src/fetch.js +5 -2
- package/src/plugins/py-editor.js +36 -21
- package/types/fetch.d.ts +1 -2
- package/dist/codemirror-CFujIWTg.js +0 -2
- package/dist/codemirror-CFujIWTg.js.map +0 -1
- package/dist/codemirror_lang-python-XdbwljYF.js +0 -2
- package/dist/codemirror_lang-python-XdbwljYF.js.map +0 -1
- package/dist/codemirror_view-L6gkqEE1.js +0 -2
- package/dist/codemirror_view-L6gkqEE1.js.map +0 -1
- package/dist/core-Cvh_XoqM.js +0 -3
- package/dist/core-Cvh_XoqM.js.map +0 -1
- package/dist/py-editor-DS0UhYCj.js +0 -2
- package/dist/py-editor-DS0UhYCj.js.map +0 -1
@@ -0,0 +1,2 @@
|
|
1
|
+
import{V as e,a as t,E as i,b as s,c as n,r as o,h as r,W as a,d as l,e as c,f as h,i as d,j as u,m as f,n as m,o as p,k as g}from"./codemirror_view-ZYshhfdH.js";import{codePointAt as v,fromCodePoint as x,codePointSize as b,StateEffect as w,Facet as y,combineConfig as k,CharCategory as S,EditorSelection as C,Prec as M,StateField as A,EditorState as L,findClusterBreak as q,RangeSetBuilder as R}from"./codemirror_state-BKbyfKsm.js";import{k as D,l as W,m as F,n as I,o as P,p as E}from"./codemirror_language-15oJ2_xe.js";import{history as $,defaultKeymap as T,historyKeymap as O}from"./codemirror_commands-CQhRq29F.js";import{a as z,b as B,d as j,e as _}from"./index-DvAsRi-_.js";function V(){var e=arguments[0];"string"==typeof e&&(e=document.createElement(e));var t=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var s in i)if(Object.prototype.hasOwnProperty.call(i,s)){var n=i[s];"string"==typeof n?e.setAttribute(s,n):null!=n&&(e[s]=n)}t++}for(;t<arguments.length;t++)H(e,arguments[t]);return e}function H(e,t){if("string"==typeof t)e.appendChild(document.createTextNode(t));else if(null==t);else if(null!=t.nodeType)e.appendChild(t);else{if(!Array.isArray(t))throw new RangeError("Unsupported child node: "+t);for(var i=0;i<t.length;i++)H(e,t[i])}}const N="function"==typeof String.prototype.normalize?e=>e.normalize("NFKD"):e=>e;class U{constructor(e,t,i=0,s=e.length,n,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=n?e=>n(N(e)):N,this.query=this.normalize(t)}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 v(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=x(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=b(e);let s=this.normalize(t);for(let e=0,n=i;;e++){let o=s.charCodeAt(e),r=this.match(o,n,this.bufferPos+this.bufferStart);if(e==s.length-1){if(r)return this.value=r,this;break}n==i&&e<t.length&&t.charCodeAt(e)==o&&n++}}}match(e,t,i){let s=null;for(let t=0;t<this.matches.length;t+=2){let n=this.matches[t],o=!1;this.query.charCodeAt(n)==e&&(n==this.query.length-1?s={from:this.matches[t+1],to:i}:(this.matches[t]++,o=!0)),o||(this.matches.splice(t,2),t-=2)}return this.query.charCodeAt(0)==e&&(1==this.query.length?s={from:t,to:i}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}"undefined"!=typeof Symbol&&(U.prototype[Symbol.iterator]=function(){return this});const K={from:-1,to:-1,match:/.*/.exec("")},Q="gm"+(null==/x/.unicode?"":"u");class G{constructor(e,t,i,s=0,n=e.length){if(this.text=e,this.to=n,this.curLine="",this.done=!1,this.value=K,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new J(e,t,i,s,n);this.re=new RegExp(t,Q+((null==i?void 0:i.ignoreCase)?"i":"")),this.test=null==i?void 0:i.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=X(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),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 e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let i=this.curLineStart+t.index,s=i+t[0].length;if(this.matchPos=X(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<s||i>this.value.to)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this;e=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length<this.to))return this.done=!0,this;this.nextLine(),e=0}}}}const Y=new WeakMap;class Z{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){let s=Y.get(e);if(!s||s.from>=i||s.to<=t){let s=new Z(t,e.sliceString(t,i));return Y.set(e,s),s}if(s.from==t&&s.to==i)return s;let{text:n,from:o}=s;return o>t&&(n=e.sliceString(t,o)+n,o=t),s.to<i&&(n+=e.sliceString(s.to,i)),Y.set(e,new Z(o,n)),new Z(t,n.slice(t-o,i-o))}}class J{constructor(e,t,i,s,n){this.text=e,this.to=n,this.done=!1,this.value=K,this.matchPos=X(e,s),this.re=new RegExp(t,Q+((null==i?void 0:i.ignoreCase)?"i":"")),this.test=null==i?void 0:i.test,this.flat=Z.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let e=this.flat.from+t.index,i=e+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(e,i,t)))return this.value={from:e,to:i,match:t},this.matchPos=X(this.text,i+(e==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Z.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function X(e,t){if(t>=e.length)return t;let i,s=e.lineAt(t);for(;t<s.to&&(i=s.text.charCodeAt(t-s.from))>=56320&&i<57344;)t++;return t}function ee(e){let t=V("input",{class:"cm-textfield",name:"line",value:String(e.state.doc.lineAt(e.state.selection.main.head).number)});function s(){let s=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(t.value);if(!s)return;let{state:n}=e,o=n.doc.lineAt(n.selection.main.head),[,r,a,l,c]=s,h=l?+l.slice(1):0,d=a?+a:o.number;if(a&&c){let e=d/100;r&&(e=e*("-"==r?-1:1)+o.number/n.doc.lines),d=Math.round(n.doc.lines*e)}else a&&r&&(d=d*("-"==r?-1:1)+o.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,d))),f=C.cursor(u.from+Math.max(0,Math.min(h,u.length)));e.dispatch({effects:[te.of(!1),i.scrollIntoView(f.from,{y:"center"})],selection:f}),e.focus()}return{dom:V("form",{class:"cm-gotoLine",onkeydown:t=>{27==t.keyCode?(t.preventDefault(),e.dispatch({effects:te.of(!1)}),e.focus()):13==t.keyCode&&(t.preventDefault(),s())},onsubmit:e=>{e.preventDefault(),s()}},V("label",e.state.phrase("Go to line"),": ",t)," ",V("button",{class:"cm-button",type:"submit"},e.state.phrase("go")))}}"undefined"!=typeof Symbol&&(G.prototype[Symbol.iterator]=J.prototype[Symbol.iterator]=function(){return this});const te=w.define(),ie=A.define({create:()=>!0,update(e,t){for(let i of t.effects)i.is(te)&&(e=i.value);return e},provide:e=>n.from(e,(e=>e?ee:null))}),se=i.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),ne={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},oe=y.define({combine:e=>k(e,ne,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})});function re(e){let t=[de,he];return e&&t.push(oe.of(e)),t}const ae=t.mark({class:"cm-selectionMatch"}),le=t.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function ce(e,t,i,s){return!(0!=i&&e(t.sliceDoc(i-1,i))==S.Word||s!=t.doc.length&&e(t.sliceDoc(s,s+1))==S.Word)}const he=e.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let i=e.state.facet(oe),{state:s}=e,n=s.selection;if(n.ranges.length>1)return t.none;let o,r=n.main,a=null;if(r.empty){if(!i.highlightWordAroundCursor)return t.none;let e=s.wordAt(r.head);if(!e)return t.none;a=s.charCategorizer(r.head),o=s.sliceDoc(e.from,e.to)}else{let e=r.to-r.from;if(e<i.minSelectionLength||e>200)return t.none;if(i.wholeWords){if(o=s.sliceDoc(r.from,r.to),a=s.charCategorizer(r.head),!ce(a,s,r.from,r.to)||!function(e,t,i,s){return e(t.sliceDoc(i,i+1))==S.Word&&e(t.sliceDoc(s-1,s))==S.Word}(a,s,r.from,r.to))return t.none}else if(o=s.sliceDoc(r.from,r.to),!o)return t.none}let l=[];for(let n of e.visibleRanges){let e=new U(s.doc,o,n.from,n.to);for(;!e.next().done;){let{from:n,to:o}=e.value;if((!a||ce(a,s,n,o))&&(r.empty&&n<=r.from&&o>=r.to?l.push(le.range(n,o)):(n>=r.to||o<=r.from)&&l.push(ae.range(n,o)),l.length>i.maxMatches))return t.none}}return t.set(l)}},{decorations:e=>e.decorations}),de=i.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}});const ue=y.define({combine:e=>k(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new je(e),scrollToMatch:e=>i.scrollIntoView(e)})});class fe{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||function(e){try{return new RegExp(e,Q),!0}catch(e){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,((e,t)=>"n"==t?"\n":"r"==t?"\r":"t"==t?"\t":"\\"))}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new we(this):new ge(this)}getCursor(e,t=0,i){let s=e.doc?e:L.create({doc:e});return null==i&&(i=s.doc.length),this.regexp?ve(this,s,t,i):pe(this,s,t,i)}}class me{constructor(e){this.spec=e}}function pe(e,t,i,s){return new U(t.doc,e.unquoted,i,s,e.caseSensitive?void 0:e=>e.toLowerCase(),e.wholeWord?(n=t.doc,o=t.charCategorizer(t.selection.main.head),(e,t,i,s)=>((s>e||s+i.length<t)&&(s=Math.max(0,e-2),i=n.sliceString(s,Math.min(n.length,t+2))),!(o(xe(i,e-s))==S.Word&&o(be(i,e-s))==S.Word||o(be(i,t-s))==S.Word&&o(xe(i,t-s))==S.Word))):void 0);var n,o}class ge extends me{constructor(e){super(e)}nextMatch(e,t,i){let s=pe(this.spec,e,i,e.doc.length).nextOverlapping();return s.done&&(s=pe(this.spec,e,0,t).nextOverlapping()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=i;;){let i=Math.max(t,s-1e4-this.spec.unquoted.length),n=pe(this.spec,e,i,s),o=null;for(;!n.nextOverlapping().done;)o=n.value;if(o)return o;if(i==t)return null;s-=1e4}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=pe(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let n=pe(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!n.next().done;)s(n.value.from,n.value.to)}}function ve(e,t,i,s){return new G(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:e.wholeWord?(n=t.charCategorizer(t.selection.main.head),(e,t,i)=>!i[0].length||(n(xe(i.input,i.index))!=S.Word||n(be(i.input,i.index))!=S.Word)&&(n(be(i.input,i.index+i[0].length))!=S.Word||n(xe(i.input,i.index+i[0].length))!=S.Word)):void 0},i,s);var n}function xe(e,t){return e.slice(q(e,t,!1),t)}function be(e,t){return e.slice(t,q(e,t))}class we extends me{nextMatch(e,t,i){let s=ve(this.spec,e,i,e.doc.length).next();return s.done&&(s=ve(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=1;;s++){let n=Math.max(t,i-1e4*s),o=ve(this.spec,e,n,i),r=null;for(;!o.next().done;)r=o.value;if(r&&(n==t||r.from>n+10))return r;if(n==t)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&\d+])/g,((t,i)=>"$"==i?"$":"&"==i?e.match[0]:"0"!=i&&+i<e.match.length?e.match[i]:t))}matchAll(e,t){let i=ve(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let n=ve(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!n.next().done;)s(n.value.from,n.value.to)}}const ye=w.define(),ke=w.define(),Se=A.define({create:e=>new Ce(Ee(e).create(),null),update(e,t){for(let i of t.effects)i.is(ye)?e=new Ce(i.value.create(),e.panel):i.is(ke)&&(e=new Ce(e.query,i.value?Pe:null));return e},provide:e=>n.from(e,(e=>e.panel))});class Ce{constructor(e,t){this.query=e,this.panel=t}}const Me=t.mark({class:"cm-searchMatch"}),Ae=t.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Le=e.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(Se))}update(e){let t=e.state.field(Se);(t!=e.startState.field(Se)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:e,panel:i}){if(!i||!e.spec.valid)return t.none;let{view:s}=this,n=new R;for(let t=0,i=s.visibleRanges,o=i.length;t<o;t++){let{from:r,to:a}=i[t];for(;t<o-1&&a>i[t+1].from-500;)a=i[++t].to;e.highlight(s.state,r,a,((e,t)=>{let i=s.state.selection.ranges.some((i=>i.from==e&&i.to==t));n.add(e,t,i?Ae:Me)}))}return n.finish()}},{decorations:e=>e.decorations});function qe(e){return t=>{let i=t.state.field(Se,!1);return i&&i.query.spec.valid?e(t,i):Oe(t)}}const Re=qe(((e,{query:t})=>{let{to:i}=e.state.selection.main,s=t.nextMatch(e.state,i,i);if(!s)return!1;let n=C.single(s.from,s.to),o=e.state.facet(ue);return e.dispatch({selection:n,effects:[Ne(e,s),o.scrollToMatch(n.main,e)],userEvent:"select.search"}),Te(e),!0})),De=qe(((e,{query:t})=>{let{state:i}=e,{from:s}=i.selection.main,n=t.prevMatch(i,s,s);if(!n)return!1;let o=C.single(n.from,n.to),r=e.state.facet(ue);return e.dispatch({selection:o,effects:[Ne(e,n),r.scrollToMatch(o.main,e)],userEvent:"select.search"}),Te(e),!0})),We=qe(((e,{query:t})=>{let i=t.matchAll(e.state,1e3);return!(!i||!i.length)&&(e.dispatch({selection:C.create(i.map((e=>C.range(e.from,e.to)))),userEvent:"select.search.matches"}),!0)})),Fe=qe(((e,{query:t})=>{let{state:s}=e,{from:n,to:o}=s.selection.main;if(s.readOnly)return!1;let r=t.nextMatch(s,n,n);if(!r)return!1;let a,l,c=[],h=[];if(r.from==n&&r.to==o&&(l=s.toText(t.getReplacement(r)),c.push({from:r.from,to:r.to,insert:l}),r=t.nextMatch(s,r.from,r.to),h.push(i.announce.of(s.phrase("replaced match on line $",s.doc.lineAt(n).number)+"."))),r){let t=0==c.length||c[0].from>=r.to?0:r.to-r.from-l.length;a=C.single(r.from-t,r.to-t),h.push(Ne(e,r)),h.push(s.facet(ue).scrollToMatch(a.main,e))}return e.dispatch({changes:c,selection:a,effects:h,userEvent:"input.replace"}),!0})),Ie=qe(((e,{query:t})=>{if(e.state.readOnly)return!1;let s=t.matchAll(e.state,1e9).map((e=>{let{from:i,to:s}=e;return{from:i,to:s,insert:t.getReplacement(e)}}));if(!s.length)return!1;let n=e.state.phrase("replaced $ matches",s.length)+".";return e.dispatch({changes:s,effects:i.announce.of(n),userEvent:"input.replace.all"}),!0}));function Pe(e){return e.state.facet(ue).createPanel(e)}function Ee(e,t){var i,s,n,o,r;let a=e.selection.main,l=a.empty||a.to>a.from+100?"":e.sliceDoc(a.from,a.to);if(t&&!l)return t;let c=e.facet(ue);return new fe({search:(null!==(i=null==t?void 0:t.literal)&&void 0!==i?i:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:null!==(s=null==t?void 0:t.caseSensitive)&&void 0!==s?s:c.caseSensitive,literal:null!==(n=null==t?void 0:t.literal)&&void 0!==n?n:c.literal,regexp:null!==(o=null==t?void 0:t.regexp)&&void 0!==o?o:c.regexp,wholeWord:null!==(r=null==t?void 0:t.wholeWord)&&void 0!==r?r:c.wholeWord})}function $e(e){let t=s(e,Pe);return t&&t.dom.querySelector("[main-field]")}function Te(e){let t=$e(e);t&&t==e.root.activeElement&&t.select()}const Oe=e=>{let t=e.state.field(Se,!1);if(t&&t.panel){let i=$e(e);if(i&&i!=e.root.activeElement){let s=Ee(e.state,t.query.spec);s.valid&&e.dispatch({effects:ye.of(s)}),i.focus(),i.select()}}else e.dispatch({effects:[ke.of(!0),t?ye.of(Ee(e.state,t.query.spec)):w.appendConfig.of(Ke)]});return!0},ze=e=>{let t=e.state.field(Se,!1);if(!t||!t.panel)return!1;let i=s(e,Pe);return i&&i.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:ke.of(!1)}),!0},Be=[{key:"Mod-f",run:Oe,scope:"editor search-panel"},{key:"F3",run:Re,shift:De,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Re,shift:De,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:ze,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:e,dispatch:t})=>{let i=e.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:s,to:n}=i.main,o=[],r=0;for(let t=new U(e.doc,e.sliceDoc(s,n));!t.next().done;){if(o.length>1e3)return!1;t.value.from==s&&(r=o.length),o.push(C.range(t.value.from,t.value.to))}return t(e.update({selection:C.create(o,r),userEvent:"select.search.matches"})),!0}},{key:"Mod-Alt-g",run:e=>{let t=s(e,ee);if(!t){let i=[te.of(!0)];null==e.state.field(ie,!1)&&i.push(w.appendConfig.of([ie,se])),e.dispatch({effects:i}),t=s(e,ee)}return t&&t.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:e,dispatch:t})=>{let{ranges:s}=e.selection;if(s.some((e=>e.from===e.to)))return(({state:e,dispatch:t})=>{let{selection:i}=e,s=C.create(i.ranges.map((t=>e.wordAt(t.head)||C.cursor(t.head))),i.mainIndex);return!s.eq(i)&&(t(e.update({selection:s})),!0)})({state:e,dispatch:t});let n=e.sliceDoc(s[0].from,s[0].to);if(e.selection.ranges.some((t=>e.sliceDoc(t.from,t.to)!=n)))return!1;let o=function(e,t){let{main:i,ranges:s}=e.selection,n=e.wordAt(i.head),o=n&&n.from==i.from&&n.to==i.to;for(let i=!1,n=new U(e.doc,t,s[s.length-1].to);;){if(n.next(),!n.done){if(i&&s.some((e=>e.from==n.value.from)))continue;if(o){let t=e.wordAt(n.value.from);if(!t||t.from!=n.value.from||t.to!=n.value.to)continue}return n.value}if(i)return null;n=new U(e.doc,t,0,Math.max(0,s[s.length-1].from-1)),i=!0}}(e,n);return!!o&&(t(e.update({selection:e.selection.addRange(C.range(o.from,o.to),!1),effects:i.scrollIntoView(o.to)})),!0)},preventDefault:!0}];class je{constructor(e){this.view=e;let t=this.query=e.state.field(Se).query.spec;function i(e,t,i){return V("button",{class:"cm-button",name:e,onclick:t,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=V("input",{value:t.search,placeholder:_e(e,"Find"),"aria-label":_e(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=V("input",{value:t.replace,placeholder:_e(e,"Replace"),"aria-label":_e(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=V("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=V("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=V("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit}),this.dom=V("div",{onkeydown:e=>this.keydown(e),class:"cm-search"},[this.searchField,i("next",(()=>Re(e)),[_e(e,"next")]),i("prev",(()=>De(e)),[_e(e,"previous")]),i("select",(()=>We(e)),[_e(e,"all")]),V("label",null,[this.caseField,_e(e,"match case")]),V("label",null,[this.reField,_e(e,"regexp")]),V("label",null,[this.wordField,_e(e,"by word")]),...e.state.readOnly?[]:[V("br"),this.replaceField,i("replace",(()=>Fe(e)),[_e(e,"replace")]),i("replaceAll",(()=>Ie(e)),[_e(e,"replace all")])],V("button",{name:"close",onclick:()=>ze(e),"aria-label":_e(e,"close"),type:"button"},["×"])])}commit(){let e=new fe({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:ye.of(e)}))}keydown(e){o(this.view,e,"search-panel")?e.preventDefault():13==e.keyCode&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?De:Re)(this.view)):13==e.keyCode&&e.target==this.replaceField&&(e.preventDefault(),Fe(this.view))}update(e){for(let t of e.transactions)for(let e of t.effects)e.is(ye)&&!e.value.eq(this.query)&&this.setQuery(e.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(ue).top}}function _e(e,t){return e.state.phrase(t)}const Ve=30,He=/[\s\.,:;?!]/;function Ne(e,{from:t,to:s}){let n=e.state.doc.lineAt(t),o=e.state.doc.lineAt(s).to,r=Math.max(n.from,t-Ve),a=Math.min(o,s+Ve),l=e.state.sliceDoc(r,a);if(r!=n.from)for(let e=0;e<Ve;e++)if(!He.test(l[e+1])&&He.test(l[e])){l=l.slice(e);break}if(a!=o)for(let e=l.length-1;e>l.length-Ve;e--)if(!He.test(l[e-1])&&He.test(l[e])){l=l.slice(0,e);break}return i.announce.of(`${e.state.phrase("current match")}. ${l} ${e.state.phrase("on line")} ${n.number}.`)}const Ue=i.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),Ke=[Se,M.low(Le),Ue];class Qe{constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}}class Ge{constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,i,s){let n=e,o=s.facet(rt).markerFilter;o&&(n=o(n,s));let r=t.set(n.map((e=>e.from==e.to||e.from==e.to-1&&s.doc.lineAt(e.from).to==e.from?t.widget({widget:new ct(e),diagnostic:e}).range(e.from):t.mark({attributes:{class:"cm-lintRange cm-lintRange-"+e.severity+(e.markClass?" "+e.markClass:"")},diagnostic:e,inclusive:!0}).range(e.from,e.to))),!0);return new Ge(r,i,Ye(r))}}function Ye(e,t=null,i=0){let s=null;return e.between(i,1e9,((e,i,{spec:n})=>{if(!t||n.diagnostic==t)return s=new Qe(e,i,n.diagnostic),!1})),s}const Ze=w.define(),Je=w.define(),Xe=w.define(),et=A.define({create:()=>new Ge(t.none,null,null),update(e,t){if(t.docChanged){let i=e.diagnostics.map(t.changes),s=null;if(e.selected){let n=t.changes.mapPos(e.selected.from,1);s=Ye(i,e.selected.diagnostic,n)||Ye(i,null,n)}e=new Ge(i,e.panel,s)}for(let i of t.effects)i.is(Ze)?e=Ge.init(i.value,e.panel,t.state):i.is(Je)?e=new Ge(e.diagnostics,i.value?dt.open:null,e.selected):i.is(Xe)&&(e=new Ge(e.diagnostics,e.panel,i.value));return e},provide:e=>[n.from(e,(e=>e.panel)),i.decorations.from(e,(e=>e.diagnostics))]}),tt=t.mark({class:"cm-lintRange cm-lintRange-active",inclusive:!0});function it(e,t,i){let{diagnostics:s}=e.state.field(et),n=[],o=2e8,r=0;s.between(t-(i<0?1:0),t+(i>0?1:0),((e,s,{spec:a})=>{t>=e&&t<=s&&(e==s||(t>e||i>0)&&(t<s||i<0))&&(n.push(a.diagnostic),o=Math.min(e,o),r=Math.max(s,r))}));let a=e.state.facet(rt).tooltipFilter;return a&&(n=a(n,e.state)),n.length?{pos:o,end:r,above:e.state.doc.lineAt(o).to<r,create:()=>({dom:st(e,n)})}:null}function st(e,t){return V("ul",{class:"cm-tooltip-lint"},t.map((t=>lt(e,t,!1))))}const nt=e=>{let t=e.state.field(et,!1);return!(!t||!t.panel)&&(e.dispatch({effects:Je.of(!1)}),!0)},ot=[{key:"Mod-Shift-m",run:e=>{let t=e.state.field(et,!1);var i,n;t&&t.panel||e.dispatch({effects:(i=e.state,n=[Je.of(!0)],i.field(et,!1)?n:n.concat(w.appendConfig.of(mt)))});let o=s(e,dt.open);return o&&o.dom.querySelector(".cm-panel-lint ul").focus(),!0},preventDefault:!0},{key:"F8",run:e=>{let t=e.state.field(et,!1);if(!t)return!1;let i=e.state.selection.main,s=t.diagnostics.iter(i.to+1);return!(!s.value&&(s=t.diagnostics.iter(0),!s.value||s.from==i.from&&s.to==i.to))&&(e.dispatch({selection:{anchor:s.from,head:s.to},scrollIntoView:!0}),!0)}}],rt=y.define({combine:e=>Object.assign({sources:e.map((e=>e.source)).filter((e=>null!=e))},k(e.map((e=>e.config)),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null},{needsRefresh:(e,t)=>e?t?i=>e(i)||t(i):e:t}))});function at(e){let t=[];if(e)e:for(let{name:i}of e){for(let e=0;e<i.length;e++){let s=i[e];if(/[a-zA-Z]/.test(s)&&!t.some((e=>e.toLowerCase()==s.toLowerCase()))){t.push(s);continue e}}t.push("")}return t}function lt(e,t,i){var s;let n=i?at(t.actions):[];return V("li",{class:"cm-diagnostic cm-diagnostic-"+t.severity},V("span",{class:"cm-diagnosticText"},t.renderMessage?t.renderMessage():t.message),null===(s=t.actions)||void 0===s?void 0:s.map(((i,s)=>{let o=!1,r=s=>{if(s.preventDefault(),o)return;o=!0;let n=Ye(e.state.field(et).diagnostics,t);n&&i.apply(e,n.from,n.to)},{name:a}=i,l=n[s]?a.indexOf(n[s]):-1,c=l<0?a:[a.slice(0,l),V("u",a.slice(l,l+1)),a.slice(l+1)];return V("button",{type:"button",class:"cm-diagnosticAction",onclick:r,onmousedown:r,"aria-label":` Action: ${a}${l<0?"":` (access key "${n[s]})"`}.`},c)})),t.source&&V("div",{class:"cm-diagnosticSource"},t.source))}class ct extends a{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return V("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class ht{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(4294967295*Math.random()).toString(16),this.dom=lt(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class dt{constructor(e){this.view=e,this.items=[];this.list=V("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t=>{if(27==t.keyCode)nt(this.view),this.view.focus();else if(38==t.keyCode||33==t.keyCode)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(40==t.keyCode||34==t.keyCode)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(36==t.keyCode)this.moveSelection(0);else if(35==t.keyCode)this.moveSelection(this.items.length-1);else if(13==t.keyCode)this.view.focus();else{if(!(t.keyCode>=65&&t.keyCode<=90&&this.selectedIndex>=0))return;{let{diagnostic:i}=this.items[this.selectedIndex],s=at(i.actions);for(let n=0;n<s.length;n++)if(s[n].toUpperCase().charCodeAt(0)==t.keyCode){let t=Ye(this.view.state.field(et).diagnostics,i);t&&i.actions[n].apply(e,t.from,t.to)}}}t.preventDefault()},onclick:e=>{for(let t=0;t<this.items.length;t++)this.items[t].dom.contains(e.target)&&this.moveSelection(t)}}),this.dom=V("div",{class:"cm-panel-lint"},this.list,V("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>nt(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(et).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(et),i=0,s=!1,n=null;for(e.between(0,this.view.state.doc.length,((e,o,{spec:r})=>{let a,l=-1;for(let e=i;e<this.items.length;e++)if(this.items[e].diagnostic==r.diagnostic){l=e;break}l<0?(a=new ht(this.view,r.diagnostic),this.items.splice(i,0,a),s=!0):(a=this.items[l],l>i&&(this.items.splice(i,l-i),s=!0)),t&&a.diagnostic==t.diagnostic?a.dom.hasAttribute("aria-selected")||(a.dom.setAttribute("aria-selected","true"),n=a):a.dom.hasAttribute("aria-selected")&&a.dom.removeAttribute("aria-selected"),i++}));i<this.items.length&&!(1==this.items.length&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();0==this.items.length&&(this.items.push(new ht(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),n?(this.list.setAttribute("aria-activedescendant",n.id),this.view.requestMeasure({key:this,read:()=>({sel:n.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:e,panel:t})=>{let i=t.height/this.list.offsetHeight;e.top<t.top?this.list.scrollTop-=(t.top-e.top)/i:e.bottom>t.bottom&&(this.list.scrollTop+=(e.bottom-t.bottom)/i)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let t=e;e=t.nextSibling,t.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=Ye(this.view.state.field(et).diagnostics,this.items[e].diagnostic);t&&this.view.dispatch({selection:{anchor:t.from,head:t.to},scrollIntoView:!0,effects:Xe.of(t)})}static open(e){return new dt(e)}}function ut(e){return function(e,t='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${t}>${encodeURIComponent(e)}</svg>')`}(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${e}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const ft=i.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:ut("#d11")},".cm-lintRange-warning":{backgroundImage:ut("orange")},".cm-lintRange-info":{backgroundImage:ut("#999")},".cm-lintRange-hint":{backgroundImage:ut("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}}),mt=[et,i.decorations.compute([et],(e=>{let{selected:i,panel:s}=e.field(et);return i&&s&&i.from!=i.to?t.set([tt.range(i.from,i.to)]):t.none})),r(it,{hideOn:function(e,t){let i=e.startState.doc.lineAt(t.pos);return!(!e.effects.some((e=>e.is(Ze)))&&!e.changes.touchesRange(i.from,i.to))}}),ft],pt=(()=>[l(),c(),h(),$(),D(),d(),u(),L.allowMultipleSelections.of(!0),W(),F(I,{fallback:!0}),P(),z(),B(),f(),m(),p(),re(),g.of([...j,...T,...Be,...O,...E,..._,...ot])])(),gt=(()=>[h(),$(),d(),F(I,{fallback:!0}),g.of([...T,...O])])();export{i as EditorView,pt as basicSetup,gt as minimalSetup};
|
2
|
+
//# sourceMappingURL=codemirror-Bt1qaGaC.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"codemirror-Bt1qaGaC.js","sources":["../node_modules/crelt/index.js","../node_modules/@codemirror/search/dist/index.js","../node_modules/@codemirror/lint/dist/index.js","../node_modules/codemirror/dist/index.js"],"sourcesContent":["export default function crelt() {\n var elt = arguments[0]\n if (typeof elt == \"string\") elt = document.createElement(elt)\n var i = 1, next = arguments[1]\n if (next && typeof next == \"object\" && next.nodeType == null && !Array.isArray(next)) {\n for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {\n var value = next[name]\n if (typeof value == \"string\") elt.setAttribute(name, value)\n else if (value != null) elt[name] = value\n }\n i++\n }\n for (; i < arguments.length; i++) add(elt, arguments[i])\n return elt\n}\n\nfunction add(elt, child) {\n if (typeof child == \"string\") {\n elt.appendChild(document.createTextNode(child))\n } else if (child == null) {\n } else if (child.nodeType != null) {\n elt.appendChild(child)\n } else if (Array.isArray(child)) {\n for (var i = 0; i < child.length; i++) add(elt, child[i])\n } else {\n throw new RangeError(\"Unsupported child node: \" + child)\n }\n}\n","import { showPanel, EditorView, getPanel, Decoration, ViewPlugin, runScopeHandlers } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, StateEffect, StateField, EditorSelection, Facet, combineConfig, CharCategory, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n /**\n Create a text cursor. The query is the search string, `from` to\n `to` provides the region to search.\n \n When `normalize` is given, it will be called, on both the query\n string and the content it is matched against, before comparing.\n You can, for example, create a case-insensitive search by\n passing `s => s.toLowerCase()`.\n \n Text is always normalized with\n [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n (when supported).\n */\n constructor(text, query, from = 0, to = text.length, normalize, test) {\n this.test = test;\n /**\n The current match (only holds a meaningful value after\n [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n `done` is false).\n */\n this.value = { from: 0, to: 0 };\n /**\n Whether the end of the iterated region has been reached.\n */\n this.done = false;\n this.matches = [];\n this.buffer = \"\";\n this.bufferPos = 0;\n this.iter = text.iterRange(from, to);\n this.bufferStart = from;\n this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n this.query = this.normalize(query);\n }\n peek() {\n if (this.bufferPos == this.buffer.length) {\n this.bufferStart += this.buffer.length;\n this.iter.next();\n if (this.iter.done)\n return -1;\n this.bufferPos = 0;\n this.buffer = this.iter.value;\n }\n return codePointAt(this.buffer, this.bufferPos);\n }\n /**\n Look for the next match. Updates the iterator's\n [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n at least once before using the cursor.\n */\n next() {\n while (this.matches.length)\n this.matches.pop();\n return this.nextOverlapping();\n }\n /**\n The `next` method will ignore matches that partially overlap a\n previous match. This method behaves like `next`, but includes\n such matches.\n */\n nextOverlapping() {\n for (;;) {\n let next = this.peek();\n if (next < 0) {\n this.done = true;\n return this;\n }\n let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n this.bufferPos += codePointSize(next);\n let norm = this.normalize(str);\n for (let i = 0, pos = start;; i++) {\n let code = norm.charCodeAt(i);\n let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n if (i == norm.length - 1) {\n if (match) {\n this.value = match;\n return this;\n }\n break;\n }\n if (pos == start && i < str.length && str.charCodeAt(i) == code)\n pos++;\n }\n }\n }\n match(code, pos, end) {\n let match = null;\n for (let i = 0; i < this.matches.length; i += 2) {\n let index = this.matches[i], keep = false;\n if (this.query.charCodeAt(index) == code) {\n if (index == this.query.length - 1) {\n match = { from: this.matches[i + 1], to: end };\n }\n else {\n this.matches[i]++;\n keep = true;\n }\n }\n if (!keep) {\n this.matches.splice(i, 2);\n i -= 2;\n }\n }\n if (this.query.charCodeAt(0) == code) {\n if (this.query.length == 1)\n match = { from: pos, to: end };\n else\n this.matches.push(1, pos);\n }\n if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n match = null;\n return match;\n }\n}\nif (typeof Symbol != \"undefined\")\n SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n /**\n Create a cursor that will search the given range in the given\n document. `query` should be the raw pattern (as you'd pass it to\n `new RegExp`).\n */\n constructor(text, query, options, from = 0, to = text.length) {\n this.text = text;\n this.to = to;\n this.curLine = \"\";\n /**\n Set to `true` when the cursor has reached the end of the search\n range.\n */\n this.done = false;\n /**\n Will contain an object with the extent of the match and the\n match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n sucessfully finds a match.\n */\n this.value = empty;\n if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n return new MultilineRegExpCursor(text, query, options, from, to);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.iter = text.iter();\n let startLine = text.lineAt(from);\n this.curLineStart = startLine.from;\n this.matchPos = toCharEnd(text, from);\n this.getLine(this.curLineStart);\n }\n getLine(skip) {\n this.iter.next(skip);\n if (this.iter.lineBreak) {\n this.curLine = \"\";\n }\n else {\n this.curLine = this.iter.value;\n if (this.curLineStart + this.curLine.length > this.to)\n this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n this.iter.next();\n }\n }\n nextLine() {\n this.curLineStart = this.curLineStart + this.curLine.length + 1;\n if (this.curLineStart > this.to)\n this.curLine = \"\";\n else\n this.getLine(0);\n }\n /**\n Move to the next match, if there is one.\n */\n next() {\n for (let off = this.matchPos - this.curLineStart;;) {\n this.re.lastIndex = off;\n let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n if (match) {\n let from = this.curLineStart + match.index, to = from + match[0].length;\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n if (from == this.curLineStart + this.curLine.length)\n this.nextLine();\n if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n return this;\n }\n off = this.matchPos - this.curLineStart;\n }\n else if (this.curLineStart + this.curLine.length < this.to) {\n this.nextLine();\n off = 0;\n }\n else {\n this.done = true;\n return this;\n }\n }\n }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n constructor(from, text) {\n this.from = from;\n this.text = text;\n }\n get to() { return this.from + this.text.length; }\n static get(doc, from, to) {\n let cached = flattened.get(doc);\n if (!cached || cached.from >= to || cached.to <= from) {\n let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n flattened.set(doc, flat);\n return flat;\n }\n if (cached.from == from && cached.to == to)\n return cached;\n let { text, from: cachedFrom } = cached;\n if (cachedFrom > from) {\n text = doc.sliceString(from, cachedFrom) + text;\n cachedFrom = from;\n }\n if (cached.to < to)\n text += doc.sliceString(cached.to, to);\n flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n }\n}\nclass MultilineRegExpCursor {\n constructor(text, query, options, from, to) {\n this.text = text;\n this.to = to;\n this.done = false;\n this.value = empty;\n this.matchPos = toCharEnd(text, from);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n }\n chunkEnd(pos) {\n return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n }\n next() {\n for (;;) {\n let off = this.re.lastIndex = this.matchPos - this.flat.from;\n let match = this.re.exec(this.flat.text);\n // Skip empty matches directly after the last match\n if (match && !match[0] && match.index == off) {\n this.re.lastIndex = off + 1;\n match = this.re.exec(this.flat.text);\n }\n if (match) {\n let from = this.flat.from + match.index, to = from + match[0].length;\n // If a match goes almost to the end of a noncomplete chunk, try\n // again, since it'll likely be able to match more\n if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n return this;\n }\n }\n if (this.flat.to == this.to) {\n this.done = true;\n return this;\n }\n // Grow the flattened doc\n this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n }\n }\n}\nif (typeof Symbol != \"undefined\") {\n RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n function () { return this; };\n}\nfunction validRegExp(source) {\n try {\n new RegExp(source, baseFlags);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction toCharEnd(text, pos) {\n if (pos >= text.length)\n return pos;\n let line = text.lineAt(pos), next;\n while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n pos++;\n return pos;\n}\n\nfunction createLineDialog(view) {\n let line = String(view.state.doc.lineAt(view.state.selection.main.head).number);\n let input = elt(\"input\", { class: \"cm-textfield\", name: \"line\", value: line });\n let dom = elt(\"form\", {\n class: \"cm-gotoLine\",\n onkeydown: (event) => {\n if (event.keyCode == 27) { // Escape\n event.preventDefault();\n view.dispatch({ effects: dialogEffect.of(false) });\n view.focus();\n }\n else if (event.keyCode == 13) { // Enter\n event.preventDefault();\n go();\n }\n },\n onsubmit: (event) => {\n event.preventDefault();\n go();\n }\n }, elt(\"label\", view.state.phrase(\"Go to line\"), \": \", input), \" \", elt(\"button\", { class: \"cm-button\", type: \"submit\" }, view.state.phrase(\"go\")));\n function go() {\n let match = /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(input.value);\n if (!match)\n return;\n let { state } = view, startLine = state.doc.lineAt(state.selection.main.head);\n let [, sign, ln, cl, percent] = match;\n let col = cl ? +cl.slice(1) : 0;\n let line = ln ? +ln : startLine.number;\n if (ln && percent) {\n let pc = line / 100;\n if (sign)\n pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n line = Math.round(state.doc.lines * pc);\n }\n else if (ln && sign) {\n line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n }\n let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n view.dispatch({\n effects: [dialogEffect.of(false), EditorView.scrollIntoView(selection.from, { y: 'center' })],\n selection,\n });\n view.focus();\n }\n return { dom };\n}\nconst dialogEffect = /*@__PURE__*/StateEffect.define();\nconst dialogField = /*@__PURE__*/StateField.define({\n create() { return true; },\n update(value, tr) {\n for (let e of tr.effects)\n if (e.is(dialogEffect))\n value = e.value;\n return value;\n },\n provide: f => showPanel.from(f, val => val ? createLineDialog : null)\n});\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n let panel = getPanel(view, createLineDialog);\n if (!panel) {\n let effects = [dialogEffect.of(true)];\n if (view.state.field(dialogField, false) == null)\n effects.push(StateEffect.appendConfig.of([dialogField, baseTheme$1]));\n view.dispatch({ effects });\n panel = getPanel(view, createLineDialog);\n }\n if (panel)\n panel.dom.querySelector(\"input\").select();\n return true;\n};\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-gotoLine\": {\n padding: \"2px 6px 4px\",\n \"& label\": { fontSize: \"80%\" }\n }\n});\n\nconst defaultHighlightOptions = {\n highlightWordAroundCursor: false,\n minSelectionLength: 1,\n maxMatches: 100,\n wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n combine(options) {\n return combineConfig(options, defaultHighlightOptions, {\n highlightWordAroundCursor: (a, b) => a || b,\n minSelectionLength: Math.min,\n maxMatches: Math.min\n });\n }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n let ext = [defaultTheme, matchHighlighter];\n if (options)\n ext.push(highlightConfig.of(options));\n return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.selectionSet || update.docChanged || update.viewportChanged)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let conf = view.state.facet(highlightConfig);\n let { state } = view, sel = state.selection;\n if (sel.ranges.length > 1)\n return Decoration.none;\n let range = sel.main, query, check = null;\n if (range.empty) {\n if (!conf.highlightWordAroundCursor)\n return Decoration.none;\n let word = state.wordAt(range.head);\n if (!word)\n return Decoration.none;\n check = state.charCategorizer(range.head);\n query = state.sliceDoc(word.from, word.to);\n }\n else {\n let len = range.to - range.from;\n if (len < conf.minSelectionLength || len > 200)\n return Decoration.none;\n if (conf.wholeWords) {\n query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n check = state.charCategorizer(range.head);\n if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n insideWord(check, state, range.from, range.to)))\n return Decoration.none;\n }\n else {\n query = state.sliceDoc(range.from, range.to);\n if (!query)\n return Decoration.none;\n }\n }\n let deco = [];\n for (let part of view.visibleRanges) {\n let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n while (!cursor.next().done) {\n let { from, to } = cursor.value;\n if (!check || insideWordBoundaries(check, state, from, to)) {\n if (range.empty && from <= range.from && to >= range.to)\n deco.push(mainMatchDeco.range(from, to));\n else if (from >= range.to || to <= range.from)\n deco.push(matchDeco.range(from, to));\n if (deco.length > conf.maxMatches)\n return Decoration.none;\n }\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n let { selection } = state;\n let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n if (newSel.eq(selection))\n return false;\n dispatch(state.update({ selection: newSel }));\n return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n let { main, ranges } = state.selection;\n let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n cursor.next();\n if (cursor.done) {\n if (cycled)\n return null;\n cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n cycled = true;\n }\n else {\n if (cycled && ranges.some(r => r.from == cursor.value.from))\n continue;\n if (fullWord) {\n let word = state.wordAt(cursor.value.from);\n if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n continue;\n }\n return cursor.value;\n }\n }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n let { ranges } = state.selection;\n if (ranges.some(sel => sel.from === sel.to))\n return selectWord({ state, dispatch });\n let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n return false;\n let range = findNextOccurrence(state, searchedText);\n if (!range)\n return false;\n dispatch(state.update({\n selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n effects: EditorView.scrollIntoView(range.to)\n }));\n return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n top: false,\n caseSensitive: false,\n literal: false,\n regexp: false,\n wholeWord: false,\n createPanel: view => new SearchPanel(view),\n scrollToMatch: range => EditorView.scrollIntoView(range)\n });\n }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n /**\n Create a query object.\n */\n constructor(config) {\n this.search = config.search;\n this.caseSensitive = !!config.caseSensitive;\n this.literal = !!config.literal;\n this.regexp = !!config.regexp;\n this.replace = config.replace || \"\";\n this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n this.unquoted = this.unquote(this.search);\n this.wholeWord = !!config.wholeWord;\n }\n /**\n @internal\n */\n unquote(text) {\n return this.literal ? text :\n text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n }\n /**\n Compare this query to another query.\n */\n eq(other) {\n return this.search == other.search && this.replace == other.replace &&\n this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n this.wholeWord == other.wholeWord;\n }\n /**\n @internal\n */\n create() {\n return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n }\n /**\n Get a search cursor for this query, searching through the given\n range in the given state.\n */\n getCursor(state, from = 0, to) {\n let st = state.doc ? state : EditorState.create({ doc: state });\n if (to == null)\n to = st.doc.length;\n return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n }\n}\nclass QueryType {\n constructor(spec) {\n this.spec = spec;\n }\n}\nfunction stringCursor(spec, state, from, to) {\n return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), spec.wholeWord ? stringWordTest(state.doc, state.charCategorizer(state.selection.main.head)) : undefined);\n}\nfunction stringWordTest(doc, categorizer) {\n return (from, to, buf, bufPos) => {\n if (bufPos > from || bufPos + buf.length < to) {\n bufPos = Math.max(0, from - 2);\n buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n }\n return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n };\n}\nclass StringQuery extends QueryType {\n constructor(spec) {\n super(spec);\n }\n nextMatch(state, curFrom, curTo) {\n let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n if (cursor.done)\n cursor = stringCursor(this.spec, state, 0, curFrom).nextOverlapping();\n return cursor.done ? null : cursor.value;\n }\n // Searching in reverse is, rather than implementing an inverted search\n // cursor, done by scanning chunk after chunk forward.\n prevMatchInRange(state, from, to) {\n for (let pos = to;;) {\n let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n let cursor = stringCursor(this.spec, state, start, pos), range = null;\n while (!cursor.nextOverlapping().done)\n range = cursor.value;\n if (range)\n return range;\n if (start == from)\n return null;\n pos -= 10000 /* FindPrev.ChunkSize */;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n matchAll(state, limit) {\n let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\nfunction regexpCursor(spec, state, from, to) {\n return new RegExpCursor(state.doc, spec.search, {\n ignoreCase: !spec.caseSensitive,\n test: spec.wholeWord ? regexpWordTest(state.charCategorizer(state.selection.main.head)) : undefined\n }, from, to);\n}\nfunction charBefore(str, index) {\n return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n return (_from, _to, match) => !match[0].length ||\n (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n nextMatch(state, curFrom, curTo) {\n let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n if (cursor.done)\n cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n return cursor.done ? null : cursor.value;\n }\n prevMatchInRange(state, from, to) {\n for (let size = 1;; size++) {\n let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n let cursor = regexpCursor(this.spec, state, start, to), range = null;\n while (!cursor.next().done)\n range = cursor.value;\n if (range && (start == from || range.from > start + 10))\n return range;\n if (start == from)\n return null;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(result) {\n return this.spec.unquote(this.spec.replace).replace(/\\$([$&\\d+])/g, (m, i) => i == \"$\" ? \"$\"\n : i == \"&\" ? result.match[0]\n : i != \"0\" && +i < result.match.length ? result.match[i]\n : m);\n }\n matchAll(state, limit) {\n let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n create(state) {\n return new SearchState(defaultQuery(state).create(), null);\n },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery))\n value = new SearchState(effect.value.create(), value.panel);\n else if (effect.is(togglePanel))\n value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n }\n return value;\n },\n provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n let curState = state.field(searchState, false);\n return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n var _a;\n return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n constructor(query, panel) {\n this.query = query;\n this.panel = panel;\n }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = this.highlight(view.state.field(searchState));\n }\n update(update) {\n let state = update.state.field(searchState);\n if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n this.decorations = this.highlight(state);\n }\n highlight({ query, panel }) {\n if (!panel || !query.spec.valid)\n return Decoration.none;\n let { view } = this;\n let builder = new RangeSetBuilder();\n for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n let { from, to } = ranges[i];\n while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n to = ranges[++i].to;\n query.highlight(view.state, from, to, (from, to) => {\n let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n builder.add(from, to, selected ? selectedMatchMark : matchMark);\n });\n }\n return builder.finish();\n }\n}, {\n decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n return view => {\n let state = view.state.field(searchState, false);\n return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { to } = view.state.selection.main;\n let next = query.nextMatch(view.state, to, to);\n if (!next)\n return false;\n let selection = EditorSelection.single(next.from, next.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from } = state.selection.main;\n let prev = query.prevMatch(state, from, from);\n if (!prev)\n return false;\n let selection = EditorSelection.single(prev.from, prev.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n let ranges = query.matchAll(view.state, 1000);\n if (!ranges || !ranges.length)\n return false;\n view.dispatch({\n selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n userEvent: \"select.search.matches\"\n });\n return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n let sel = state.selection;\n if (sel.ranges.length > 1 || sel.main.empty)\n return false;\n let { from, to } = sel.main;\n let ranges = [], main = 0;\n for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n if (ranges.length > 1000)\n return false;\n if (cur.value.from == from)\n main = ranges.length;\n ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n }\n dispatch(state.update({\n selection: EditorSelection.create(ranges, main),\n userEvent: \"select.search.matches\"\n }));\n return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from, to } = state.selection.main;\n if (state.readOnly)\n return false;\n let next = query.nextMatch(state, from, from);\n if (!next)\n return false;\n let changes = [], selection, replacement;\n let effects = [];\n if (next.from == from && next.to == to) {\n replacement = state.toText(query.getReplacement(next));\n changes.push({ from: next.from, to: next.to, insert: replacement });\n next = query.nextMatch(state, next.from, next.to);\n effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n }\n if (next) {\n let off = changes.length == 0 || changes[0].from >= next.to ? 0 : next.to - next.from - replacement.length;\n selection = EditorSelection.single(next.from - off, next.to - off);\n effects.push(announceMatch(view, next));\n effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n }\n view.dispatch({\n changes, selection, effects,\n userEvent: \"input.replace\"\n });\n return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n if (view.state.readOnly)\n return false;\n let changes = query.matchAll(view.state, 1e9).map(match => {\n let { from, to } = match;\n return { from, to, insert: query.getReplacement(match) };\n });\n if (!changes.length)\n return false;\n let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n view.dispatch({\n changes,\n effects: EditorView.announce.of(announceText),\n userEvent: \"input.replace.all\"\n });\n return true;\n});\nfunction createSearchPanel(view) {\n return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n var _a, _b, _c, _d, _e;\n let sel = state.selection.main;\n let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n if (fallback && !selText)\n return fallback;\n let config = state.facet(searchConfigFacet);\n return new SearchQuery({\n search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n });\n}\nfunction getSearchInput(view) {\n let panel = getPanel(view, createSearchPanel);\n return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n let input = getSearchInput(view);\n if (input && input == view.root.activeElement)\n input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (state && state.panel) {\n let searchInput = getSearchInput(view);\n if (searchInput && searchInput != view.root.activeElement) {\n let query = defaultQuery(view.state, state.query.spec);\n if (query.valid)\n view.dispatch({ effects: setSearchQuery.of(query) });\n searchInput.focus();\n searchInput.select();\n }\n }\n else {\n view.dispatch({ effects: [\n togglePanel.of(true),\n state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n ] });\n }\n return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (!state || !state.panel)\n return false;\n let panel = getPanel(view, createSearchPanel);\n if (panel && panel.dom.contains(view.root.activeElement))\n view.focus();\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n { key: \"Mod-Alt-g\", run: gotoLine },\n { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n constructor(view) {\n this.view = view;\n let query = this.query = view.state.field(searchState).query.spec;\n this.commit = this.commit.bind(this);\n this.searchField = elt(\"input\", {\n value: query.search,\n placeholder: phrase(view, \"Find\"),\n \"aria-label\": phrase(view, \"Find\"),\n class: \"cm-textfield\",\n name: \"search\",\n form: \"\",\n \"main-field\": \"true\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.replaceField = elt(\"input\", {\n value: query.replace,\n placeholder: phrase(view, \"Replace\"),\n \"aria-label\": phrase(view, \"Replace\"),\n class: \"cm-textfield\",\n name: \"replace\",\n form: \"\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.caseField = elt(\"input\", {\n type: \"checkbox\",\n name: \"case\",\n form: \"\",\n checked: query.caseSensitive,\n onchange: this.commit\n });\n this.reField = elt(\"input\", {\n type: \"checkbox\",\n name: \"re\",\n form: \"\",\n checked: query.regexp,\n onchange: this.commit\n });\n this.wordField = elt(\"input\", {\n type: \"checkbox\",\n name: \"word\",\n form: \"\",\n checked: query.wholeWord,\n onchange: this.commit\n });\n function button(name, onclick, content) {\n return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n }\n this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n this.searchField,\n button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n ...view.state.readOnly ? [] : [\n elt(\"br\"),\n this.replaceField,\n button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n ],\n elt(\"button\", {\n name: \"close\",\n onclick: () => closeSearchPanel(view),\n \"aria-label\": phrase(view, \"close\"),\n type: \"button\"\n }, [\"×\"])\n ]);\n }\n commit() {\n let query = new SearchQuery({\n search: this.searchField.value,\n caseSensitive: this.caseField.checked,\n regexp: this.reField.checked,\n wholeWord: this.wordField.checked,\n replace: this.replaceField.value,\n });\n if (!query.eq(this.query)) {\n this.query = query;\n this.view.dispatch({ effects: setSearchQuery.of(query) });\n }\n }\n keydown(e) {\n if (runScopeHandlers(this.view, e, \"search-panel\")) {\n e.preventDefault();\n }\n else if (e.keyCode == 13 && e.target == this.searchField) {\n e.preventDefault();\n (e.shiftKey ? findPrevious : findNext)(this.view);\n }\n else if (e.keyCode == 13 && e.target == this.replaceField) {\n e.preventDefault();\n replaceNext(this.view);\n }\n }\n update(update) {\n for (let tr of update.transactions)\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n this.setQuery(effect.value);\n }\n }\n setQuery(query) {\n this.query = query;\n this.searchField.value = query.search;\n this.replaceField.value = query.replace;\n this.caseField.checked = query.caseSensitive;\n this.reField.checked = query.regexp;\n this.wordField.checked = query.wholeWord;\n }\n mount() {\n this.searchField.select();\n }\n get pos() { return 80; }\n get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n let text = view.state.sliceDoc(start, end);\n if (start != line.from) {\n for (let i = 0; i < AnnounceMargin; i++)\n if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n text = text.slice(i);\n break;\n }\n }\n if (end != lineEnd) {\n for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n text = text.slice(0, i);\n break;\n }\n }\n return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-search\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n },\n \"& input, & button, & label\": {\n margin: \".2em .6em .2em 0\"\n },\n \"& input[type=checkbox]\": {\n marginRight: \".2em\"\n },\n \"& label\": {\n fontSize: \"80%\",\n whiteSpace: \"pre\"\n }\n },\n \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n searchState,\n /*@__PURE__*/Prec.low(searchHighlighter),\n baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { Decoration, showPanel, EditorView, ViewPlugin, logException, gutter, showTooltip, hoverTooltip, getPanel, WidgetType, GutterMarker } from '@codemirror/view';\nimport { StateEffect, StateField, Facet, combineConfig, RangeSet } from '@codemirror/state';\nimport elt from 'crelt';\n\nclass SelectedDiagnostic {\n constructor(from, to, diagnostic) {\n this.from = from;\n this.to = to;\n this.diagnostic = diagnostic;\n }\n}\nclass LintState {\n constructor(diagnostics, panel, selected) {\n this.diagnostics = diagnostics;\n this.panel = panel;\n this.selected = selected;\n }\n static init(diagnostics, panel, state) {\n // Filter the list of diagnostics for which to create markers\n let markedDiagnostics = diagnostics;\n let diagnosticFilter = state.facet(lintConfig).markerFilter;\n if (diagnosticFilter)\n markedDiagnostics = diagnosticFilter(markedDiagnostics, state);\n let ranges = Decoration.set(markedDiagnostics.map((d) => {\n // For zero-length ranges or ranges covering only a line break, create a widget\n return d.from == d.to || (d.from == d.to - 1 && state.doc.lineAt(d.from).to == d.from)\n ? Decoration.widget({\n widget: new DiagnosticWidget(d),\n diagnostic: d\n }).range(d.from)\n : Decoration.mark({\n attributes: { class: \"cm-lintRange cm-lintRange-\" + d.severity + (d.markClass ? \" \" + d.markClass : \"\") },\n diagnostic: d,\n inclusive: true\n }).range(d.from, d.to);\n }), true);\n return new LintState(ranges, panel, findDiagnostic(ranges));\n }\n}\nfunction findDiagnostic(diagnostics, diagnostic = null, after = 0) {\n let found = null;\n diagnostics.between(after, 1e9, (from, to, { spec }) => {\n if (diagnostic && spec.diagnostic != diagnostic)\n return;\n found = new SelectedDiagnostic(from, to, spec.diagnostic);\n return false;\n });\n return found;\n}\nfunction hideTooltip(tr, tooltip) {\n let line = tr.startState.doc.lineAt(tooltip.pos);\n return !!(tr.effects.some(e => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(line.from, line.to));\n}\nfunction maybeEnableLint(state, effects) {\n return state.field(lintState, false) ? effects : effects.concat(StateEffect.appendConfig.of(lintExtensions));\n}\n/**\nReturns a transaction spec which updates the current set of\ndiagnostics, and enables the lint extension if if wasn't already\nactive.\n*/\nfunction setDiagnostics(state, diagnostics) {\n return {\n effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)])\n };\n}\n/**\nThe state effect that updates the set of active diagnostics. Can\nbe useful when writing an extension that needs to track these.\n*/\nconst setDiagnosticsEffect = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst movePanelSelection = /*@__PURE__*/StateEffect.define();\nconst lintState = /*@__PURE__*/StateField.define({\n create() {\n return new LintState(Decoration.none, null, null);\n },\n update(value, tr) {\n if (tr.docChanged) {\n let mapped = value.diagnostics.map(tr.changes), selected = null;\n if (value.selected) {\n let selPos = tr.changes.mapPos(value.selected.from, 1);\n selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos);\n }\n value = new LintState(mapped, value.panel, selected);\n }\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n value = LintState.init(effect.value, value.panel, tr.state);\n }\n else if (effect.is(togglePanel)) {\n value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected);\n }\n else if (effect.is(movePanelSelection)) {\n value = new LintState(value.diagnostics, value.panel, effect.value);\n }\n }\n return value;\n },\n provide: f => [showPanel.from(f, val => val.panel),\n EditorView.decorations.from(f, s => s.diagnostics)]\n});\n/**\nReturns the number of active lint diagnostics in the given state.\n*/\nfunction diagnosticCount(state) {\n let lint = state.field(lintState, false);\n return lint ? lint.diagnostics.size : 0;\n}\nconst activeMark = /*@__PURE__*/Decoration.mark({ class: \"cm-lintRange cm-lintRange-active\", inclusive: true });\nfunction lintTooltip(view, pos, side) {\n let { diagnostics } = view.state.field(lintState);\n let found = [], stackStart = 2e8, stackEnd = 0;\n diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, { spec }) => {\n if (pos >= from && pos <= to &&\n (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) {\n found.push(spec.diagnostic);\n stackStart = Math.min(from, stackStart);\n stackEnd = Math.max(to, stackEnd);\n }\n });\n let diagnosticFilter = view.state.facet(lintConfig).tooltipFilter;\n if (diagnosticFilter)\n found = diagnosticFilter(found, view.state);\n if (!found.length)\n return null;\n return {\n pos: stackStart,\n end: stackEnd,\n above: view.state.doc.lineAt(stackStart).to < stackEnd,\n create() {\n return { dom: diagnosticsTooltip(view, found) };\n }\n };\n}\nfunction diagnosticsTooltip(view, diagnostics) {\n return elt(\"ul\", { class: \"cm-tooltip-lint\" }, diagnostics.map(d => renderDiagnostic(view, d, false)));\n}\n/**\nCommand to open and focus the lint panel.\n*/\nconst openLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n view.dispatch({ effects: maybeEnableLint(view.state, [togglePanel.of(true)]) });\n let panel = getPanel(view, LintPanel.open);\n if (panel)\n panel.dom.querySelector(\".cm-panel-lint ul\").focus();\n return true;\n};\n/**\nCommand to close the lint panel, when open.\n*/\nconst closeLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n return false;\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nMove the selection to the next diagnostic.\n*/\nconst nextDiagnostic = (view) => {\n let field = view.state.field(lintState, false);\n if (!field)\n return false;\n let sel = view.state.selection.main, next = field.diagnostics.iter(sel.to + 1);\n if (!next.value) {\n next = field.diagnostics.iter(0);\n if (!next.value || next.from == sel.from && next.to == sel.to)\n return false;\n }\n view.dispatch({ selection: { anchor: next.from, head: next.to }, scrollIntoView: true });\n return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n let { state } = view, field = state.field(lintState, false);\n if (!field)\n return false;\n let sel = state.selection.main;\n let prevFrom, prevTo, lastFrom, lastTo;\n field.diagnostics.between(0, state.doc.length, (from, to) => {\n if (to < sel.to && (prevFrom == null || prevFrom < from)) {\n prevFrom = from;\n prevTo = to;\n }\n if (lastFrom == null || from > lastFrom) {\n lastFrom = from;\n lastTo = to;\n }\n });\n if (lastFrom == null || prevFrom == null && lastFrom == sel.from)\n return false;\n view.dispatch({ selection: { anchor: prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, head: prevTo !== null && prevTo !== void 0 ? prevTo : lastTo }, scrollIntoView: true });\n return true;\n};\n/**\nA set of default key bindings for the lint functionality.\n\n- Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)\n- F8: [`nextDiagnostic`](https://codemirror.net/6/docs/ref/#lint.nextDiagnostic)\n*/\nconst lintKeymap = [\n { key: \"Mod-Shift-m\", run: openLintPanel, preventDefault: true },\n { key: \"F8\", run: nextDiagnostic }\n];\nconst lintPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.timeout = -1;\n this.set = true;\n let { delay } = view.state.facet(lintConfig);\n this.lintTime = Date.now() + delay;\n this.run = this.run.bind(this);\n this.timeout = setTimeout(this.run, delay);\n }\n run() {\n let now = Date.now();\n if (now < this.lintTime - 10) {\n this.timeout = setTimeout(this.run, this.lintTime - now);\n }\n else {\n this.set = false;\n let { state } = this.view, { sources } = state.facet(lintConfig);\n if (sources.length)\n Promise.all(sources.map(source => Promise.resolve(source(this.view)))).then(annotations => {\n let all = annotations.reduce((a, b) => a.concat(b));\n if (this.view.state.doc == state.doc)\n this.view.dispatch(setDiagnostics(this.view.state, all));\n }, error => { logException(this.view.state, error); });\n }\n }\n update(update) {\n let config = update.state.facet(lintConfig);\n if (update.docChanged || config != update.startState.facet(lintConfig) ||\n config.needsRefresh && config.needsRefresh(update)) {\n this.lintTime = Date.now() + config.delay;\n if (!this.set) {\n this.set = true;\n this.timeout = setTimeout(this.run, config.delay);\n }\n }\n }\n force() {\n if (this.set) {\n this.lintTime = Date.now();\n this.run();\n }\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n});\nconst lintConfig = /*@__PURE__*/Facet.define({\n combine(input) {\n return Object.assign({ sources: input.map(i => i.source).filter(x => x != null) }, combineConfig(input.map(i => i.config), {\n delay: 750,\n markerFilter: null,\n tooltipFilter: null,\n needsRefresh: null\n }, {\n needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u)\n }));\n }\n});\n/**\nGiven a diagnostic source, this function returns an extension that\nenables linting with that source. It will be called whenever the\neditor is idle (after its content changed). If `null` is given as\nsource, this only configures the lint extension.\n*/\nfunction linter(source, config = {}) {\n return [\n lintConfig.of({ source, config }),\n lintPlugin,\n lintExtensions\n ];\n}\n/**\nForces any linters [configured](https://codemirror.net/6/docs/ref/#lint.linter) to run when the\neditor is idle to run right away.\n*/\nfunction forceLinting(view) {\n let plugin = view.plugin(lintPlugin);\n if (plugin)\n plugin.force();\n}\nfunction assignKeys(actions) {\n let assigned = [];\n if (actions)\n actions: for (let { name } of actions) {\n for (let i = 0; i < name.length; i++) {\n let ch = name[i];\n if (/[a-zA-Z]/.test(ch) && !assigned.some(c => c.toLowerCase() == ch.toLowerCase())) {\n assigned.push(ch);\n continue actions;\n }\n }\n assigned.push(\"\");\n }\n return assigned;\n}\nfunction renderDiagnostic(view, diagnostic, inPanel) {\n var _a;\n let keys = inPanel ? assignKeys(diagnostic.actions) : [];\n return elt(\"li\", { class: \"cm-diagnostic cm-diagnostic-\" + diagnostic.severity }, elt(\"span\", { class: \"cm-diagnosticText\" }, diagnostic.renderMessage ? diagnostic.renderMessage() : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map((action, i) => {\n let fired = false, click = (e) => {\n e.preventDefault();\n if (fired)\n return;\n fired = true;\n let found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n action.apply(view, found.from, found.to);\n };\n let { name } = action, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1;\n let nameElt = keyIndex < 0 ? name : [name.slice(0, keyIndex),\n elt(\"u\", name.slice(keyIndex, keyIndex + 1)),\n name.slice(keyIndex + 1)];\n return elt(\"button\", {\n type: \"button\",\n class: \"cm-diagnosticAction\",\n onclick: click,\n onmousedown: click,\n \"aria-label\": ` Action: ${name}${keyIndex < 0 ? \"\" : ` (access key \"${keys[i]})\"`}.`\n }, nameElt);\n }), diagnostic.source && elt(\"div\", { class: \"cm-diagnosticSource\" }, diagnostic.source));\n}\nclass DiagnosticWidget extends WidgetType {\n constructor(diagnostic) {\n super();\n this.diagnostic = diagnostic;\n }\n eq(other) { return other.diagnostic == this.diagnostic; }\n toDOM() {\n return elt(\"span\", { class: \"cm-lintPoint cm-lintPoint-\" + this.diagnostic.severity });\n }\n}\nclass PanelItem {\n constructor(view, diagnostic) {\n this.diagnostic = diagnostic;\n this.id = \"item_\" + Math.floor(Math.random() * 0xffffffff).toString(16);\n this.dom = renderDiagnostic(view, diagnostic, true);\n this.dom.id = this.id;\n this.dom.setAttribute(\"role\", \"option\");\n }\n}\nclass LintPanel {\n constructor(view) {\n this.view = view;\n this.items = [];\n let onkeydown = (event) => {\n if (event.keyCode == 27) { // Escape\n closeLintPanel(this.view);\n this.view.focus();\n }\n else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length);\n }\n else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n this.moveSelection((this.selectedIndex + 1) % this.items.length);\n }\n else if (event.keyCode == 36) { // Home\n this.moveSelection(0);\n }\n else if (event.keyCode == 35) { // End\n this.moveSelection(this.items.length - 1);\n }\n else if (event.keyCode == 13) { // Enter\n this.view.focus();\n }\n else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { // A-Z\n let { diagnostic } = this.items[this.selectedIndex], keys = assignKeys(diagnostic.actions);\n for (let i = 0; i < keys.length; i++)\n if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) {\n let found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n diagnostic.actions[i].apply(view, found.from, found.to);\n }\n }\n else {\n return;\n }\n event.preventDefault();\n };\n let onclick = (event) => {\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].dom.contains(event.target))\n this.moveSelection(i);\n }\n };\n this.list = elt(\"ul\", {\n tabIndex: 0,\n role: \"listbox\",\n \"aria-label\": this.view.state.phrase(\"Diagnostics\"),\n onkeydown,\n onclick\n });\n this.dom = elt(\"div\", { class: \"cm-panel-lint\" }, this.list, elt(\"button\", {\n type: \"button\",\n name: \"close\",\n \"aria-label\": this.view.state.phrase(\"close\"),\n onclick: () => closeLintPanel(this.view)\n }, \"×\"));\n this.update();\n }\n get selectedIndex() {\n let selected = this.view.state.field(lintState).selected;\n if (!selected)\n return -1;\n for (let i = 0; i < this.items.length; i++)\n if (this.items[i].diagnostic == selected.diagnostic)\n return i;\n return -1;\n }\n update() {\n let { diagnostics, selected } = this.view.state.field(lintState);\n let i = 0, needsSync = false, newSelectedItem = null;\n diagnostics.between(0, this.view.state.doc.length, (_start, _end, { spec }) => {\n let found = -1, item;\n for (let j = i; j < this.items.length; j++)\n if (this.items[j].diagnostic == spec.diagnostic) {\n found = j;\n break;\n }\n if (found < 0) {\n item = new PanelItem(this.view, spec.diagnostic);\n this.items.splice(i, 0, item);\n needsSync = true;\n }\n else {\n item = this.items[found];\n if (found > i) {\n this.items.splice(i, found - i);\n needsSync = true;\n }\n }\n if (selected && item.diagnostic == selected.diagnostic) {\n if (!item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.setAttribute(\"aria-selected\", \"true\");\n newSelectedItem = item;\n }\n }\n else if (item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.removeAttribute(\"aria-selected\");\n }\n i++;\n });\n while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) {\n needsSync = true;\n this.items.pop();\n }\n if (this.items.length == 0) {\n this.items.push(new PanelItem(this.view, {\n from: -1, to: -1,\n severity: \"info\",\n message: this.view.state.phrase(\"No diagnostics\")\n }));\n needsSync = true;\n }\n if (newSelectedItem) {\n this.list.setAttribute(\"aria-activedescendant\", newSelectedItem.id);\n this.view.requestMeasure({\n key: this,\n read: () => ({ sel: newSelectedItem.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }),\n write: ({ sel, panel }) => {\n let scaleY = panel.height / this.list.offsetHeight;\n if (sel.top < panel.top)\n this.list.scrollTop -= (panel.top - sel.top) / scaleY;\n else if (sel.bottom > panel.bottom)\n this.list.scrollTop += (sel.bottom - panel.bottom) / scaleY;\n }\n });\n }\n else if (this.selectedIndex < 0) {\n this.list.removeAttribute(\"aria-activedescendant\");\n }\n if (needsSync)\n this.sync();\n }\n sync() {\n let domPos = this.list.firstChild;\n function rm() {\n let prev = domPos;\n domPos = prev.nextSibling;\n prev.remove();\n }\n for (let item of this.items) {\n if (item.dom.parentNode == this.list) {\n while (domPos != item.dom)\n rm();\n domPos = item.dom.nextSibling;\n }\n else {\n this.list.insertBefore(item.dom, domPos);\n }\n }\n while (domPos)\n rm();\n }\n moveSelection(selectedIndex) {\n if (this.selectedIndex < 0)\n return;\n let field = this.view.state.field(lintState);\n let selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic);\n if (!selection)\n return;\n this.view.dispatch({\n selection: { anchor: selection.from, head: selection.to },\n scrollIntoView: true,\n effects: movePanelSelection.of(selection)\n });\n }\n static open(view) { return new LintPanel(view); }\n}\nfunction svg(content, attrs = `viewBox=\"0 0 40 40\"`) {\n return `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${attrs}>${encodeURIComponent(content)}</svg>')`;\n}\nfunction underline(color) {\n return svg(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${color}\" fill=\"none\" stroke-width=\".7\"/>`, `width=\"6\" height=\"3\"`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-diagnostic\": {\n padding: \"3px 6px 3px 8px\",\n marginLeft: \"-1px\",\n display: \"block\",\n whiteSpace: \"pre-wrap\"\n },\n \".cm-diagnostic-error\": { borderLeft: \"5px solid #d11\" },\n \".cm-diagnostic-warning\": { borderLeft: \"5px solid orange\" },\n \".cm-diagnostic-info\": { borderLeft: \"5px solid #999\" },\n \".cm-diagnostic-hint\": { borderLeft: \"5px solid #66d\" },\n \".cm-diagnosticAction\": {\n font: \"inherit\",\n border: \"none\",\n padding: \"2px 4px\",\n backgroundColor: \"#444\",\n color: \"white\",\n borderRadius: \"3px\",\n marginLeft: \"8px\",\n cursor: \"pointer\"\n },\n \".cm-diagnosticSource\": {\n fontSize: \"70%\",\n opacity: .7\n },\n \".cm-lintRange\": {\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n paddingBottom: \"0.7px\",\n },\n \".cm-lintRange-error\": { backgroundImage: /*@__PURE__*/underline(\"#d11\") },\n \".cm-lintRange-warning\": { backgroundImage: /*@__PURE__*/underline(\"orange\") },\n \".cm-lintRange-info\": { backgroundImage: /*@__PURE__*/underline(\"#999\") },\n \".cm-lintRange-hint\": { backgroundImage: /*@__PURE__*/underline(\"#66d\") },\n \".cm-lintRange-active\": { backgroundColor: \"#ffdd9980\" },\n \".cm-tooltip-lint\": {\n padding: 0,\n margin: 0\n },\n \".cm-lintPoint\": {\n position: \"relative\",\n \"&:after\": {\n content: '\"\"',\n position: \"absolute\",\n bottom: 0,\n left: \"-2px\",\n borderLeft: \"3px solid transparent\",\n borderRight: \"3px solid transparent\",\n borderBottom: \"4px solid #d11\"\n }\n },\n \".cm-lintPoint-warning\": {\n \"&:after\": { borderBottomColor: \"orange\" }\n },\n \".cm-lintPoint-info\": {\n \"&:after\": { borderBottomColor: \"#999\" }\n },\n \".cm-lintPoint-hint\": {\n \"&:after\": { borderBottomColor: \"#66d\" }\n },\n \".cm-panel.cm-panel-lint\": {\n position: \"relative\",\n \"& ul\": {\n maxHeight: \"100px\",\n overflowY: \"auto\",\n \"& [aria-selected]\": {\n backgroundColor: \"#ddd\",\n \"& u\": { textDecoration: \"underline\" }\n },\n \"&:focus [aria-selected]\": {\n background_fallback: \"#bdf\",\n backgroundColor: \"Highlight\",\n color_fallback: \"white\",\n color: \"HighlightText\"\n },\n \"& u\": { textDecoration: \"none\" },\n padding: 0,\n margin: 0\n },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"2px\",\n background: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n }\n }\n});\nfunction severityWeight(sev) {\n return sev == \"error\" ? 4 : sev == \"warning\" ? 3 : sev == \"info\" ? 2 : 1;\n}\nclass LintGutterMarker extends GutterMarker {\n constructor(diagnostics) {\n super();\n this.diagnostics = diagnostics;\n this.severity = diagnostics.reduce((max, d) => severityWeight(max) < severityWeight(d.severity) ? d.severity : max, \"hint\");\n }\n toDOM(view) {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lint-marker cm-lint-marker-\" + this.severity;\n let diagnostics = this.diagnostics;\n let diagnosticsFilter = view.state.facet(lintGutterConfig).tooltipFilter;\n if (diagnosticsFilter)\n diagnostics = diagnosticsFilter(diagnostics, view.state);\n if (diagnostics.length)\n elt.onmouseover = () => gutterMarkerMouseOver(view, elt, diagnostics);\n return elt;\n }\n}\nfunction trackHoverOn(view, marker) {\n let mousemove = (event) => {\n let rect = marker.getBoundingClientRect();\n if (event.clientX > rect.left - 10 /* Hover.Margin */ && event.clientX < rect.right + 10 /* Hover.Margin */ &&\n event.clientY > rect.top - 10 /* Hover.Margin */ && event.clientY < rect.bottom + 10 /* Hover.Margin */)\n return;\n for (let target = event.target; target; target = target.parentNode) {\n if (target.nodeType == 1 && target.classList.contains(\"cm-tooltip-lint\"))\n return;\n }\n window.removeEventListener(\"mousemove\", mousemove);\n if (view.state.field(lintGutterTooltip))\n view.dispatch({ effects: setLintGutterTooltip.of(null) });\n };\n window.addEventListener(\"mousemove\", mousemove);\n}\nfunction gutterMarkerMouseOver(view, marker, diagnostics) {\n function hovered() {\n let line = view.elementAtHeight(marker.getBoundingClientRect().top + 5 - view.documentTop);\n const linePos = view.coordsAtPos(line.from);\n if (linePos) {\n view.dispatch({ effects: setLintGutterTooltip.of({\n pos: line.from,\n above: false,\n create() {\n return {\n dom: diagnosticsTooltip(view, diagnostics),\n getCoords: () => marker.getBoundingClientRect()\n };\n }\n }) });\n }\n marker.onmouseout = marker.onmousemove = null;\n trackHoverOn(view, marker);\n }\n let { hoverTime } = view.state.facet(lintGutterConfig);\n let hoverTimeout = setTimeout(hovered, hoverTime);\n marker.onmouseout = () => {\n clearTimeout(hoverTimeout);\n marker.onmouseout = marker.onmousemove = null;\n };\n marker.onmousemove = () => {\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(hovered, hoverTime);\n };\n}\nfunction markersForDiagnostics(doc, diagnostics) {\n let byLine = Object.create(null);\n for (let diagnostic of diagnostics) {\n let line = doc.lineAt(diagnostic.from);\n (byLine[line.from] || (byLine[line.from] = [])).push(diagnostic);\n }\n let markers = [];\n for (let line in byLine) {\n markers.push(new LintGutterMarker(byLine[line]).range(+line));\n }\n return RangeSet.of(markers, true);\n}\nconst lintGutterExtension = /*@__PURE__*/gutter({\n class: \"cm-gutter-lint\",\n markers: view => view.state.field(lintGutterMarkers),\n});\nconst lintGutterMarkers = /*@__PURE__*/StateField.define({\n create() {\n return RangeSet.empty;\n },\n update(markers, tr) {\n markers = markers.map(tr.changes);\n let diagnosticFilter = tr.state.facet(lintGutterConfig).markerFilter;\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let diagnostics = effect.value;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics || [], tr.state);\n markers = markersForDiagnostics(tr.state.doc, diagnostics.slice(0));\n }\n }\n return markers;\n }\n});\nconst setLintGutterTooltip = /*@__PURE__*/StateEffect.define();\nconst lintGutterTooltip = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(tooltip, tr) {\n if (tooltip && tr.docChanged)\n tooltip = hideTooltip(tr, tooltip) ? null : Object.assign(Object.assign({}, tooltip), { pos: tr.changes.mapPos(tooltip.pos) });\n return tr.effects.reduce((t, e) => e.is(setLintGutterTooltip) ? e.value : t, tooltip);\n },\n provide: field => showTooltip.from(field)\n});\nconst lintGutterTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-gutter-lint\": {\n width: \"1.4em\",\n \"& .cm-gutterElement\": {\n padding: \".2em\"\n }\n },\n \".cm-lint-marker\": {\n width: \"1em\",\n height: \"1em\"\n },\n \".cm-lint-marker-info\": {\n content: /*@__PURE__*/svg(`<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>`)\n },\n \".cm-lint-marker-warning\": {\n content: /*@__PURE__*/svg(`<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>`),\n },\n \".cm-lint-marker-error\": {\n content: /*@__PURE__*/svg(`<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>`)\n },\n});\nconst lintExtensions = [\n lintState,\n /*@__PURE__*/EditorView.decorations.compute([lintState], state => {\n let { selected, panel } = state.field(lintState);\n return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([\n activeMark.range(selected.from, selected.to)\n ]);\n }),\n /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip }),\n baseTheme\n];\nconst lintGutterConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n hoverTime: 300 /* Hover.Time */,\n markerFilter: null,\n tooltipFilter: null\n });\n }\n});\n/**\nReturns an extension that installs a gutter showing markers for\neach line that has diagnostics, which can be hovered over to see\nthe diagnostics.\n*/\nfunction lintGutter(config = {}) {\n return [lintGutterConfig.of(config), lintGutterMarkers, lintGutterExtension, lintGutterTheme, lintGutterTooltip];\n}\n/**\nIterate over the marked diagnostics for the given editor state,\ncalling `f` for each of them. Note that, if the document changed\nsince the diagnostics were created, the `Diagnostic` object will\nhold the original outdated position, whereas the `to` and `from`\narguments hold the diagnostic's current position.\n*/\nfunction forEachDiagnostic(state, f) {\n let lState = state.field(lintState, false);\n if (lState && lState.diagnostics.size)\n for (let iter = RangeSet.iter([lState.diagnostics]); iter.value; iter.next())\n f(iter.value.spec.diagnostic, iter.from, iter.to);\n}\n\nexport { closeLintPanel, diagnosticCount, forEachDiagnostic, forceLinting, lintGutter, lintKeymap, linter, nextDiagnostic, openLintPanel, previousDiagnostic, setDiagnostics, setDiagnosticsEffect };\n","import { lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap } from '@codemirror/view';\nexport { EditorView } from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap } from '@codemirror/language';\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands';\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search';\nimport { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from '@codemirror/autocomplete';\nimport { lintKeymap } from '@codemirror/lint';\n\n// (The superfluous function calls around the list of extensions work\n// around current limitations in tree-shaking software.)\n/**\nThis is an extension value that just pulls together a number of\nextensions that you might want in a basic editor. It is meant as a\nconvenient helper to quickly set up CodeMirror without installing\nand importing a lot of separate packages.\n\nSpecifically, it includes...\n\n - [the default command bindings](https://codemirror.net/6/docs/ref/#commands.defaultKeymap)\n - [line numbers](https://codemirror.net/6/docs/ref/#view.lineNumbers)\n - [special character highlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars)\n - [the undo history](https://codemirror.net/6/docs/ref/#commands.history)\n - [a fold gutter](https://codemirror.net/6/docs/ref/#language.foldGutter)\n - [custom selection drawing](https://codemirror.net/6/docs/ref/#view.drawSelection)\n - [drop cursor](https://codemirror.net/6/docs/ref/#view.dropCursor)\n - [multiple selections](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\n - [reindentation on input](https://codemirror.net/6/docs/ref/#language.indentOnInput)\n - [the default highlight style](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle) (as fallback)\n - [bracket matching](https://codemirror.net/6/docs/ref/#language.bracketMatching)\n - [bracket closing](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets)\n - [autocompletion](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion)\n - [rectangular selection](https://codemirror.net/6/docs/ref/#view.rectangularSelection) and [crosshair cursor](https://codemirror.net/6/docs/ref/#view.crosshairCursor)\n - [active line highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLine)\n - [active line gutter highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLineGutter)\n - [selection match highlighting](https://codemirror.net/6/docs/ref/#search.highlightSelectionMatches)\n - [search](https://codemirror.net/6/docs/ref/#search.searchKeymap)\n - [linting](https://codemirror.net/6/docs/ref/#lint.lintKeymap)\n\n(You'll probably want to add some language package to your setup\ntoo.)\n\nThis extension does not allow customization. The idea is that,\nonce you decide you want to configure your editor more precisely,\nyou take this package's source (which is just a bunch of imports\nand an array literal), copy it into your own code, and adjust it\nas desired.\n*/\nconst basicSetup = /*@__PURE__*/(() => [\n lineNumbers(),\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n foldGutter(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n bracketMatching(),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n highlightSelectionMatches(),\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...searchKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n ...lintKeymap\n ])\n])();\n/**\nA minimal set of extensions to create a functional editor. Only\nincludes [the default keymap](https://codemirror.net/6/docs/ref/#commands.defaultKeymap), [undo\nhistory](https://codemirror.net/6/docs/ref/#commands.history), [special character\nhighlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars), [custom selection\ndrawing](https://codemirror.net/6/docs/ref/#view.drawSelection), and [default highlight\nstyle](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle).\n*/\nconst minimalSetup = /*@__PURE__*/(() => [\n highlightSpecialChars(),\n history(),\n drawSelection(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n keymap.of([\n ...defaultKeymap,\n ...historyKeymap,\n ])\n])();\n\nexport { basicSetup, minimalSetup };\n"],"names":["crelt","elt","arguments","document","createElement","i","next","nodeType","Array","isArray","name","Object","prototype","hasOwnProperty","call","value","setAttribute","length","add","child","appendChild","createTextNode","RangeError","basicNormalize","String","normalize","x","SearchCursor","constructor","text","query","from","to","test","this","done","matches","buffer","bufferPos","iter","iterRange","bufferStart","peek","codePointAt","pop","nextOverlapping","str","fromCodePoint","start","codePointSize","norm","pos","code","charCodeAt","match","end","index","keep","splice","push","Symbol","iterator","empty","exec","baseFlags","unicode","RegExpCursor","options","curLine","MultilineRegExpCursor","re","RegExp","ignoreCase","startLine","lineAt","curLineStart","matchPos","toCharEnd","getLine","skip","lineBreak","slice","nextLine","off","lastIndex","flattened","WeakMap","FlattenedDoc","get","doc","cached","flat","sliceString","set","cachedFrom","chunkEnd","line","createLineDialog","view","input","class","state","selection","main","head","number","go","sign","ln","cl","percent","col","pc","lines","Math","round","docLine","max","min","EditorSelection","cursor","dispatch","effects","dialogEffect","of","EditorView","scrollIntoView","y","focus","dom","onkeydown","event","keyCode","preventDefault","onsubmit","phrase","type","StateEffect","define","dialogField","StateField","create","update","tr","e","is","provide","f","showPanel","val","baseTheme$1","baseTheme","padding","fontSize","defaultHighlightOptions","highlightWordAroundCursor","minSelectionLength","maxMatches","wholeWords","highlightConfig","Facet","combine","combineConfig","a","b","highlightSelectionMatches","ext","defaultTheme","matchHighlighter","matchDeco","Decoration","mark","mainMatchDeco","insideWordBoundaries","check","sliceDoc","CharCategory","Word","ViewPlugin","fromClass","decorations","getDeco","selectionSet","docChanged","viewportChanged","conf","facet","sel","ranges","none","range","word","wordAt","charCategorizer","len","insideWord","deco","part","visibleRanges","v","backgroundColor","searchConfigFacet","configs","top","caseSensitive","literal","regexp","wholeWord","createPanel","SearchPanel","scrollToMatch","SearchQuery","config","search","replace","valid","source","_a","validRegExp","unquoted","unquote","_","ch","eq","other","RegExpQuery","StringQuery","getCursor","st","EditorState","regexpCursor","stringCursor","QueryType","spec","undefined","toLowerCase","categorizer","buf","bufPos","charBefore","charAfter","super","nextMatch","curFrom","curTo","prevMatchInRange","prevMatch","getReplacement","_result","matchAll","limit","highlight","_from","_to","findClusterBreak","size","result","m","setSearchQuery","togglePanel","searchState","SearchState","defaultQuery","effect","panel","createSearchPanel","matchMark","selectedMatchMark","searchHighlighter","field","startState","builder","RangeSetBuilder","l","selected","some","r","finish","searchCommand","openSearchPanel","findNext","single","announceMatch","userEvent","selectSearchInput","findPrevious","prev","selectMatches","map","replaceNext","readOnly","replacement","changes","toText","insert","announce","replaceAll","announceText","fallback","_b","_c","_d","_e","selText","getSearchInput","getPanel","querySelector","root","activeElement","select","searchInput","appendConfig","searchExtensions","closeSearchPanel","contains","searchKeymap","key","run","scope","shift","cur","newSel","mainIndex","selectWord","searchedText","fullWord","cycled","findNextOccurrence","addRange","button","onclick","content","commit","bind","searchField","placeholder","form","onchange","onkeyup","replaceField","caseField","checked","reField","wordField","keydown","runScopeHandlers","target","shiftKey","transactions","setQuery","mount","AnnounceMargin","Break","lineEnd","position","right","border","font","margin","marginRight","whiteSpace","Prec","low","SelectedDiagnostic","diagnostic","LintState","diagnostics","init","markedDiagnostics","diagnosticFilter","lintConfig","markerFilter","d","widget","DiagnosticWidget","attributes","severity","markClass","inclusive","findDiagnostic","after","found","between","setDiagnosticsEffect","movePanelSelection","lintState","mapped","selPos","mapPos","LintPanel","open","s","activeMark","lintTooltip","side","stackStart","stackEnd","tooltipFilter","above","diagnosticsTooltip","renderDiagnostic","closeLintPanel","lintKeymap","concat","lintExtensions","anchor","assign","sources","filter","delay","needsRefresh","u","assignKeys","actions","assigned","c","inPanel","keys","renderMessage","message","action","fired","click","apply","keyIndex","indexOf","nameElt","onmousedown","WidgetType","toDOM","PanelItem","id","floor","random","toString","items","list","tabIndex","role","moveSelection","selectedIndex","toUpperCase","needsSync","newSelectedItem","_start","_end","item","j","hasAttribute","removeAttribute","requestMeasure","read","getBoundingClientRect","write","scaleY","height","offsetHeight","scrollTop","bottom","sync","domPos","firstChild","rm","nextSibling","remove","parentNode","insertBefore","underline","color","attrs","encodeURIComponent","svg","marginLeft","display","borderLeft","borderRadius","opacity","backgroundPosition","backgroundRepeat","paddingBottom","backgroundImage","left","borderRight","borderBottom","borderBottomColor","maxHeight","overflowY","textDecoration","background_fallback","color_fallback","background","compute","hoverTooltip","hideOn","tooltip","touchesRange","basicSetup","lineNumbers","highlightActiveLineGutter","highlightSpecialChars","history","foldGutter","drawSelection","dropCursor","allowMultipleSelections","indentOnInput","syntaxHighlighting","defaultHighlightStyle","bracketMatching","closeBrackets","autocompletion","rectangularSelection","crosshairCursor","highlightActiveLine","keymap","closeBracketsKeymap","defaultKeymap","historyKeymap","foldKeymap","completionKeymap","minimalSetup"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{Annotation as e,Facet as t,EditorSelection as n,Text as r,findClusterBreak as o,countColumn as l,combineConfig as s,StateField as i,Transaction as a,ChangeSet as c,ChangeDesc as f,StateEffect as u,CharCategory as h}from"./codemirror_state-BCMMU3_u.js";import{E as m,D as d}from"./codemirror_view-L6gkqEE1.js";import{q as p,r as g,u as y,v,s as A,w as k,b as w,i as D}from"./codemirror_language-en2b9geg.js";const S=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=I(e.state,n.from);return r.line?M(e):!!r.block&&T(e)};function x(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let o=e(t,n);return!!o&&(r(n.update(o)),!0)}}const M=x(J,0),B=x(J,1),C=x(J,2),O=x(R,0),E=x(R,1),b=x(R,2),T=x(((e,t)=>R(e,t,function(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),o=n.to<=r.to?r:e.doc.lineAt(n.to),l=t.length-1;l>=0&&t[l].to>r.from?t[l].to=o.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:o.to})}return t}(t))),0);function I(e,t){let n=e.languageDataAt("commentTokens",t);return n.length?n[0]:{}}const V=50;function R(e,t,n=t.selection.ranges){let r=n.map((e=>I(t,e.from).block));if(!r.every((e=>e)))return null;let o=n.map(((e,n)=>function(e,{open:t,close:n},r,o){let l,s,i=e.sliceDoc(r-V,r),a=e.sliceDoc(o,o+V),c=/\s*$/.exec(i)[0].length,f=/^\s*/.exec(a)[0].length,u=i.length-c;if(i.slice(u-t.length,u)==t&&a.slice(f,f+n.length)==n)return{open:{pos:r-c,margin:c&&1},close:{pos:o+f,margin:f&&1}};o-r<=2*V?l=s=e.sliceDoc(r,o):(l=e.sliceDoc(r,r+V),s=e.sliceDoc(o-V,o));let h=/^\s*/.exec(l)[0].length,m=/\s*$/.exec(s)[0].length,d=s.length-m-n.length;return l.slice(h,h+t.length)==t&&s.slice(d,d+n.length)==n?{open:{pos:r+h+t.length,margin:/\s/.test(l.charAt(h+t.length))?1:0},close:{pos:o-m-n.length,margin:/\s/.test(s.charAt(d-1))?1:0}}:null}(t,r[n],e.from,e.to)));if(2!=e&&!o.every((e=>e)))return{changes:t.changes(n.map(((e,t)=>o[t]?[]:[{from:e.from,insert:r[t].open+" "},{from:e.to,insert:" "+r[t].close}])))};if(1!=e&&o.some((e=>e))){let e=[];for(let t,n=0;n<o.length;n++)if(t=o[n]){let o=r[n],{open:l,close:s}=t;e.push({from:l.pos-o.open.length,to:l.pos+l.margin},{from:s.pos-s.margin,to:s.pos+o.close.length})}return{changes:e}}return null}function J(e,t,n=t.selection.ranges){let r=[],o=-1;for(let{from:e,to:l}of n){let n=r.length,s=1e9,i=I(t,e).line;if(i){for(let n=e;n<=l;){let a=t.doc.lineAt(n);if(a.from>o&&(e==l||l>a.from)){o=a.from;let e=/^\s*/.exec(a.text)[0].length,t=e==a.length,n=a.text.slice(e,e+i.length)==i?e:-1;e<a.text.length&&e<s&&(s=e),r.push({line:a,comment:n,token:i,indent:e,empty:t,single:!1})}n=a.to+1}if(s<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=s);r.length==n+1&&(r[n].single=!0)}}if(2!=e&&r.some((e=>e.comment<0&&(!e.empty||e.single)))){let e=[];for(let{line:t,token:n,indent:o,empty:l,single:s}of r)!s&&l||e.push({from:t.from+o,insert:n+" "});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}if(1!=e&&r.some((e=>e.comment>=0))){let e=[];for(let{line:t,comment:n,token:o}of r)if(n>=0){let r=t.from+n,l=r+o.length;" "==t.text[l-t.from]&&l++,e.push({from:r,to:l})}return{changes:e}}return null}const L=e.define(),N=e.define(),U=t.define(),H=t.define({combine:e=>s(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}),z=i.define({create:()=>ie.empty,update(e,t){let n=t.state.facet(H),r=t.annotation(L);if(r){let o=X.fromTransaction(t,r.selection),l=r.side,s=0==l?e.undone:e.done;return s=o?Y(s,s.length,n.minDepth,o):ne(s,t.startState.selection),new ie(0==l?r.rest:s,0==l?s:r.rest)}let o=t.annotation(N);if("full"!=o&&"before"!=o||(e=e.isolate()),!1===t.annotation(a.addToHistory))return t.changes.empty?e:e.addMapping(t.changes.desc);let l=X.fromTransaction(t),s=t.annotation(a.time),i=t.annotation(a.userEvent);return l?e=e.addChanges(l,s,i,n,t):t.selection&&(e=e.addSelection(t.startState.selection,s,i,n.newGroupDelay)),"full"!=o&&"after"!=o||(e=e.isolate()),e},toJSON:e=>({done:e.done.map((e=>e.toJSON())),undone:e.undone.map((e=>e.toJSON()))}),fromJSON:e=>new ie(e.done.map(X.fromJSON),e.undone.map(X.fromJSON))});function j(e={}){return[z,H.of(e),m.domEventHandlers({beforeinput(e,t){let n="historyUndo"==e.inputType?P:"historyRedo"==e.inputType?W:null;return!!n&&(e.preventDefault(),n(t))}})]}const G=z;function q(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let o=n.field(z,!1);if(!o)return!1;let l=o.pop(e,n,t);return!!l&&(r(l),!0)}}const P=q(0,!1),W=q(1,!1),$=q(0,!0),_=q(1,!0);function F(e){return function(t){let n=t.field(z,!1);if(!n)return 0;let r=0==e?n.done:n.undone;return r.length-(r.length&&!r[0].changes?1:0)}}const K=F(0),Q=F(1);class X{constructor(e,t,n,r,o){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=o}setSelAfter(e){return new X(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:null===(e=this.changes)||void 0===e?void 0:e.toJSON(),mapped:null===(t=this.mapped)||void 0===t?void 0:t.toJSON(),startSelection:null===(n=this.startSelection)||void 0===n?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map((e=>e.toJSON()))}}static fromJSON(e){return new X(e.changes&&c.fromJSON(e.changes),[],e.mapped&&f.fromJSON(e.mapped),e.startSelection&&n.fromJSON(e.startSelection),e.selectionsAfter.map(n.fromJSON))}static fromTransaction(e,t){let n=ee;for(let t of e.startState.facet(U)){let r=t(e);r.length&&(n=n.concat(r))}return!n.length&&e.changes.empty?null:new X(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,ee)}static selection(e){return new X(void 0,ee,void 0,void 0,e)}}function Y(e,t,n,r){let o=t+1>n+20?t-n-1:0,l=e.slice(o,t);return l.push(r),l}function Z(e,t){return e.length?t.length?e.concat(t):e:t}const ee=[],te=200;function ne(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-te));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),Y(e,e.length-1,1e9,n.setSelAfter(r)))}return[X.selection([t])]}function re(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function oe(e,t){if(!e.length)return e;let n=e.length,r=ee;for(;n;){let o=le(e[n-1],t,r);if(o.changes&&!o.changes.empty||o.effects.length){let t=e.slice(0,n);return t[n-1]=o,t}t=o.mapped,n--,r=o.selectionsAfter}return r.length?[X.selection(r)]:ee}function le(e,t,n){let r=Z(e.selectionsAfter.length?e.selectionsAfter.map((e=>e.map(t))):ee,n);if(!e.changes)return X.selection(r);let o=e.changes.map(t),l=t.mapDesc(e.changes,!0),s=e.mapped?e.mapped.composeDesc(l):l;return new X(o,u.mapEffects(e.effects,t),s,e.startSelection.map(l),r)}const se=/^(input\.type|delete)($|\.)/;class ie{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new ie(this.done,this.undone):this}addChanges(e,t,n,r,o){let l=this.done,s=l[l.length-1];return l=s&&s.changes&&!s.changes.empty&&e.changes&&(!n||se.test(n))&&(!s.selectionsAfter.length&&t-this.prevTime<r.newGroupDelay&&r.joinToEvent(o,function(e,t){let n=[],r=!1;return e.iterChangedRanges(((e,t)=>n.push(e,t))),t.iterChangedRanges(((e,t,o,l)=>{for(let e=0;e<n.length;){let t=n[e++],s=n[e++];l>=t&&o<=s&&(r=!0)}})),r}(s.changes,e.changes))||"input.type.compose"==n)?Y(l,l.length-1,r.minDepth,new X(e.changes.compose(s.changes),Z(e.effects,s.effects),s.mapped,s.startSelection,ee)):Y(l,l.length,r.minDepth,e),new ie(l,ee,t,n)}addSelection(e,t,n,r){let o=this.done.length?this.done[this.done.length-1].selectionsAfter:ee;return o.length>0&&t-this.prevTime<r&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&(l=o[o.length-1],s=e,l.ranges.length==s.ranges.length&&0===l.ranges.filter(((e,t)=>e.empty!=s.ranges[t].empty)).length)?this:new ie(ne(this.done,e),this.undone,t,n);var l,s}addMapping(e){return new ie(oe(this.done,e),oe(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=0==e?this.done:this.undone;if(0==r.length)return null;let o=r[r.length-1],l=o.selectionsAfter[0]||t.selection;if(n&&o.selectionsAfter.length)return t.update({selection:o.selectionsAfter[o.selectionsAfter.length-1],annotations:L.of({side:e,rest:re(r),selection:l}),userEvent:0==e?"select.undo":"select.redo",scrollIntoView:!0});if(o.changes){let n=1==r.length?ee:r.slice(0,r.length-1);return o.mapped&&(n=oe(n,o.mapped)),t.update({changes:o.changes,selection:o.startSelection,effects:o.effects,annotations:L.of({side:e,rest:n,selection:l}),filter:!1,userEvent:0==e?"undo":"redo",scrollIntoView:!0})}return null}}ie.empty=new ie(ee,ee);const ae=[{key:"Mod-z",run:P,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:W,preventDefault:!0},{linux:"Ctrl-Shift-z",run:W,preventDefault:!0},{key:"Mod-u",run:$,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:_,preventDefault:!0}];function ce(e,t){return n.create(e.ranges.map(t),e.mainIndex)}function fe(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:"select"})}function ue({state:e,dispatch:t},n){let r=ce(e.selection,n);return!r.eq(e.selection,!0)&&(t(fe(e,r)),!0)}function he(e,t){return n.cursor(t?e.to:e.from)}function me(e,t){return ue(e,(n=>n.empty?e.moveByChar(n,t):he(n,t)))}function de(e){return e.textDirectionAt(e.state.selection.main.head)==d.LTR}const pe=e=>me(e,!de(e)),ge=e=>me(e,de(e)),ye=e=>me(e,!0),ve=e=>me(e,!1);function Ae(e,t){return ue(e,(n=>n.empty?e.moveByGroup(n,t):he(n,t)))}const ke=e=>Ae(e,!de(e)),we=e=>Ae(e,de(e)),De=e=>Ae(e,!0),Se=e=>Ae(e,!1),xe="undefined"!=typeof Intl&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Me(e,t,r){let o=e.state.charCategorizer(t.from),l=h.Space,s=t.from,i=0,a=!1,c=!1,f=!1,u=t=>{if(a)return!1;s+=r?t.length:-t.length;let n,u=o(t);if(u==h.Word&&t.charCodeAt(0)<128&&/[\W_]/.test(t)&&(u=-1),l==h.Space&&(l=u),l!=u)return!1;if(l==h.Word)if(t.toLowerCase()==t){if(!r&&c)return!1;f=!0}else if(f){if(r)return!1;a=!0}else{if(c&&r&&o(n=e.state.sliceDoc(s,s+1))==h.Word&&n.toLowerCase()==n)return!1;c=!0}return i++,!0},m=e.moveByChar(t,r,(e=>(u(e),u)));if(xe&&l==h.Word&&m.from==t.from+i*(r?1:-1)){let o=Math.min(t.head,m.head),l=Math.max(t.head,m.head),s=e.state.sliceDoc(o,l);if(s.length>1&&/[\u4E00-\uffff]/.test(s)){let e=Array.from(xe.segment(s));if(e.length>1)return r?n.cursor(t.head+e[1].index,-1):n.cursor(m.head+e[e.length-1].index,1)}}return m}function Be(e,t){return ue(e,(n=>n.empty?Me(e,n,t):he(n,t)))}const Ce=e=>Be(e,!0),Oe=e=>Be(e,!1);function Ee(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function be(e,t,r){let o,l,s=A(e).resolveInner(t.head),i=r?w.closedBy:w.openedBy;for(let n=t.head;;){let t=r?s.childAfter(n):s.childBefore(n);if(!t)break;Ee(e,t,i)?s=t:n=r?t.to:t.from}return l=s.type.prop(i)&&(o=r?v(e,s.from,1):v(e,s.to,-1))&&o.matched?r?o.end.to:o.end.from:r?s.to:s.from,n.cursor(l,r?-1:1)}const Te=e=>ue(e,(t=>be(e.state,t,!de(e)))),Ie=e=>ue(e,(t=>be(e.state,t,de(e))));function Ve(e,t){return ue(e,(n=>{if(!n.empty)return he(n,t);let r=e.moveVertically(n,t);return r.head!=n.head?r:e.moveToLineBoundary(n,t)}))}const Re=e=>Ve(e,!1),Je=e=>Ve(e,!0);function Le(e){let t,n=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,r=0,o=0;if(n){for(let t of e.state.facet(m.scrollMargins)){let n=t(e);(null==n?void 0:n.top)&&(r=Math.max(null==n?void 0:n.top,r)),(null==n?void 0:n.bottom)&&(o=Math.max(null==n?void 0:n.bottom,o))}t=e.scrollDOM.clientHeight-r-o}else t=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:o,selfScroll:n,height:Math.max(e.defaultLineHeight,t-5)}}function Ne(e,t){let n,r=Le(e),{state:o}=e,l=ce(o.selection,(n=>n.empty?e.moveVertically(n,t,r.height):he(n,t)));if(l.eq(o.selection))return!1;if(r.selfScroll){let t=e.coordsAtPos(o.selection.main.head),s=e.scrollDOM.getBoundingClientRect(),i=s.top+r.marginTop,a=s.bottom-r.marginBottom;t&&t.top>i&&t.bottom<a&&(n=m.scrollIntoView(l.main.head,{y:"start",yMargin:t.top-i}))}return e.dispatch(fe(o,l),{effects:n}),!0}const Ue=e=>Ne(e,!1),He=e=>Ne(e,!0);function ze(e,t,r){let o=e.lineBlockAt(t.head),l=e.moveToLineBoundary(t,r);if(l.head==t.head&&l.head!=(r?o.to:o.from)&&(l=e.moveToLineBoundary(t,r,!1)),!r&&l.head==o.from&&o.length){let r=/^\s*/.exec(e.state.sliceDoc(o.from,Math.min(o.from+100,o.to)))[0].length;r&&t.head!=o.from+r&&(l=n.cursor(o.from+r))}return l}const je=e=>ue(e,(t=>ze(e,t,!0))),Ge=e=>ue(e,(t=>ze(e,t,!1))),qe=e=>ue(e,(t=>ze(e,t,!de(e)))),Pe=e=>ue(e,(t=>ze(e,t,de(e)))),We=e=>ue(e,(t=>n.cursor(e.lineBlockAt(t.head).from,1))),$e=e=>ue(e,(t=>n.cursor(e.lineBlockAt(t.head).to,-1)));function _e(e,t,r){let o=!1,l=ce(e.selection,(t=>{let l=v(e,t.head,-1)||v(e,t.head,1)||t.head>0&&v(e,t.head-1,1)||t.head<e.doc.length&&v(e,t.head+1,-1);if(!l||!l.end)return t;o=!0;let s=l.start.from==t.head?l.end.to:l.end.from;return r?n.range(t.anchor,s):n.cursor(s)}));return!!o&&(t(fe(e,l)),!0)}const Fe=({state:e,dispatch:t})=>_e(e,t,!1),Ke=({state:e,dispatch:t})=>_e(e,t,!0);function Qe(e,t){let r=ce(e.state.selection,(e=>{let r=t(e);return n.range(e.anchor,r.head,r.goalColumn,r.bidiLevel||void 0)}));return!r.eq(e.state.selection)&&(e.dispatch(fe(e.state,r)),!0)}function Xe(e,t){return Qe(e,(n=>e.moveByChar(n,t)))}const Ye=e=>Xe(e,!de(e)),Ze=e=>Xe(e,de(e)),et=e=>Xe(e,!0),tt=e=>Xe(e,!1);function nt(e,t){return Qe(e,(n=>e.moveByGroup(n,t)))}const rt=e=>nt(e,!de(e)),ot=e=>nt(e,de(e)),lt=e=>nt(e,!0),st=e=>nt(e,!1);function it(e,t){return Qe(e,(n=>Me(e,n,t)))}const at=e=>it(e,!0),ct=e=>it(e,!1),ft=e=>Qe(e,(t=>be(e.state,t,!de(e)))),ut=e=>Qe(e,(t=>be(e.state,t,de(e))));function ht(e,t){return Qe(e,(n=>e.moveVertically(n,t)))}const mt=e=>ht(e,!1),dt=e=>ht(e,!0);function pt(e,t){return Qe(e,(n=>e.moveVertically(n,t,Le(e).height)))}const gt=e=>pt(e,!1),yt=e=>pt(e,!0),vt=e=>Qe(e,(t=>ze(e,t,!0))),At=e=>Qe(e,(t=>ze(e,t,!1))),kt=e=>Qe(e,(t=>ze(e,t,!de(e)))),wt=e=>Qe(e,(t=>ze(e,t,de(e)))),Dt=e=>Qe(e,(t=>n.cursor(e.lineBlockAt(t.head).from))),St=e=>Qe(e,(t=>n.cursor(e.lineBlockAt(t.head).to))),xt=({state:e,dispatch:t})=>(t(fe(e,{anchor:0})),!0),Mt=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.doc.length})),!0),Bt=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.selection.main.anchor,head:0})),!0),Ct=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Ot=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:"select"})),!0),Et=({state:e,dispatch:t})=>{let r=_t(e).map((({from:t,to:r})=>n.range(t,Math.min(r+1,e.doc.length))));return t(e.update({selection:n.create(r),userEvent:"select"})),!0},bt=({state:e,dispatch:t})=>{let r=ce(e.selection,(t=>{var r;for(let o=A(e).resolveStack(t.from,1);o;o=o.next){let{node:e}=o;if((e.from<t.from&&e.to>=t.to||e.to>t.to&&e.from<=t.from)&&(null===(r=e.parent)||void 0===r?void 0:r.parent))return n.range(e.to,e.from)}return t}));return t(fe(e,r)),!0},Tt=({state:e,dispatch:t})=>{let r=e.selection,o=null;return r.ranges.length>1?o=n.create([r.main]):r.main.empty||(o=n.create([n.cursor(r.main.head)])),!!o&&(t(fe(e,o)),!0)};function It(e,t){if(e.state.readOnly)return!1;let r="delete.selection",{state:o}=e,l=o.changeByRange((o=>{let{from:l,to:s}=o;if(l==s){let n=t(o);n<l?(r="delete.backward",n=Vt(e,n,!1)):n>l&&(r="delete.forward",n=Vt(e,n,!0)),l=Math.min(l,n),s=Math.max(s,n)}else l=Vt(e,l,!1),s=Vt(e,s,!0);return l==s?{range:o}:{changes:{from:l,to:s},range:n.cursor(l,l<o.head?-1:1)}}));return!l.changes.empty&&(e.dispatch(o.update(l,{scrollIntoView:!0,userEvent:r,effects:"delete.selection"==r?m.announce.of(o.phrase("Selection deleted")):void 0})),!0)}function Vt(e,t,n){if(e instanceof m)for(let r of e.state.facet(m.atomicRanges).map((t=>t(e))))r.between(t,t,((e,r)=>{e<t&&r>t&&(t=n?r:e)}));return t}const Rt=(e,t)=>It(e,(n=>{let r,s,i=n.from,{state:a}=e,c=a.doc.lineAt(i);if(!t&&i>c.from&&i<c.from+200&&!/[^ \t]/.test(r=c.text.slice(0,i-c.from))){if("\t"==r[r.length-1])return i-1;let e=l(r,a.tabSize)%k(a)||k(a);for(let t=0;t<e&&" "==r[r.length-1-t];t++)i--;s=i}else s=o(c.text,i-c.from,t,t)+c.from,s==i&&c.number!=(t?a.doc.lines:1)?s+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(c.text.slice(s-c.from,i-c.from))&&(s=o(c.text,s-c.from,!1,!1)+c.from);return s})),Jt=e=>Rt(e,!1),Lt=e=>Rt(e,!0),Nt=(e,t)=>It(e,(n=>{let r=n.head,{state:l}=e,s=l.doc.lineAt(r),i=l.charCategorizer(r);for(let e=null;;){if(r==(t?s.to:s.from)){r==n.head&&s.number!=(t?l.doc.lines:1)&&(r+=t?1:-1);break}let a=o(s.text,r-s.from,t)+s.from,c=s.text.slice(Math.min(r,a)-s.from,Math.max(r,a)-s.from),f=i(c);if(null!=e&&f!=e)break;" "==c&&r==n.head||(e=f),r=a}return r})),Ut=e=>Nt(e,!1),Ht=e=>Nt(e,!0),zt=e=>It(e,(t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})),jt=e=>It(e,(t=>{let n=e.lineBlockAt(t.head).from;return t.head>n?n:Math.max(0,t.head-1)})),Gt=e=>It(e,(t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)})),qt=e=>It(e,(t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})),Pt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=[];for(let t=0,r="",o=e.doc.iter();;){if(o.next(),o.lineBreak||o.done){let e=r.search(/\s+$/);if(e>-1&&n.push({from:t-(r.length-e),to:t}),o.done)break;r=""}else r=o.value;t+=o.value.length}return!!n.length&&(t(e.update({changes:n,userEvent:"delete"})),!0)},Wt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let o=e.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:r.of(["",""])},range:n.cursor(e.from)})));return t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0},$t=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange((t=>{if(!t.empty||0==t.from||t.from==e.doc.length)return{range:t};let r=t.from,l=e.doc.lineAt(r),s=r==l.from?r-1:o(l.text,r-l.from,!1)+l.from,i=r==l.to?r+1:o(l.text,r-l.from,!0)+l.from;return{changes:{from:s,to:i,insert:e.doc.slice(r,i).append(e.doc.slice(s,r))},range:n.cursor(i)}}));return!r.changes.empty&&(t(e.update(r,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function _t(e){let t=[],n=-1;for(let r of e.selection.ranges){let o=e.doc.lineAt(r.from),l=e.doc.lineAt(r.to);if(r.empty||r.to!=l.from||(l=e.doc.lineAt(r.to-1)),n>=o.number){let e=t[t.length-1];e.to=l.to,e.ranges.push(r)}else t.push({from:o.from,to:l.to,ranges:[r]});n=l.number+1}return t}function Ft(e,t,r){if(e.readOnly)return!1;let o=[],l=[];for(let t of _t(e)){if(r?t.to==e.doc.length:0==t.from)continue;let s=e.doc.lineAt(r?t.to+1:t.from-1),i=s.length+1;if(r){o.push({from:t.to,to:s.to},{from:t.from,insert:s.text+e.lineBreak});for(let r of t.ranges)l.push(n.range(Math.min(e.doc.length,r.anchor+i),Math.min(e.doc.length,r.head+i)))}else{o.push({from:s.from,to:t.from},{from:t.to,insert:e.lineBreak+s.text});for(let e of t.ranges)l.push(n.range(e.anchor-i,e.head-i))}}return!!o.length&&(t(e.update({changes:o,scrollIntoView:!0,selection:n.create(l,e.selection.mainIndex),userEvent:"move.line"})),!0)}const Kt=({state:e,dispatch:t})=>Ft(e,t,!1),Qt=({state:e,dispatch:t})=>Ft(e,t,!0);function Xt(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of _t(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});return t(e.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Yt=({state:e,dispatch:t})=>Xt(e,t,!1),Zt=({state:e,dispatch:t})=>Xt(e,t,!0),en=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(_t(t).map((({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n})))),r=ce(t.selection,(t=>e.moveVertically(t,!0))).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0},tn=({state:e,dispatch:t})=>(t(e.update(e.replaceSelection(e.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);const nn=on(!1),rn=on(!0);function on(e){return({state:t,dispatch:o})=>{if(t.readOnly)return!1;let s=t.changeByRange((o=>{let{from:s,to:i}=o,a=t.doc.lineAt(s),c=!e&&s==i&&function(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n,r=A(e).resolveInner(t),o=r.childBefore(t),l=r.childAfter(t);return o&&l&&o.to<=t&&l.from>=t&&(n=o.type.prop(w.closedBy))&&n.indexOf(l.name)>-1&&e.doc.lineAt(o.to).from==e.doc.lineAt(l.from).from&&!/\S/.test(e.sliceDoc(o.to,l.from))?{from:o.to,to:l.from}:null}(t,s);e&&(s=i=(i<=a.to?a:t.doc.lineAt(i)).to);let f=new p(t,{simulateBreak:s,simulateDoubleBreak:!!c}),u=g(f,s);for(null==u&&(u=l(/^\s*/.exec(t.doc.lineAt(s).text)[0],t.tabSize));i<a.to&&/\s/.test(a.text[i-a.from]);)i++;c?({from:s,to:i}=c):s>a.from&&s<a.from+100&&!/\S/.test(a.text.slice(0,s))&&(s=a.from);let h=["",y(t,u)];return c&&h.push(y(t,f.lineIndent(a.from,-1))),{changes:{from:s,to:i,insert:r.of(h)},range:n.cursor(s+1+h[1].length)}}));return o(t.update(s,{scrollIntoView:!0,userEvent:"input"})),!0}}function ln(e,t){let r=-1;return e.changeByRange((o=>{let l=[];for(let n=o.from;n<=o.to;){let s=e.doc.lineAt(n);s.number>r&&(o.empty||o.to>s.from)&&(t(s,l,o),r=s.number),n=s.to+1}let s=e.changes(l);return{changes:l,range:n.range(s.mapPos(o.anchor,1),s.mapPos(o.head,1))}}))}const sn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new p(e,{overrideIndentation:e=>{let t=n[e];return null==t?-1:t}}),o=ln(e,((t,o,l)=>{let s=g(r,t.from);if(null==s)return;/\S/.test(t.text)||(s=0);let i=/^\s*/.exec(t.text)[0],a=y(e,s);(i!=a||l.from<t.from+i.length)&&(n[t.from]=s,o.push({from:t.from,to:t.from+i.length,insert:a}))}));return o.changes.empty||t(e.update(o,{userEvent:"indent"})),!0},an=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(ln(e,((t,n)=>{n.push({from:t.from,insert:e.facet(D)})})),{userEvent:"input.indent"})),!0),cn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(ln(e,((t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let o=l(r,e.tabSize),s=0,i=y(e,Math.max(0,o-k(e)));for(;s<r.length&&s<i.length&&r.charCodeAt(s)==i.charCodeAt(s);)s++;n.push({from:t.from+s,to:t.from+r.length,insert:i.slice(s)})})),{userEvent:"delete.dedent"})),!0),fn=({state:e,dispatch:t})=>e.selection.ranges.some((e=>!e.empty))?an({state:e,dispatch:t}):(t(e.update(e.replaceSelection("\t"),{scrollIntoView:!0,userEvent:"input"})),!0),un=[{key:"Ctrl-b",run:pe,shift:Ye,preventDefault:!0},{key:"Ctrl-f",run:ge,shift:Ze},{key:"Ctrl-p",run:Re,shift:mt},{key:"Ctrl-n",run:Je,shift:dt},{key:"Ctrl-a",run:We,shift:Dt},{key:"Ctrl-e",run:$e,shift:St},{key:"Ctrl-d",run:Lt},{key:"Ctrl-h",run:Jt},{key:"Ctrl-k",run:zt},{key:"Ctrl-Alt-h",run:Ut},{key:"Ctrl-o",run:Wt},{key:"Ctrl-t",run:$t},{key:"Ctrl-v",run:He}],hn=[{key:"ArrowLeft",run:pe,shift:Ye,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:ke,shift:rt,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:qe,shift:kt,preventDefault:!0},{key:"ArrowRight",run:ge,shift:Ze,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:we,shift:ot,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Pe,shift:wt,preventDefault:!0},{key:"ArrowUp",run:Re,shift:mt,preventDefault:!0},{mac:"Cmd-ArrowUp",run:xt,shift:Bt},{mac:"Ctrl-ArrowUp",run:Ue,shift:gt},{key:"ArrowDown",run:Je,shift:dt,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Mt,shift:Ct},{mac:"Ctrl-ArrowDown",run:He,shift:yt},{key:"PageUp",run:Ue,shift:gt},{key:"PageDown",run:He,shift:yt},{key:"Home",run:Ge,shift:At,preventDefault:!0},{key:"Mod-Home",run:xt,shift:Bt},{key:"End",run:je,shift:vt,preventDefault:!0},{key:"Mod-End",run:Mt,shift:Ct},{key:"Enter",run:nn},{key:"Mod-a",run:Ot},{key:"Backspace",run:Jt,shift:Jt},{key:"Delete",run:Lt},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Ut},{key:"Mod-Delete",mac:"Alt-Delete",run:Ht},{mac:"Mod-Backspace",run:Gt},{mac:"Mod-Delete",run:qt}].concat(un.map((e=>({mac:e.key,run:e.run,shift:e.shift})))),mn=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Te,shift:ft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Ie,shift:ut},{key:"Alt-ArrowUp",run:Kt},{key:"Shift-Alt-ArrowUp",run:Yt},{key:"Alt-ArrowDown",run:Qt},{key:"Shift-Alt-ArrowDown",run:Zt},{key:"Escape",run:Tt},{key:"Mod-Enter",run:rn},{key:"Alt-l",mac:"Ctrl-l",run:Et},{key:"Mod-i",run:bt,preventDefault:!0},{key:"Mod-[",run:cn},{key:"Mod-]",run:an},{key:"Mod-Alt-\\",run:sn},{key:"Shift-Mod-k",run:en},{key:"Shift-Mod-\\",run:Fe},{key:"Mod-/",run:S},{key:"Alt-A",run:O}].concat(hn),dn={key:"Tab",run:an,shift:cn};export{E as blockComment,b as blockUncomment,Zt as copyLineDown,Yt as copyLineUp,ve as cursorCharBackward,ye as cursorCharForward,pe as cursorCharLeft,ge as cursorCharRight,Mt as cursorDocEnd,xt as cursorDocStart,Se as cursorGroupBackward,De as cursorGroupForward,ke as cursorGroupLeft,we as cursorGroupRight,Ge as cursorLineBoundaryBackward,je as cursorLineBoundaryForward,qe as cursorLineBoundaryLeft,Pe as cursorLineBoundaryRight,Je as cursorLineDown,$e as cursorLineEnd,We as cursorLineStart,Re as cursorLineUp,Fe as cursorMatchingBracket,He as cursorPageDown,Ue as cursorPageUp,Oe as cursorSubwordBackward,Ce as cursorSubwordForward,Te as cursorSyntaxLeft,Ie as cursorSyntaxRight,mn as defaultKeymap,Jt as deleteCharBackward,Lt as deleteCharForward,Ut as deleteGroupBackward,Ht as deleteGroupForward,en as deleteLine,Gt as deleteLineBoundaryBackward,qt as deleteLineBoundaryForward,zt as deleteToLineEnd,jt as deleteToLineStart,Pt as deleteTrailingWhitespace,un as emacsStyleKeymap,j as history,G as historyField,ae as historyKeymap,cn as indentLess,an as indentMore,sn as indentSelection,dn as indentWithTab,rn as insertBlankLine,tn as insertNewline,nn as insertNewlineAndIndent,fn as insertTab,U as invertedEffects,N as isolateHistory,B as lineComment,C as lineUncomment,Qt as moveLineDown,Kt as moveLineUp,W as redo,Q as redoDepth,_ as redoSelection,Ot as selectAll,tt as selectCharBackward,et as selectCharForward,Ye as selectCharLeft,Ze as selectCharRight,Ct as selectDocEnd,Bt as selectDocStart,st as selectGroupBackward,lt as selectGroupForward,rt as selectGroupLeft,ot as selectGroupRight,Et as selectLine,At as selectLineBoundaryBackward,vt as selectLineBoundaryForward,kt as selectLineBoundaryLeft,wt as selectLineBoundaryRight,dt as selectLineDown,St as selectLineEnd,Dt as selectLineStart,mt as selectLineUp,Ke as selectMatchingBracket,yt as selectPageDown,gt as selectPageUp,bt as selectParentSyntax,ct as selectSubwordBackward,at as selectSubwordForward,ft as selectSyntaxLeft,ut as selectSyntaxRight,Tt as simplifySelection,Wt as splitLine,hn as standardKeymap,O as toggleBlockComment,T as toggleBlockCommentByLine,S as toggleComment,M as toggleLineComment,$t as transposeChars,P as undo,K as undoDepth,$ as undoSelection};
|
2
|
-
//# sourceMappingURL=codemirror_commands-
|
1
|
+
import{Annotation as e,Facet as t,EditorSelection as n,Text as r,findClusterBreak as o,countColumn as l,combineConfig as s,StateField as i,Transaction as a,ChangeSet as c,ChangeDesc as f,StateEffect as u,CharCategory as h}from"./codemirror_state-BKbyfKsm.js";import{E as m,D as d}from"./codemirror_view-ZYshhfdH.js";import{q as p,r as g,u as y,v,s as A,w as k,b as w,i as D}from"./codemirror_language-15oJ2_xe.js";const S=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=I(e.state,n.from);return r.line?M(e):!!r.block&&T(e)};function x(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let o=e(t,n);return!!o&&(r(n.update(o)),!0)}}const M=x(J,0),B=x(J,1),C=x(J,2),O=x(R,0),E=x(R,1),b=x(R,2),T=x(((e,t)=>R(e,t,function(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),o=n.to<=r.to?r:e.doc.lineAt(n.to),l=t.length-1;l>=0&&t[l].to>r.from?t[l].to=o.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:o.to})}return t}(t))),0);function I(e,t){let n=e.languageDataAt("commentTokens",t);return n.length?n[0]:{}}const V=50;function R(e,t,n=t.selection.ranges){let r=n.map((e=>I(t,e.from).block));if(!r.every((e=>e)))return null;let o=n.map(((e,n)=>function(e,{open:t,close:n},r,o){let l,s,i=e.sliceDoc(r-V,r),a=e.sliceDoc(o,o+V),c=/\s*$/.exec(i)[0].length,f=/^\s*/.exec(a)[0].length,u=i.length-c;if(i.slice(u-t.length,u)==t&&a.slice(f,f+n.length)==n)return{open:{pos:r-c,margin:c&&1},close:{pos:o+f,margin:f&&1}};o-r<=2*V?l=s=e.sliceDoc(r,o):(l=e.sliceDoc(r,r+V),s=e.sliceDoc(o-V,o));let h=/^\s*/.exec(l)[0].length,m=/\s*$/.exec(s)[0].length,d=s.length-m-n.length;return l.slice(h,h+t.length)==t&&s.slice(d,d+n.length)==n?{open:{pos:r+h+t.length,margin:/\s/.test(l.charAt(h+t.length))?1:0},close:{pos:o-m-n.length,margin:/\s/.test(s.charAt(d-1))?1:0}}:null}(t,r[n],e.from,e.to)));if(2!=e&&!o.every((e=>e)))return{changes:t.changes(n.map(((e,t)=>o[t]?[]:[{from:e.from,insert:r[t].open+" "},{from:e.to,insert:" "+r[t].close}])))};if(1!=e&&o.some((e=>e))){let e=[];for(let t,n=0;n<o.length;n++)if(t=o[n]){let o=r[n],{open:l,close:s}=t;e.push({from:l.pos-o.open.length,to:l.pos+l.margin},{from:s.pos-s.margin,to:s.pos+o.close.length})}return{changes:e}}return null}function J(e,t,n=t.selection.ranges){let r=[],o=-1;for(let{from:e,to:l}of n){let n=r.length,s=1e9,i=I(t,e).line;if(i){for(let n=e;n<=l;){let a=t.doc.lineAt(n);if(a.from>o&&(e==l||l>a.from)){o=a.from;let e=/^\s*/.exec(a.text)[0].length,t=e==a.length,n=a.text.slice(e,e+i.length)==i?e:-1;e<a.text.length&&e<s&&(s=e),r.push({line:a,comment:n,token:i,indent:e,empty:t,single:!1})}n=a.to+1}if(s<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=s);r.length==n+1&&(r[n].single=!0)}}if(2!=e&&r.some((e=>e.comment<0&&(!e.empty||e.single)))){let e=[];for(let{line:t,token:n,indent:o,empty:l,single:s}of r)!s&&l||e.push({from:t.from+o,insert:n+" "});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}if(1!=e&&r.some((e=>e.comment>=0))){let e=[];for(let{line:t,comment:n,token:o}of r)if(n>=0){let r=t.from+n,l=r+o.length;" "==t.text[l-t.from]&&l++,e.push({from:r,to:l})}return{changes:e}}return null}const L=e.define(),N=e.define(),U=t.define(),H=t.define({combine:e=>s(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}),z=i.define({create:()=>ie.empty,update(e,t){let n=t.state.facet(H),r=t.annotation(L);if(r){let o=X.fromTransaction(t,r.selection),l=r.side,s=0==l?e.undone:e.done;return s=o?Y(s,s.length,n.minDepth,o):ne(s,t.startState.selection),new ie(0==l?r.rest:s,0==l?s:r.rest)}let o=t.annotation(N);if("full"!=o&&"before"!=o||(e=e.isolate()),!1===t.annotation(a.addToHistory))return t.changes.empty?e:e.addMapping(t.changes.desc);let l=X.fromTransaction(t),s=t.annotation(a.time),i=t.annotation(a.userEvent);return l?e=e.addChanges(l,s,i,n,t):t.selection&&(e=e.addSelection(t.startState.selection,s,i,n.newGroupDelay)),"full"!=o&&"after"!=o||(e=e.isolate()),e},toJSON:e=>({done:e.done.map((e=>e.toJSON())),undone:e.undone.map((e=>e.toJSON()))}),fromJSON:e=>new ie(e.done.map(X.fromJSON),e.undone.map(X.fromJSON))});function j(e={}){return[z,H.of(e),m.domEventHandlers({beforeinput(e,t){let n="historyUndo"==e.inputType?P:"historyRedo"==e.inputType?W:null;return!!n&&(e.preventDefault(),n(t))}})]}const G=z;function q(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let o=n.field(z,!1);if(!o)return!1;let l=o.pop(e,n,t);return!!l&&(r(l),!0)}}const P=q(0,!1),W=q(1,!1),$=q(0,!0),_=q(1,!0);function F(e){return function(t){let n=t.field(z,!1);if(!n)return 0;let r=0==e?n.done:n.undone;return r.length-(r.length&&!r[0].changes?1:0)}}const K=F(0),Q=F(1);class X{constructor(e,t,n,r,o){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=o}setSelAfter(e){return new X(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:null===(e=this.changes)||void 0===e?void 0:e.toJSON(),mapped:null===(t=this.mapped)||void 0===t?void 0:t.toJSON(),startSelection:null===(n=this.startSelection)||void 0===n?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map((e=>e.toJSON()))}}static fromJSON(e){return new X(e.changes&&c.fromJSON(e.changes),[],e.mapped&&f.fromJSON(e.mapped),e.startSelection&&n.fromJSON(e.startSelection),e.selectionsAfter.map(n.fromJSON))}static fromTransaction(e,t){let n=ee;for(let t of e.startState.facet(U)){let r=t(e);r.length&&(n=n.concat(r))}return!n.length&&e.changes.empty?null:new X(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,ee)}static selection(e){return new X(void 0,ee,void 0,void 0,e)}}function Y(e,t,n,r){let o=t+1>n+20?t-n-1:0,l=e.slice(o,t);return l.push(r),l}function Z(e,t){return e.length?t.length?e.concat(t):e:t}const ee=[],te=200;function ne(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-te));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),Y(e,e.length-1,1e9,n.setSelAfter(r)))}return[X.selection([t])]}function re(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function oe(e,t){if(!e.length)return e;let n=e.length,r=ee;for(;n;){let o=le(e[n-1],t,r);if(o.changes&&!o.changes.empty||o.effects.length){let t=e.slice(0,n);return t[n-1]=o,t}t=o.mapped,n--,r=o.selectionsAfter}return r.length?[X.selection(r)]:ee}function le(e,t,n){let r=Z(e.selectionsAfter.length?e.selectionsAfter.map((e=>e.map(t))):ee,n);if(!e.changes)return X.selection(r);let o=e.changes.map(t),l=t.mapDesc(e.changes,!0),s=e.mapped?e.mapped.composeDesc(l):l;return new X(o,u.mapEffects(e.effects,t),s,e.startSelection.map(l),r)}const se=/^(input\.type|delete)($|\.)/;class ie{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new ie(this.done,this.undone):this}addChanges(e,t,n,r,o){let l=this.done,s=l[l.length-1];return l=s&&s.changes&&!s.changes.empty&&e.changes&&(!n||se.test(n))&&(!s.selectionsAfter.length&&t-this.prevTime<r.newGroupDelay&&r.joinToEvent(o,function(e,t){let n=[],r=!1;return e.iterChangedRanges(((e,t)=>n.push(e,t))),t.iterChangedRanges(((e,t,o,l)=>{for(let e=0;e<n.length;){let t=n[e++],s=n[e++];l>=t&&o<=s&&(r=!0)}})),r}(s.changes,e.changes))||"input.type.compose"==n)?Y(l,l.length-1,r.minDepth,new X(e.changes.compose(s.changes),Z(e.effects,s.effects),s.mapped,s.startSelection,ee)):Y(l,l.length,r.minDepth,e),new ie(l,ee,t,n)}addSelection(e,t,n,r){let o=this.done.length?this.done[this.done.length-1].selectionsAfter:ee;return o.length>0&&t-this.prevTime<r&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&(l=o[o.length-1],s=e,l.ranges.length==s.ranges.length&&0===l.ranges.filter(((e,t)=>e.empty!=s.ranges[t].empty)).length)?this:new ie(ne(this.done,e),this.undone,t,n);var l,s}addMapping(e){return new ie(oe(this.done,e),oe(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=0==e?this.done:this.undone;if(0==r.length)return null;let o=r[r.length-1],l=o.selectionsAfter[0]||t.selection;if(n&&o.selectionsAfter.length)return t.update({selection:o.selectionsAfter[o.selectionsAfter.length-1],annotations:L.of({side:e,rest:re(r),selection:l}),userEvent:0==e?"select.undo":"select.redo",scrollIntoView:!0});if(o.changes){let n=1==r.length?ee:r.slice(0,r.length-1);return o.mapped&&(n=oe(n,o.mapped)),t.update({changes:o.changes,selection:o.startSelection,effects:o.effects,annotations:L.of({side:e,rest:n,selection:l}),filter:!1,userEvent:0==e?"undo":"redo",scrollIntoView:!0})}return null}}ie.empty=new ie(ee,ee);const ae=[{key:"Mod-z",run:P,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:W,preventDefault:!0},{linux:"Ctrl-Shift-z",run:W,preventDefault:!0},{key:"Mod-u",run:$,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:_,preventDefault:!0}];function ce(e,t){return n.create(e.ranges.map(t),e.mainIndex)}function fe(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:"select"})}function ue({state:e,dispatch:t},n){let r=ce(e.selection,n);return!r.eq(e.selection,!0)&&(t(fe(e,r)),!0)}function he(e,t){return n.cursor(t?e.to:e.from)}function me(e,t){return ue(e,(n=>n.empty?e.moveByChar(n,t):he(n,t)))}function de(e){return e.textDirectionAt(e.state.selection.main.head)==d.LTR}const pe=e=>me(e,!de(e)),ge=e=>me(e,de(e)),ye=e=>me(e,!0),ve=e=>me(e,!1);function Ae(e,t){return ue(e,(n=>n.empty?e.moveByGroup(n,t):he(n,t)))}const ke=e=>Ae(e,!de(e)),we=e=>Ae(e,de(e)),De=e=>Ae(e,!0),Se=e=>Ae(e,!1),xe="undefined"!=typeof Intl&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Me(e,t,r){let o=e.state.charCategorizer(t.from),l=h.Space,s=t.from,i=0,a=!1,c=!1,f=!1,u=t=>{if(a)return!1;s+=r?t.length:-t.length;let n,u=o(t);if(u==h.Word&&t.charCodeAt(0)<128&&/[\W_]/.test(t)&&(u=-1),l==h.Space&&(l=u),l!=u)return!1;if(l==h.Word)if(t.toLowerCase()==t){if(!r&&c)return!1;f=!0}else if(f){if(r)return!1;a=!0}else{if(c&&r&&o(n=e.state.sliceDoc(s,s+1))==h.Word&&n.toLowerCase()==n)return!1;c=!0}return i++,!0},m=e.moveByChar(t,r,(e=>(u(e),u)));if(xe&&l==h.Word&&m.from==t.from+i*(r?1:-1)){let o=Math.min(t.head,m.head),l=Math.max(t.head,m.head),s=e.state.sliceDoc(o,l);if(s.length>1&&/[\u4E00-\uffff]/.test(s)){let e=Array.from(xe.segment(s));if(e.length>1)return r?n.cursor(t.head+e[1].index,-1):n.cursor(m.head+e[e.length-1].index,1)}}return m}function Be(e,t){return ue(e,(n=>n.empty?Me(e,n,t):he(n,t)))}const Ce=e=>Be(e,!0),Oe=e=>Be(e,!1);function Ee(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function be(e,t,r){let o,l,s=A(e).resolveInner(t.head),i=r?w.closedBy:w.openedBy;for(let n=t.head;;){let t=r?s.childAfter(n):s.childBefore(n);if(!t)break;Ee(e,t,i)?s=t:n=r?t.to:t.from}return l=s.type.prop(i)&&(o=r?v(e,s.from,1):v(e,s.to,-1))&&o.matched?r?o.end.to:o.end.from:r?s.to:s.from,n.cursor(l,r?-1:1)}const Te=e=>ue(e,(t=>be(e.state,t,!de(e)))),Ie=e=>ue(e,(t=>be(e.state,t,de(e))));function Ve(e,t){return ue(e,(n=>{if(!n.empty)return he(n,t);let r=e.moveVertically(n,t);return r.head!=n.head?r:e.moveToLineBoundary(n,t)}))}const Re=e=>Ve(e,!1),Je=e=>Ve(e,!0);function Le(e){let t,n=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,r=0,o=0;if(n){for(let t of e.state.facet(m.scrollMargins)){let n=t(e);(null==n?void 0:n.top)&&(r=Math.max(null==n?void 0:n.top,r)),(null==n?void 0:n.bottom)&&(o=Math.max(null==n?void 0:n.bottom,o))}t=e.scrollDOM.clientHeight-r-o}else t=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:o,selfScroll:n,height:Math.max(e.defaultLineHeight,t-5)}}function Ne(e,t){let n,r=Le(e),{state:o}=e,l=ce(o.selection,(n=>n.empty?e.moveVertically(n,t,r.height):he(n,t)));if(l.eq(o.selection))return!1;if(r.selfScroll){let t=e.coordsAtPos(o.selection.main.head),s=e.scrollDOM.getBoundingClientRect(),i=s.top+r.marginTop,a=s.bottom-r.marginBottom;t&&t.top>i&&t.bottom<a&&(n=m.scrollIntoView(l.main.head,{y:"start",yMargin:t.top-i}))}return e.dispatch(fe(o,l),{effects:n}),!0}const Ue=e=>Ne(e,!1),He=e=>Ne(e,!0);function ze(e,t,r){let o=e.lineBlockAt(t.head),l=e.moveToLineBoundary(t,r);if(l.head==t.head&&l.head!=(r?o.to:o.from)&&(l=e.moveToLineBoundary(t,r,!1)),!r&&l.head==o.from&&o.length){let r=/^\s*/.exec(e.state.sliceDoc(o.from,Math.min(o.from+100,o.to)))[0].length;r&&t.head!=o.from+r&&(l=n.cursor(o.from+r))}return l}const je=e=>ue(e,(t=>ze(e,t,!0))),Ge=e=>ue(e,(t=>ze(e,t,!1))),qe=e=>ue(e,(t=>ze(e,t,!de(e)))),Pe=e=>ue(e,(t=>ze(e,t,de(e)))),We=e=>ue(e,(t=>n.cursor(e.lineBlockAt(t.head).from,1))),$e=e=>ue(e,(t=>n.cursor(e.lineBlockAt(t.head).to,-1)));function _e(e,t,r){let o=!1,l=ce(e.selection,(t=>{let l=v(e,t.head,-1)||v(e,t.head,1)||t.head>0&&v(e,t.head-1,1)||t.head<e.doc.length&&v(e,t.head+1,-1);if(!l||!l.end)return t;o=!0;let s=l.start.from==t.head?l.end.to:l.end.from;return r?n.range(t.anchor,s):n.cursor(s)}));return!!o&&(t(fe(e,l)),!0)}const Fe=({state:e,dispatch:t})=>_e(e,t,!1),Ke=({state:e,dispatch:t})=>_e(e,t,!0);function Qe(e,t){let r=ce(e.state.selection,(e=>{let r=t(e);return n.range(e.anchor,r.head,r.goalColumn,r.bidiLevel||void 0)}));return!r.eq(e.state.selection)&&(e.dispatch(fe(e.state,r)),!0)}function Xe(e,t){return Qe(e,(n=>e.moveByChar(n,t)))}const Ye=e=>Xe(e,!de(e)),Ze=e=>Xe(e,de(e)),et=e=>Xe(e,!0),tt=e=>Xe(e,!1);function nt(e,t){return Qe(e,(n=>e.moveByGroup(n,t)))}const rt=e=>nt(e,!de(e)),ot=e=>nt(e,de(e)),lt=e=>nt(e,!0),st=e=>nt(e,!1);function it(e,t){return Qe(e,(n=>Me(e,n,t)))}const at=e=>it(e,!0),ct=e=>it(e,!1),ft=e=>Qe(e,(t=>be(e.state,t,!de(e)))),ut=e=>Qe(e,(t=>be(e.state,t,de(e))));function ht(e,t){return Qe(e,(n=>e.moveVertically(n,t)))}const mt=e=>ht(e,!1),dt=e=>ht(e,!0);function pt(e,t){return Qe(e,(n=>e.moveVertically(n,t,Le(e).height)))}const gt=e=>pt(e,!1),yt=e=>pt(e,!0),vt=e=>Qe(e,(t=>ze(e,t,!0))),At=e=>Qe(e,(t=>ze(e,t,!1))),kt=e=>Qe(e,(t=>ze(e,t,!de(e)))),wt=e=>Qe(e,(t=>ze(e,t,de(e)))),Dt=e=>Qe(e,(t=>n.cursor(e.lineBlockAt(t.head).from))),St=e=>Qe(e,(t=>n.cursor(e.lineBlockAt(t.head).to))),xt=({state:e,dispatch:t})=>(t(fe(e,{anchor:0})),!0),Mt=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.doc.length})),!0),Bt=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.selection.main.anchor,head:0})),!0),Ct=({state:e,dispatch:t})=>(t(fe(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Ot=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:"select"})),!0),Et=({state:e,dispatch:t})=>{let r=_t(e).map((({from:t,to:r})=>n.range(t,Math.min(r+1,e.doc.length))));return t(e.update({selection:n.create(r),userEvent:"select"})),!0},bt=({state:e,dispatch:t})=>{let r=ce(e.selection,(t=>{var r;for(let o=A(e).resolveStack(t.from,1);o;o=o.next){let{node:e}=o;if((e.from<t.from&&e.to>=t.to||e.to>t.to&&e.from<=t.from)&&(null===(r=e.parent)||void 0===r?void 0:r.parent))return n.range(e.to,e.from)}return t}));return t(fe(e,r)),!0},Tt=({state:e,dispatch:t})=>{let r=e.selection,o=null;return r.ranges.length>1?o=n.create([r.main]):r.main.empty||(o=n.create([n.cursor(r.main.head)])),!!o&&(t(fe(e,o)),!0)};function It(e,t){if(e.state.readOnly)return!1;let r="delete.selection",{state:o}=e,l=o.changeByRange((o=>{let{from:l,to:s}=o;if(l==s){let n=t(o);n<l?(r="delete.backward",n=Vt(e,n,!1)):n>l&&(r="delete.forward",n=Vt(e,n,!0)),l=Math.min(l,n),s=Math.max(s,n)}else l=Vt(e,l,!1),s=Vt(e,s,!0);return l==s?{range:o}:{changes:{from:l,to:s},range:n.cursor(l,l<o.head?-1:1)}}));return!l.changes.empty&&(e.dispatch(o.update(l,{scrollIntoView:!0,userEvent:r,effects:"delete.selection"==r?m.announce.of(o.phrase("Selection deleted")):void 0})),!0)}function Vt(e,t,n){if(e instanceof m)for(let r of e.state.facet(m.atomicRanges).map((t=>t(e))))r.between(t,t,((e,r)=>{e<t&&r>t&&(t=n?r:e)}));return t}const Rt=(e,t)=>It(e,(n=>{let r,s,i=n.from,{state:a}=e,c=a.doc.lineAt(i);if(!t&&i>c.from&&i<c.from+200&&!/[^ \t]/.test(r=c.text.slice(0,i-c.from))){if("\t"==r[r.length-1])return i-1;let e=l(r,a.tabSize)%k(a)||k(a);for(let t=0;t<e&&" "==r[r.length-1-t];t++)i--;s=i}else s=o(c.text,i-c.from,t,t)+c.from,s==i&&c.number!=(t?a.doc.lines:1)?s+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(c.text.slice(s-c.from,i-c.from))&&(s=o(c.text,s-c.from,!1,!1)+c.from);return s})),Jt=e=>Rt(e,!1),Lt=e=>Rt(e,!0),Nt=(e,t)=>It(e,(n=>{let r=n.head,{state:l}=e,s=l.doc.lineAt(r),i=l.charCategorizer(r);for(let e=null;;){if(r==(t?s.to:s.from)){r==n.head&&s.number!=(t?l.doc.lines:1)&&(r+=t?1:-1);break}let a=o(s.text,r-s.from,t)+s.from,c=s.text.slice(Math.min(r,a)-s.from,Math.max(r,a)-s.from),f=i(c);if(null!=e&&f!=e)break;" "==c&&r==n.head||(e=f),r=a}return r})),Ut=e=>Nt(e,!1),Ht=e=>Nt(e,!0),zt=e=>It(e,(t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})),jt=e=>It(e,(t=>{let n=e.lineBlockAt(t.head).from;return t.head>n?n:Math.max(0,t.head-1)})),Gt=e=>It(e,(t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)})),qt=e=>It(e,(t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})),Pt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=[];for(let t=0,r="",o=e.doc.iter();;){if(o.next(),o.lineBreak||o.done){let e=r.search(/\s+$/);if(e>-1&&n.push({from:t-(r.length-e),to:t}),o.done)break;r=""}else r=o.value;t+=o.value.length}return!!n.length&&(t(e.update({changes:n,userEvent:"delete"})),!0)},Wt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let o=e.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:r.of(["",""])},range:n.cursor(e.from)})));return t(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0},$t=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange((t=>{if(!t.empty||0==t.from||t.from==e.doc.length)return{range:t};let r=t.from,l=e.doc.lineAt(r),s=r==l.from?r-1:o(l.text,r-l.from,!1)+l.from,i=r==l.to?r+1:o(l.text,r-l.from,!0)+l.from;return{changes:{from:s,to:i,insert:e.doc.slice(r,i).append(e.doc.slice(s,r))},range:n.cursor(i)}}));return!r.changes.empty&&(t(e.update(r,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function _t(e){let t=[],n=-1;for(let r of e.selection.ranges){let o=e.doc.lineAt(r.from),l=e.doc.lineAt(r.to);if(r.empty||r.to!=l.from||(l=e.doc.lineAt(r.to-1)),n>=o.number){let e=t[t.length-1];e.to=l.to,e.ranges.push(r)}else t.push({from:o.from,to:l.to,ranges:[r]});n=l.number+1}return t}function Ft(e,t,r){if(e.readOnly)return!1;let o=[],l=[];for(let t of _t(e)){if(r?t.to==e.doc.length:0==t.from)continue;let s=e.doc.lineAt(r?t.to+1:t.from-1),i=s.length+1;if(r){o.push({from:t.to,to:s.to},{from:t.from,insert:s.text+e.lineBreak});for(let r of t.ranges)l.push(n.range(Math.min(e.doc.length,r.anchor+i),Math.min(e.doc.length,r.head+i)))}else{o.push({from:s.from,to:t.from},{from:t.to,insert:e.lineBreak+s.text});for(let e of t.ranges)l.push(n.range(e.anchor-i,e.head-i))}}return!!o.length&&(t(e.update({changes:o,scrollIntoView:!0,selection:n.create(l,e.selection.mainIndex),userEvent:"move.line"})),!0)}const Kt=({state:e,dispatch:t})=>Ft(e,t,!1),Qt=({state:e,dispatch:t})=>Ft(e,t,!0);function Xt(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of _t(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});return t(e.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Yt=({state:e,dispatch:t})=>Xt(e,t,!1),Zt=({state:e,dispatch:t})=>Xt(e,t,!0),en=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(_t(t).map((({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n})))),r=ce(t.selection,(t=>e.moveVertically(t,!0))).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0},tn=({state:e,dispatch:t})=>(t(e.update(e.replaceSelection(e.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);const nn=on(!1),rn=on(!0);function on(e){return({state:t,dispatch:o})=>{if(t.readOnly)return!1;let s=t.changeByRange((o=>{let{from:s,to:i}=o,a=t.doc.lineAt(s),c=!e&&s==i&&function(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n,r=A(e).resolveInner(t),o=r.childBefore(t),l=r.childAfter(t);return o&&l&&o.to<=t&&l.from>=t&&(n=o.type.prop(w.closedBy))&&n.indexOf(l.name)>-1&&e.doc.lineAt(o.to).from==e.doc.lineAt(l.from).from&&!/\S/.test(e.sliceDoc(o.to,l.from))?{from:o.to,to:l.from}:null}(t,s);e&&(s=i=(i<=a.to?a:t.doc.lineAt(i)).to);let f=new p(t,{simulateBreak:s,simulateDoubleBreak:!!c}),u=g(f,s);for(null==u&&(u=l(/^\s*/.exec(t.doc.lineAt(s).text)[0],t.tabSize));i<a.to&&/\s/.test(a.text[i-a.from]);)i++;c?({from:s,to:i}=c):s>a.from&&s<a.from+100&&!/\S/.test(a.text.slice(0,s))&&(s=a.from);let h=["",y(t,u)];return c&&h.push(y(t,f.lineIndent(a.from,-1))),{changes:{from:s,to:i,insert:r.of(h)},range:n.cursor(s+1+h[1].length)}}));return o(t.update(s,{scrollIntoView:!0,userEvent:"input"})),!0}}function ln(e,t){let r=-1;return e.changeByRange((o=>{let l=[];for(let n=o.from;n<=o.to;){let s=e.doc.lineAt(n);s.number>r&&(o.empty||o.to>s.from)&&(t(s,l,o),r=s.number),n=s.to+1}let s=e.changes(l);return{changes:l,range:n.range(s.mapPos(o.anchor,1),s.mapPos(o.head,1))}}))}const sn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new p(e,{overrideIndentation:e=>{let t=n[e];return null==t?-1:t}}),o=ln(e,((t,o,l)=>{let s=g(r,t.from);if(null==s)return;/\S/.test(t.text)||(s=0);let i=/^\s*/.exec(t.text)[0],a=y(e,s);(i!=a||l.from<t.from+i.length)&&(n[t.from]=s,o.push({from:t.from,to:t.from+i.length,insert:a}))}));return o.changes.empty||t(e.update(o,{userEvent:"indent"})),!0},an=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(ln(e,((t,n)=>{n.push({from:t.from,insert:e.facet(D)})})),{userEvent:"input.indent"})),!0),cn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(ln(e,((t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let o=l(r,e.tabSize),s=0,i=y(e,Math.max(0,o-k(e)));for(;s<r.length&&s<i.length&&r.charCodeAt(s)==i.charCodeAt(s);)s++;n.push({from:t.from+s,to:t.from+r.length,insert:i.slice(s)})})),{userEvent:"delete.dedent"})),!0),fn=({state:e,dispatch:t})=>e.selection.ranges.some((e=>!e.empty))?an({state:e,dispatch:t}):(t(e.update(e.replaceSelection("\t"),{scrollIntoView:!0,userEvent:"input"})),!0),un=[{key:"Ctrl-b",run:pe,shift:Ye,preventDefault:!0},{key:"Ctrl-f",run:ge,shift:Ze},{key:"Ctrl-p",run:Re,shift:mt},{key:"Ctrl-n",run:Je,shift:dt},{key:"Ctrl-a",run:We,shift:Dt},{key:"Ctrl-e",run:$e,shift:St},{key:"Ctrl-d",run:Lt},{key:"Ctrl-h",run:Jt},{key:"Ctrl-k",run:zt},{key:"Ctrl-Alt-h",run:Ut},{key:"Ctrl-o",run:Wt},{key:"Ctrl-t",run:$t},{key:"Ctrl-v",run:He}],hn=[{key:"ArrowLeft",run:pe,shift:Ye,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:ke,shift:rt,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:qe,shift:kt,preventDefault:!0},{key:"ArrowRight",run:ge,shift:Ze,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:we,shift:ot,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Pe,shift:wt,preventDefault:!0},{key:"ArrowUp",run:Re,shift:mt,preventDefault:!0},{mac:"Cmd-ArrowUp",run:xt,shift:Bt},{mac:"Ctrl-ArrowUp",run:Ue,shift:gt},{key:"ArrowDown",run:Je,shift:dt,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Mt,shift:Ct},{mac:"Ctrl-ArrowDown",run:He,shift:yt},{key:"PageUp",run:Ue,shift:gt},{key:"PageDown",run:He,shift:yt},{key:"Home",run:Ge,shift:At,preventDefault:!0},{key:"Mod-Home",run:xt,shift:Bt},{key:"End",run:je,shift:vt,preventDefault:!0},{key:"Mod-End",run:Mt,shift:Ct},{key:"Enter",run:nn},{key:"Mod-a",run:Ot},{key:"Backspace",run:Jt,shift:Jt},{key:"Delete",run:Lt},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Ut},{key:"Mod-Delete",mac:"Alt-Delete",run:Ht},{mac:"Mod-Backspace",run:Gt},{mac:"Mod-Delete",run:qt}].concat(un.map((e=>({mac:e.key,run:e.run,shift:e.shift})))),mn=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Te,shift:ft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Ie,shift:ut},{key:"Alt-ArrowUp",run:Kt},{key:"Shift-Alt-ArrowUp",run:Yt},{key:"Alt-ArrowDown",run:Qt},{key:"Shift-Alt-ArrowDown",run:Zt},{key:"Escape",run:Tt},{key:"Mod-Enter",run:rn},{key:"Alt-l",mac:"Ctrl-l",run:Et},{key:"Mod-i",run:bt,preventDefault:!0},{key:"Mod-[",run:cn},{key:"Mod-]",run:an},{key:"Mod-Alt-\\",run:sn},{key:"Shift-Mod-k",run:en},{key:"Shift-Mod-\\",run:Fe},{key:"Mod-/",run:S},{key:"Alt-A",run:O}].concat(hn),dn={key:"Tab",run:an,shift:cn};export{E as blockComment,b as blockUncomment,Zt as copyLineDown,Yt as copyLineUp,ve as cursorCharBackward,ye as cursorCharForward,pe as cursorCharLeft,ge as cursorCharRight,Mt as cursorDocEnd,xt as cursorDocStart,Se as cursorGroupBackward,De as cursorGroupForward,ke as cursorGroupLeft,we as cursorGroupRight,Ge as cursorLineBoundaryBackward,je as cursorLineBoundaryForward,qe as cursorLineBoundaryLeft,Pe as cursorLineBoundaryRight,Je as cursorLineDown,$e as cursorLineEnd,We as cursorLineStart,Re as cursorLineUp,Fe as cursorMatchingBracket,He as cursorPageDown,Ue as cursorPageUp,Oe as cursorSubwordBackward,Ce as cursorSubwordForward,Te as cursorSyntaxLeft,Ie as cursorSyntaxRight,mn as defaultKeymap,Jt as deleteCharBackward,Lt as deleteCharForward,Ut as deleteGroupBackward,Ht as deleteGroupForward,en as deleteLine,Gt as deleteLineBoundaryBackward,qt as deleteLineBoundaryForward,zt as deleteToLineEnd,jt as deleteToLineStart,Pt as deleteTrailingWhitespace,un as emacsStyleKeymap,j as history,G as historyField,ae as historyKeymap,cn as indentLess,an as indentMore,sn as indentSelection,dn as indentWithTab,rn as insertBlankLine,tn as insertNewline,nn as insertNewlineAndIndent,fn as insertTab,U as invertedEffects,N as isolateHistory,B as lineComment,C as lineUncomment,Qt as moveLineDown,Kt as moveLineUp,W as redo,Q as redoDepth,_ as redoSelection,Ot as selectAll,tt as selectCharBackward,et as selectCharForward,Ye as selectCharLeft,Ze as selectCharRight,Ct as selectDocEnd,Bt as selectDocStart,st as selectGroupBackward,lt as selectGroupForward,rt as selectGroupLeft,ot as selectGroupRight,Et as selectLine,At as selectLineBoundaryBackward,vt as selectLineBoundaryForward,kt as selectLineBoundaryLeft,wt as selectLineBoundaryRight,dt as selectLineDown,St as selectLineEnd,Dt as selectLineStart,mt as selectLineUp,Ke as selectMatchingBracket,yt as selectPageDown,gt as selectPageUp,bt as selectParentSyntax,ct as selectSubwordBackward,at as selectSubwordForward,ft as selectSyntaxLeft,ut as selectSyntaxRight,Tt as simplifySelection,Wt as splitLine,hn as standardKeymap,O as toggleBlockComment,T as toggleBlockCommentByLine,S as toggleComment,M as toggleLineComment,$t as transposeChars,P as undo,K as undoDepth,$ as undoSelection};
|
2
|
+
//# sourceMappingURL=codemirror_commands-CQhRq29F.js.map
|