diff --git a/resources/dist/main.js b/resources/dist/main.js index 392f3929..a51ab55c 100644 --- a/resources/dist/main.js +++ b/resources/dist/main.js @@ -1,2 +1,2 @@ -!function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s="./src/codemirror.wikieditor.init.js")}({"./src/codemirror.wikieditor.init.js":function(t,e,i){"use strict";i.r(e);class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){let n=[];return this.decompose(0,t,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(e,this.length,n,1),s.from(n,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){let i=[];return this.decompose(t,e,i,0),s.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new h(this),r=new h(t);for(let t=e,s=e;;){if(n.next(t),r.next(t),t=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(s+=n.value.length,n.done||s>=i)return!0}}iter(t=1){return new h(this,t)}iterRange(t,e=this.length){return new a(this,t,e)}iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new c(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(0==t.length)throw new RangeError("A document must have at least one line");return 1!=t.length||t[0]?t.length<=32?new r(t):s.from(r.split(t,[])):n.empty}}class r extends n{constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;return e}(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let r=0;;r++){let s=this.text[r],o=n+s.length;if((e?i:o)>=t)return new u(n,o,i,s);n=o+1,i++}}decompose(t,e,i,n){let s=t<=0&&e>=this.length?this:new r(l(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(1&n){let t=i.pop(),e=o(s.text,t.text.slice(),0,s.length);if(e.length<=32)i.push(new r(e,t.length+s.length));else{let t=e.length>>1;i.push(new r(e.slice(0,t)),new r(e.slice(t)))}}else i.push(s)}replace(t,e,i){if(!(i instanceof r))return super.replace(t,e,i);let n=o(this.text,o(i.text,l(this.text,0,t)),e),h=this.length+i.length-(e-t);return n.length<=32?new r(n,h):s.from(r.split(n,[]),h)}sliceString(t,e=this.length,i="\n"){let n="";for(let r=0,s=0;r<=e&&st&&s&&(n+=i),tr&&(n+=o.slice(Math.max(0,t-r),e-r)),r=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],n=-1;for(let s of t)i.push(s),n+=s.length+1,32==i.length&&(e.push(new r(i,n)),i=[],n=-1);return n>-1&&e.push(new r(i,n)),e}}class s extends n{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let e of t)this.lines+=e.lines}lineInner(t,e,i,n){for(let r=0;;r++){let s=this.children[r],o=n+s.length,l=i+s.lines-1;if((e?l:o)>=t)return s.lineInner(t,e,i,n);n=o+1,i=l+1}}decompose(t,e,i,n){for(let r=0,s=0;s<=e&&r=s){let r=n&((s<=t?1:0)|(l>=e?2:0));s>=t&&l<=e&&!r?i.push(o):o.decompose(t-s,e-s,i,r)}s=l+1}}replace(t,e,i){if(i.lines=r&&e<=l){let h=o.replace(t-r,e-r,i),a=this.lines-o.lines+h.lines;if(h.lines>4&&h.lines>a>>6){let r=this.children.slice();return r[n]=h,new s(r,this.length-(e-t)+i.length)}return super.replace(r,l,h)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i="\n"){let n="";for(let r=0,s=0;rt&&r&&(n+=i),ts&&(n+=o.sliceString(t-s,e-s,i)),s=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof s))return 0;let i=0,[n,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;n+=e,r+=e){if(n==o||r==l)return i;let s=this.children[n],h=t.children[r];if(s!=h)return i+s.scanIdentical(h,e);i+=s.length+1}}static from(t,e=t.reduce((t,e)=>t+e.length+1,-1)){let i=0;for(let e of t)i+=e.lines;if(i<32){let i=[];for(let e of t)e.flatten(i);return new r(i,e)}let n=Math.max(32,i>>5),o=n<<1,l=n>>1,h=[],a=0,c=-1,u=[];function f(t){let e;if(t.lines>o&&t instanceof s)for(let e of t.children)f(e);else t.lines>l&&(a>l||!a)?(d(),h.push(t)):t instanceof r&&a&&(e=u[u.length-1])instanceof r&&t.lines+e.lines<=32?(a+=t.lines,c+=t.length+1,u[u.length-1]=new r(e.text.concat(t.text),e.length+1+t.length)):(a+t.lines>n&&d(),a+=t.lines,c+=t.length+1,u.push(t))}function d(){0!=a&&(h.push(1==u.length?u[0]:s.from(u,c)),c=-1,a=u.length=0)}for(let e of t)f(e);return d(),1==h.length?h[0]:new s(h,e)}}function o(t,e,i=0,n=1e9){for(let r=0,s=0,o=!0;s=i&&(h>n&&(l=l.slice(0,n-r)),r0?1:(t instanceof r?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,n=this.nodes[i],s=this.offsets[i],o=s>>1,l=n instanceof r?n.text.length:n.children.length;if(o==(e>0?l:0)){if(0==i)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&s)==(e>0?0:1)){if(this.offsets[i]+=e,0==t)return this.lineBreak=!0,this.value="\n",this;t--}else if(n instanceof r){let r=n.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,r.length>Math.max(0,t))return this.value=0==t?r:e>0?r.slice(t):r.slice(0,r.length-t),this;t-=r.length}else{let s=n.children[o+(e<0?-1:0)];t>s.length?(t-=s.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(s),this.offsets.push(e>0?1:(s instanceof r?s.text.length:s.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class a{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new h(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class c{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(n.prototype[Symbol.iterator]=function(){return this.iter()},h.prototype[Symbol.iterator]=a.prototype[Symbol.iterator]=c.prototype[Symbol.iterator]=function(){return this});class u{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}let f="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=1;tt)return f[e-1]<=t;return!1}function p(t){return t>=127462&&t<=127487}function g(t,e,i=!0,n=!0){return(i?m:v)(t,e,n)}function m(t,e,i){if(e==t.length)return e;e&&w(t.charCodeAt(e))&&y(t.charCodeAt(e-1))&&e--;let n=b(t,e);for(e+=x(n);e=0&&p(b(t,n));)i++,n-=2;if(i%2==0)break;e+=2}}}return e}function v(t,e,i){for(;e>0;){let n=m(t,e-2,i);if(n=56320&&t<57344}function y(t){return t>=55296&&t<56320}function b(t,e){let i=t.charCodeAt(e);if(!y(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return w(n)?n-56320+(i-55296<<10)+65536:i}function x(t){return t<65536?1:2}const k=/\r\n?|\n/;var S=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(S||(S={}));class A{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-n);r+=o}else{if(i!=S.Simple&&h>=t&&(i==S.TrackDel&&nt||i==S.TrackBefore&&nt))return null;if(h>t||h==t&&e<0&&!o)return t==n||e<0?r:r+l;r+=l}n=h}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return r}touchesRange(t,e=t){for(let i=0,n=0;i=0&&n<=e&&r>=t)return!(ne)||"cover";n=r}return!1}toString(){let t="";for(let e=0;e=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(t=>"number"!=typeof t))throw new RangeError("Invalid JSON representation of ChangeDesc");return new A(t)}static create(t){return new A(t)}}class M extends A{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return D(this,(e,i,n,r,s)=>t=t.replace(n,n+(i-e),s),!1),t}mapDesc(t,e=!1){return T(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let r=0,s=0;r=0){e[r]=l,e[r+1]=o;let h=r>>1;for(;i.length0&&O(i,e,r.text),r.forward(t),o+=t}let h=t[s++];for(;o>1].toJSON()))}return t}static of(t,e,i){let r=[],s=[],o=0,l=null;function h(t=!1){if(!t&&!r.length)return;ol||t<0||l>e)throw new RangeError(`Invalid change range ${t} to ${l} (in doc of length ${e})`);let u=c?"string"==typeof c?n.of(c.split(i||k)):c:n.empty,f=u.length;if(t==l&&0==f)return;to&&C(r,t-o,-1),C(r,l-t,f),O(s,r,u),o=l}}(t),h(!l),l}static empty(t){return new M(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let r=0;re&&"string"!=typeof t))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==s.length)e.push(s[0],0);else{for(;i.length=0&&i<=0&&i==t[r+1]?t[r]+=e:0==e&&0==t[r]?t[r+1]+=i:n?(t[r]+=e,t[r+1]+=i):t.push(e,i)}function O(t,e,i){if(0==i.length)return;let r=e.length-2>>1;if(r>1])),!(i||l==t.sections.length||t.sections[l+1]<0);)h=t.sections[l++],a=t.sections[l++];e(s,c,o,u,f),s=c,o=u}}}function T(t,e,i,n=!1){let r=[],s=n?[]:null,o=new B(t),l=new B(e);for(let t=-1;;)if(-1==o.ins&&-1==l.ins){let t=Math.min(o.len,l.len);C(r,t,-1),o.forward(t),l.forward(t)}else if(l.ins>=0&&(o.ins<0||t==o.i||0==o.off&&(l.len=0&&t=0)){if(o.done&&l.done)return s?M.createSet(r,s):A.create(r);throw new Error("Mismatched change set lengths")}{let e=0,i=o.len;for(;i;)if(-1==l.ins){let t=Math.min(i,l.len);e+=t,i-=t,l.forward(t)}else{if(!(0==l.ins&&l.lene||o.ins>=0&&o.len>e)&&(t||n.length>i),s.forward2(e),o.forward(e)}}else C(n,0,o.ins,t),r&&O(r,n,o.text),o.next()}}class B{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?n.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?n.empty:e[i].slice(this.off,null==t?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class R{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return 16&this.flags?this.to:this.from}get head(){return 16&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 4&this.flags?-1:8&this.flags?1:0}get bidiLevel(){let t=3&this.flags;return 3==t?null:t}get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new R(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return P.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return P.range(this.anchor,i)}eq(t){return this.anchor==t.anchor&&this.head==t.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid JSON representation for SelectionRange");return P.range(t.anchor,t.head)}static create(t,e,i){return new R(t,e,i)}}class P{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:P.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;et.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t.main||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new P(t.ranges.map(t=>R.fromJSON(t)),t.main)}static single(t,e=t){return new P([P.range(t,e)],0)}static create(t,e=0){if(0==t.length)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;nt?4:0)|r)}static normalized(t,e=0){let i=t[e];t.sort((t,e)=>t.from-e.from),e=t.indexOf(i);for(let i=1;in.head?P.range(o,s):P.range(s,o))}}return new P(t,e)}}function N(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let L=0;class I{constructor(t,e,i,n,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=L++,this.default=t([]),this.extensions="function"==typeof r?r(this):r}static define(t={}){return new I(t.combine||(t=>t),t.compareInput||((t,e)=>t===e),t.compare||(t.combine?(t,e)=>t===e:H),!!t.static,t.enables)}of(t){return new W([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new W(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new W(t,this,2,e)}from(t,e){return e||(e=t=>t),this.compute([t],i=>e(i.field(t)))}}function H(t,e){return t==e||t.length==e.length&&t.every((t,i)=>t===e[i])}class W{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=L++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,r=this.id,s=t[r]>>1,o=2==this.type,l=!1,h=!1,a=[];for(let i of this.dependencies)"doc"==i?l=!0:"selection"==i?h=!0:0==(1&(null!==(e=t[i.id])&&void 0!==e?e:1))&&a.push(t[i.id]);return{create:t=>(t.values[s]=i(t),1),update(t,e){if(l&&e.docChanged||h&&(e.docChanged||e.selection)||F(t,a)){let e=i(t);if(o?!V(e,t.values[s],n):!n(e,t.values[s]))return t.values[s]=e,1}return 0},reconfigure:(t,e)=>{let l,h=e.config.address[r];if(null!=h){let r=it(e,h);if(this.dependencies.every(i=>i instanceof I?e.facet(i)===t.facet(i):!(i instanceof q)||e.field(i,!1)==t.field(i,!1))||(o?V(l=i(t),r,n):n(l=i(t),r)))return t.values[s]=r,0}else l=i(t);return t.values[s]=l,1}}}}function V(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[e.id]),r=i.map(t=>t.type),s=n.filter(t=>!(1&t)),o=t[e.id]>>1;function l(t){let i=[];for(let e=0;et===e),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(_).find(t=>t.field==this);return((null==e?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(t),1),update:(t,i)=>{let n=t.values[e],r=this.updateF(n,i);return this.compareF(n,r)?0:(t.values[e]=r,1)},reconfigure:(t,i)=>null!=i.config.address[this.id]?(t.values[e]=i.field(this),0):(t.values[e]=this.create(t),1)}}init(t){return[this,_.of({field:this,create:t})]}get extension(){return this}}const j=4,K=3,U=2,G=1;function J(t){return e=>new X(e,t)}const Y={highest:J(0),high:J(G),default:J(U),low:J(K),lowest:J(j)};class X{constructor(t,e){this.inner=t,this.prec=e}}class Q{of(t){return new Z(this,t)}reconfigure(t){return Q.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class Z{constructor(t,e){this.compartment=t,this.inner=e}}class tt{constructor(t,e,i,n,r,s){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=r,this.facets=s,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let n=[],r=Object.create(null),s=new Map;for(let i of function(t,e,i){let n=[[],[],[],[],[]],r=new Map;function s(t,o){let l=r.get(t);if(null!=l){if(l<=o)return;let e=n[l].indexOf(t);e>-1&&n[l].splice(e,1),t instanceof Z&&i.delete(t.compartment)}if(r.set(t,o),Array.isArray(t))for(let e of t)s(e,o);else if(t instanceof Z){if(i.has(t.compartment))throw new RangeError("Duplicate use of compartment in extensions");let n=e.get(t.compartment)||t.inner;i.set(t.compartment,n),s(n,o)}else if(t instanceof X)s(t.inner,t.prec);else if(t instanceof q)n[o].push(t),t.provides&&s(t.provides,o);else if(t instanceof W)n[o].push(t),t.facet.extensions&&s(t.facet.extensions,U);else{let e=t.extension;if(!e)throw new Error(`Unrecognized extension value in extension set (${t}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(e,o)}}return s(t,U),n.reduce((t,e)=>t.concat(e))}(t,e,s))i instanceof q?n.push(i):(r[i.facet.id]||(r[i.facet.id]=[])).push(i);let o=Object.create(null),l=[],h=[];for(let t of n)o[t.id]=h.length<<1,h.push(e=>t.slot(e));let a=null==i?void 0:i.config.facets;for(let t in r){let e=r[t],n=e[0].facet,s=a&&a[t]||[];if(e.every(t=>0==t.type))if(o[n.id]=l.length<<1|1,H(s,e))l.push(i.facet(n));else{let t=n.combine(e.map(t=>t.value));l.push(i&&n.compare(t,i.facet(n))?i.facet(n):t)}else{for(let t of e)0==t.type?(o[t.id]=l.length<<1|1,l.push(t.value)):(o[t.id]=h.length<<1,h.push(e=>t.dynamicSlot(e)));o[n.id]=h.length<<1,h.push(t=>z(t,n,e))}}let c=h.map(t=>t(o));return new tt(t,s,c,o,l,r)}}function et(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw new Error("Cyclic dependency between fields and/or facets");if(2&n)return n;t.status[i]=4;let r=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|r}function it(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]}const nt=I.define(),rt=I.define({combine:t=>t.some(t=>t),static:!0}),st=I.define({combine:t=>t.length?t[0]:void 0,static:!0}),ot=I.define(),lt=I.define(),ht=I.define(),at=I.define({combine:t=>!!t.length&&t[0]});class ct{constructor(t,e){this.type=t,this.value=e}static define(){return new ut}}class ut{of(t){return new ct(this,t)}}class ft{constructor(t){this.map=t}of(t){return new dt(this,t)}}class dt{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==this.value?this:new dt(this.type,e)}is(t){return this.type==t}static define(t={}){return new ft(t.map||(t=>t))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let t=n.map(e);t&&i.push(t)}return i}}dt.reconfigure=dt.define(),dt.appendConfig=dt.define();class pt{constructor(t,e,i,n,r,s){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=r,this.scrollIntoView=s,this._doc=null,this._state=null,i&&N(i,e.newLength),r.some(t=>t.type==pt.time)||(this.annotations=r.concat(pt.time.of(Date.now())))}static create(t,e,i,n,r,s){return new pt(t,e,i,n,r,s)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(pt.userEvent);return!(!e||!(e==t||e.length>t.length&&e.slice(0,t.length)==t&&"."==e[t.length]))}}function gt(t,e){let i=[];for(let n=0,r=0;;){let s,o;if(n=t[n]))s=t[n++],o=t[n++];else{if(!(r=0;r--){let s=i[r](t);s&&Object.keys(s).length&&(n=mt(n,vt(e,s,t.changes.newLength),!0))}return n==t?t:pt.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}(i?function(t){let e=t.startState,i=!0;for(let n of e.facet(ot)){let e=n(t);if(!1===e){i=!1;break}Array.isArray(e)&&(i=!0===i?e:gt(i,e))}if(!0!==i){let n,r;if(!1===i)r=t.changes.invertedDesc,n=M.empty(e.doc.length);else{let e=t.changes.filter(i);n=e.changes,r=e.filtered.mapDesc(e.changes).invertedDesc}t=pt.create(e,n,t.selection&&t.selection.map(r),dt.mapEffects(t.effects,r),t.annotations,t.scrollIntoView)}let n=e.facet(lt);for(let i=n.length-1;i>=0;i--){let r=n[i](t);t=r instanceof pt?r:Array.isArray(r)&&1==r.length&&r[0]instanceof pt?r[0]:wt(e,bt(r),!1)}return t}(r):r)}pt.time=ct.define(),pt.userEvent=ct.define(),pt.addToHistory=ct.define(),pt.remote=ct.define();const yt=[];function bt(t){return null==t?yt:Array.isArray(t)?t:[t]}var xt=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(xt||(xt={}));const kt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let St;try{St=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(t){}function At(t){return e=>{if(!/\S/.test(e))return xt.Space;if(function(t){if(St)return St.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||kt.test(i)))return!0}return!1}(e))return xt.Word;for(let i=0;i-1)return xt.Word;return xt.Other}}class Mt{constructor(t,e,i,n,r,s){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=r,s&&(s._state=this);for(let t=0;tr.set(e,t)),i=null),r.set(e.value.compartment,e.value.extension)):e.is(dt.reconfigure)?(i=null,n=e.value):e.is(dt.appendConfig)&&(i=null,n=bt(n).concat(e.value));if(i)e=t.startState.values.slice();else{i=tt.resolve(n,r,this),e=new Mt(i,this.doc,this.selection,i.dynamicSlots.map(()=>null),(t,e)=>e.reconfigure(t,this),null).values}new Mt(i,t.newDoc,t.newSelection,e,(e,i)=>i.update(e,t),t)}replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:P.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),r=[i.range],s=bt(i.effects);for(let i=1;ir.spec.fromJSON(s,t)))}return Mt.create({doc:t.doc,selection:P.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(t={}){let e=tt.resolve(t.extensions||[],new Map),i=t.doc instanceof n?t.doc:n.of((t.doc||"").split(e.staticFacet(Mt.lineSeparator)||k)),r=t.selection?t.selection instanceof P?t.selection:P.single(t.selection.anchor,t.selection.head):P.single(0);return N(r,i.length),e.staticFacet(rt)||(r=r.asSingle()),new Mt(e,i,r,e.dynamicSlots.map(()=>null),(t,e)=>e.create(t),null)}get tabSize(){return this.facet(Mt.tabSize)}get lineBreak(){return this.facet(Mt.lineSeparator)||"\n"}get readOnly(){return this.facet(at)}phrase(t,...e){for(let e of this.facet(Mt.phrases))if(Object.prototype.hasOwnProperty.call(e,t)){t=e[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(t,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>e.length?t:e[n-1]})),t}languageDataAt(t,e,i=-1){let n=[];for(let r of this.facet(nt))for(let s of r(this,e,i))Object.prototype.hasOwnProperty.call(s,t)&&n.push(s[t]);return n}charCategorizer(t){return At(this.languageDataAt("wordChars",t).join(""))}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),r=this.charCategorizer(t),s=t-i,o=t-i;for(;s>0;){let t=g(e,s,!1);if(r(e.slice(t,s))!=xt.Word)break;s=t}for(;ot.length?t[0]:4}),Mt.lineSeparator=st,Mt.readOnly=at,Mt.phrases=I.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every(i=>t[i]==e[i])}}),Mt.languageData=nt,Mt.changeFilter=ot,Mt.transactionFilter=lt,Mt.transactionExtender=ht,Q.reconfigure=dt.define();class Ot{eq(t){return this==t}range(t,e=t){return Dt.create(t,e,this)}}Ot.prototype.startSide=Ot.prototype.endSide=0,Ot.prototype.point=!1,Ot.prototype.mapMode=S.TrackDel;class Dt{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new Dt(t,e,i)}}function Tt(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Et{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let r=i?this.to:this.from;for(let s=n,o=r.length;;){if(s==o)return s;let n=s+o>>1,l=r[n]-t||(i?this.value[n].endSide:this.value[n].startSide)-e;if(n==s)return l>=0?s:o;l>=0?o=n:s=n+1}}between(t,e,i,n){for(let r=this.findIndex(e,-1e9,!0),s=this.findIndex(i,1e9,!1,r);ra||h==a&&c.startSide>0&&c.endSide<=0)continue;(a-h||c.endSide-c.startSide)<0||(s<0&&(s=h),c.point&&(o=Math.max(o,a-h)),i.push(c),n.push(h-s),r.push(a-s))}return{mapped:i.length?new Et(n,r,i,o):null,pos:s}}}class Bt{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new Bt(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:r=this.length}=t,s=t.filter;if(0==e.length&&!s)return this;if(i&&(e=e.slice().sort(Tt)),this.isEmpty)return e.length?Bt.of(e):this;let o=new Nt(this,null,-1).goto(0),l=0,h=[],a=new Rt;for(;o.value||l=0){let t=e[l++];a.addInner(t.from,t.to,t.value)||h.push(t)}else 1==o.rangeIndex&&o.chunkIndexthis.chunkEnd(o.chunkIndex)||ro.to||r=r&&t<=r+s.length&&!1===s.between(r,t-r,e-r,i))return}this.nextLayer.between(t,e,i)}}iter(t=0){return Lt.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return Lt.from(t).goto(e)}static compare(t,e,i,n,r=-1){let s=t.filter(t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=r),o=e.filter(t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=r),l=Pt(s,o,i),h=new Ht(s,l,r),a=new Ht(o,l,r);i.iterGaps((t,e,i)=>Wt(h,t,a,e,i,n)),i.empty&&0==i.length&&Wt(h,0,a,0,0,n)}static eq(t,e,i=0,n){null==n&&(n=999999999);let r=t.filter(t=>!t.isEmpty&&e.indexOf(t)<0),s=e.filter(e=>!e.isEmpty&&t.indexOf(e)<0);if(r.length!=s.length)return!1;if(!r.length)return!0;let o=Pt(r,s),l=new Ht(r,o,0).goto(i),h=new Ht(s,o,0).goto(i);for(;;){if(l.to!=h.to||!Vt(l.active,h.active)||l.point&&(!h.point||!l.point.eq(h.point)))return!1;if(l.to>n)return!0;l.next(),h.next()}}static spans(t,e,i,n,r=-1){let s=new Ht(t,null,r).goto(e),o=e,l=s.openStart;for(;;){let t=Math.min(s.to,i);if(s.point){let i=s.activeForPoint(s.to),r=s.pointFromo&&(n.span(o,t,s.active,l),l=s.openEnd(t));if(s.to>i)return l+(s.point&&s.to>i?1:0);o=s.to,s.next()}}static of(t,e=!1){let i=new Rt;for(let n of t instanceof Dt?[t]:e?function(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(Tt);e=n}return t}(t):t)i.add(n.from,n.to,n.value);return i.finish()}}Bt.empty=new Bt([],[],null,-1),Bt.empty.nextLayer=Bt.empty;class Rt{finishChunk(t){this.chunks.push(new Et(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new Rt)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(n<0)&&(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(Bt.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return t;let e=Bt.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function Pt(t,e,i){let n=new Map;for(let e of t)for(let t=0;t=this.minPoint)break}}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&n.push(new Nt(s,e,i,r));return 1==n.length?n[0]:new Lt(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let t=this.heap.length>>1;t>=0;t--)It(this.heap,t);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let t=this.heap.length>>1;t>=0;t--)It(this.heap,t);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),It(this.heap,0)}}}function It(t,e){for(let i=t[e];;){let n=1+(e<<1);if(n>=t.length)break;let r=t[n];if(n+1=0&&(r=t[n+1],n++),i.compare(r)<0)break;t[n]=i,t[e]=r,e=n}}class Ht{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Lt.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Ft(this.active,t),Ft(this.activeTo,t),Ft(this.activeRank,t),this.minActive=_t(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:r}=this.cursor;for(;e-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Ft(i,n)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}{let t=this.cursor.value;if(t.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[e]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function Wt(t,e,i,n,r,s){t.goto(e),i.goto(n);let o=n+r,l=n,h=n-e;for(;;){let e=t.to+h-i.to||t.endSide-i.endSide,n=e<0?t.to+h:i.to,r=Math.min(n,o);if(t.point||i.point?t.point&&i.point&&(t.point==i.point||t.point.eq(i.point))&&Vt(t.activeForPoint(t.to),i.activeForPoint(i.to))||s.comparePoint(l,r,t.point,i.point):r>l&&!Vt(t.active,i.active)&&s.compareRange(l,r,t.active,i.active),n>o)break;l=n,e<=0&&t.next(),e>=0&&i.next()}}function Vt(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;i--)t[i+1]=t[i];t[e]=i}function _t(t,e){let i=-1,n=1e9;for(let r=0;r=e)return n;if(n==t.length)break;r+=9==t.charCodeAt(n)?i-r%i:1,n=g(t,n)}return!0===n?-1:t.length}const $t="undefined"==typeof Symbol?"__ͼ":Symbol.for("ͼ"),Kt="undefined"==typeof Symbol?"__styleSet"+Math.floor(1e8*Math.random()):Symbol("styleSet"),Ut="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};class Gt{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(t){return/^@/.test(t)?[t]:t.split(/,\s*/)}function r(t,e,s,o){let l=[],h=/^@(\w+)\b/.exec(t[0]),a=h&&"keyframes"==h[1];if(h&&null==e)return s.push(t[0]+";");for(let i in e){let o=e[i];if(/&/.test(i))r(i.split(/,\s*/).map(e=>t.map(t=>e.replace(/&/,t))).reduce((t,e)=>t.concat(e)),o,s);else if(o&&"object"==typeof o){if(!h)throw new RangeError("The value of a property ("+i+") should be a primitive value.");r(n(i),o,l,a)}else null!=o&&l.push(i.replace(/_.*/,"").replace(/[A-Z]/g,t=>"-"+t.toLowerCase())+": "+o+";")}(l.length||a)&&s.push((!i||h||o?t:t.map(i)).join(", ")+" {"+l.join(" ")+"}")}for(let e in t)r(n(e),t[e],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let t=Ut[$t]||1;return Ut[$t]=t+1,"ͼ"+t.toString(36)}static mount(t,e,i){let n=t[Kt],r=i&&i.nonce;n?r&&n.setNonce(r):n=new Yt(t,r),n.mount(Array.isArray(e)?e:[e])}}let Jt=new Map;class Yt{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let e=Jt.get(i);if(e)return t.adoptedStyleSheets=[e.sheet,...t.adoptedStyleSheets],t[Kt]=e;this.sheet=new n.CSSStyleSheet,t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets],Jt.set(i,this)}else{this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);let n=t.head||t;n.insertBefore(this.styleTag,n.firstChild)}this.modules=[],t[Kt]=this}mount(t){let e=this.sheet,i=0,n=0;for(let r=0;r-1&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,s),e)for(let t=0;t",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Zt="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),te="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),ee=0;ee<10;ee++)Xt[48+ee]=Xt[96+ee]=String(ee);for(ee=1;ee<=24;ee++)Xt[ee+111]="F"+ee;for(ee=65;ee<=90;ee++)Xt[ee]=String.fromCharCode(ee+32),Qt[ee]=String.fromCharCode(ee);for(var ie in Xt)Qt.hasOwnProperty(ie)||(Qt[ie]=Xt[ie]);function ne(t){let e;return e=11==t.nodeType?t.getSelection?t:t.ownerDocument:t,e.getSelection()}function re(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function se(t,e){if(!e.anchorNode)return!1;try{return re(t,e.anchorNode)}catch(t){return!1}}function oe(t){return 3==t.nodeType?ve(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function le(t,e,i,n){return!!i&&(ae(t,e,i,n,-1)||ae(t,e,i,n,1))}function he(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function ae(t,e,i,n,r){for(;;){if(t==i&&e==n)return!0;if(e==(r<0?0:ce(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=he(t)+(r<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(1==(t=t.childNodes[e+(r<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=r<0?ce(t):0}}}function ce(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function ue(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function fe(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}class de{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?ce(e):0),i,Math.min(t.focusOffset,i?ce(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let pe,ge=null;function me(t){if(t.setActive)return t.setActive();if(ge)return t.focus(ge);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==ge?{get preventScroll(){return ge={preventScroll:!0},!0}}:void 0),!ge){ge=!1;for(let t=0;tMath.max(1,t.scrollHeight-t.clientHeight-4)}class xe{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new xe(t.parentNode,he(t),e)}static after(t,e){return new xe(t.parentNode,he(t)+1,e)}}const ke=[];class Se{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}sync(t,e){if(2&this.flags){let i,n=this.dom,r=null;for(let s of this.children){if(7&s.flags){if(!s.dom&&(i=r?r.nextSibling:n.firstChild)){let t=Se.get(i);(!t||!t.parent&&t.canReuseDOM(s))&&s.reuseDOM(i)}s.sync(t,e),s.flags&=-8}if(i=r?r.nextSibling:n.firstChild,e&&!e.written&&e.node==n&&i!=s.dom&&(e.written=!0),s.dom.parentNode==n)for(;i&&i!=s.dom;)i=Ae(i);else n.insertBefore(s.dom,i);r=s.dom}for(i=r?r.nextSibling:n.firstChild,i&&e&&e.node==n&&(e.written=!0);i;)i=Ae(i)}else if(1&this.flags)for(let i of this.children)7&i.flags&&(i.sync(t,e),i.flags&=-8)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let n=0==ce(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==n&&e.firstChild!=e.lastChild&&(n=t==e.firstChild?-1:1),t=e}i=n<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!Se.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let n=this.children[t];if(n.dom==i)return e;e+=n.length+n.breakAfter}}domBoundsAround(t,e,i=0){let n=-1,r=-1,s=-1,o=-1;for(let l=0,h=i,a=i;le)return i.domBoundsAround(t,e,h);if(c>=t&&-1==n&&(n=l,r=h),h>e&&i.dom.parentNode==this.dom){s=l,o=a;break}a=c,h=c+i.breakAfter}return{from:r,to:o<0?i+this.length:o,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:s=0?this.children[s].dom:null}}markDirty(t=!1){this.flags|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,7&this.flags&&this.markParentsDirty(!0))}setDOM(t){this.dom!=t&&(this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this)}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=ke){this.markDirty();for(let i=t;ithis.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function Ce(t,e,i,n,r,s,o,l,h){let{children:a}=t,c=a.length?a[e]:null,u=s.length?s[s.length-1]:null,f=u?u.breakAfter:o;if(!(e==n&&c&&!o&&!f&&s.length<2&&c.merge(i,r,s.length?u:null,0==i,l,h))){if(n0&&(!o&&s.length&&c.merge(i,c.length,s[0],!1,l,0)?c.breakAfter=s.shift().breakAfter:(i2);var Ve={mac:We||/Mac/.test(De.platform),windows:/Win/.test(De.platform),linux:/Linux|X11/.test(De.platform),ie:Pe,ie_version:Be?Te.documentMode||6:Re?+Re[1]:Ee?+Ee[1]:0,gecko:Ne,gecko_version:Ne?+(/Firefox\/(\d+)/.exec(De.userAgent)||[0,0])[1]:0,chrome:!!Le,chrome_version:Le?+Le[1]:0,ios:We,android:/Android\b/.test(De.userAgent),webkit:Ie,safari:He,webkit_version:Ie?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=Te.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class Fe extends Se{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t,e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return!(8&this.flags||i&&(!(i instanceof Fe)||this.length-(e-t)+i.length>256||8&i.flags))&&(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),!0)}split(t){let e=new Fe(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e.flags|=8&this.flags,e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new xe(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return function(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let r=e,s=e,o=0;0==e&&i<0||e==n&&i>=0?Ve.chrome||Ve.gecko||(e?(r--,o=1):s=0)?0:l.length-1];Ve.safari&&!o&&0==h.width&&(h=Array.prototype.find.call(l,t=>t.width)||h);return o?ue(h,o<0):h||null}(this.dom,t,e)}}class ze extends Se{constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.length=i;for(let t of e)t.setParent(this)}setAttrs(t){if(ye(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}canReuseDOM(t){return super.canReuseDOM(t)&&!(8&(this.flags|t.flags))}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.flags|=6)}sync(t,e){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t,e)}merge(t,e,i,n,r,s){return(!i||!(!(i instanceof ze&&i.mark.eq(this.mark))||t&&r<=0||et&&e.push(i=t&&(n=r),i=o,r++}let s=this.length-t;return this.length=t,n>-1&&(this.children.length=n,this.markDirty()),new ze(this.mark,e,s)}domAtPos(t){return je(this,t)}coordsAt(t,e){return $e(this,t,e)}}class _e extends Se{static create(t,e,i){return new _e(t,e,i)}constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}split(t){let e=_e.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,n,r,s){return!(i&&(!(i instanceof _e&&this.widget.compare(i.widget))||t>0&&r<=0||e0)?xe.before(this.dom):xe.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.widget.coordsAt(this.dom,t,e);if(i)return i;let n=this.dom.getClientRects(),r=null;if(!n.length)return null;let s=this.side?this.side<0:t>0;for(let e=s?n.length-1:0;r=n[e],!(t>0?0==e:e==n.length-1||r.top0?xe.before(this.dom):xe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){return this.dom.getBoundingClientRect()}get overrideDOMText(){return n.empty}get isHidden(){return!0}}function je(t,e){let i=t.dom,{children:n}=t,r=0;for(let t=0;rt&&e0;t--){let e=n[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=r;t=l&&(c.children.length?t(c,l-a):(!s||s.isHidden&&i>0)&&(u>l||a==u&&c.getSide()>0)?(s=c,o=l-a):(a-1?1:0)!=r.length-(i&&r.indexOf(i)>-1?1:0))return!1;for(let s of n)if(s!=i&&(-1==r.indexOf(s)||t[s]!==e[s]))return!1;return!0}function Je(t,e,i){let n=!1;if(e)for(let r in e)i&&r in i||(n=!0,"style"==r?t.style.cssText="":t.removeAttribute(r));if(i)for(let r in i)e&&e[r]==i[r]||(n=!0,"style"==r?t.style.cssText=i[r]:t.setAttribute(r,i[r]));return n}function Ye(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:e>0?1e8:-1e8,new ii(t,e,e,i,t.widget||null,!1)}static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;else{let{start:r,end:s}=ni(t,n);e=(r?n?-3e8:-1:5e8)-1,i=1+(s?n?2e8:1:-6e8)}return new ii(t,e,i,n,t.widget||null,!0)}static line(t){return new ei(t)}static set(t,e=!1){return Bt.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}Ze.none=Bt.empty;class ti extends Ze{constructor(t){let{start:e,end:i}=ni(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){var e,i;return this==t||t instanceof ti&&this.tagName==t.tagName&&(this.class||(null===(e=this.attrs)||void 0===e?void 0:e.class))==(t.class||(null===(i=t.attrs)||void 0===i?void 0:i.class))&&Ge(this.attrs,t.attrs,"class")}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}ti.prototype.point=!1;class ei extends Ze{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof ei&&this.spec.class==t.spec.class&&Ge(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}ei.prototype.mapMode=S.TrackBefore,ei.prototype.point=!0;class ii extends Ze{constructor(t,e,i,n,r,s){super(e,i,r,t),this.block=n,this.isReplace=s,this.mapMode=n?e<=0?S.TrackBefore:S.TrackAfter:S.TrackDel}get type(){return this.startSide=5||this.widget.lineBreaks>0)}eq(t){return t instanceof ii&&(e=this.widget,i=t.widget,e==i||!!(e&&i&&e.compare(i)))&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide;var e,i}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}function ni(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==i&&(i=t.inclusive),null==n&&(n=t.inclusive),{start:null!=i?i:e,end:null!=n?n:e}}function ri(t,e,i,n=0){let r=i.length-1;r>=0&&i[r]+n>=t?i[r]=Math.max(i[r],e):i.push(t,e)}ii.prototype.point=!0;class si extends Se{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,n,r,s){if(i){if(!(i instanceof si))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),Oe(this,t,e,i?i.children:[],r,s),!0}split(t){let e=new si;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i:i,off:n}=this.childPos(t);n&&(e.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let t=i;t0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){Ge(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){!function t(e,i,n){let r,{children:s}=e;n>0&&i instanceof ze&&s.length&&(r=s[s.length-1])instanceof ze&&r.mark.eq(i.mark)?t(r,i.children[0],n-1):(s.push(i),i.setParent(e)),e.length+=i.length}(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=Ke(e,this.attrs||{})),i&&(this.attrs=Ke({class:i},this.attrs||{}))}domAtPos(t){return je(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.flags|=6)}sync(t,e){var i;this.dom?4&this.flags&&(ye(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(Je(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t,e);let n=this.dom.lastChild;for(;n&&Se.get(n)instanceof ze;)n=n.lastChild;if(!(n&&this.length&&("BR"==n.nodeName||0!=(null===(i=Se.get(n))||void 0===i?void 0:i.isEditable)||Ve.ios&&this.children.some(t=>t instanceof Fe)))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t,e=0;for(let i of this.children){if(!(i instanceof Fe)||/[^ -~]/.test(i.text))return null;let n=oe(i.dom);if(1!=n.length)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(t,e){let i=$e(this,t,e);if(!this.children.length&&i&&this.parent){let{heightOracle:t}=this.parent.view.viewState,e=i.bottom-i.top;if(Math.abs(e-t.lineHeight)<2&&t.textHeight=e){if(r instanceof si)return r;if(s>e)break}n=s+r.breakAfter}return null}}class oi extends Se{constructor(t,e,i){super(),this.widget=t,this.length=e,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,n,r,s){return!(i&&(!(i instanceof oi&&this.widget.compare(i.widget))||t>0&&r<=0||e0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:n}=this.cursor.next(this.skip);if(this.skip=0,n)throw new Error("Ran out of text content when drawing inline views");if(i){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,t--;continue}this.text=e,this.textOff=0}let n=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(hi(new Fe(this.text.slice(this.textOff,this.textOff+n)),e),i),this.atCursorPos=!0,this.textOff+=n,t-=n,i=0}}span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(this.openStart=n)}point(t,e,i,n,r,s){if(this.disallowBlockEffectsFor[s]&&i instanceof ii){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=e-t;if(i instanceof ii)if(i.block){let{type:t}=i;t!=Qe.WidgetAfter||this.posCovered()||this.getLine(),this.addBlockWidget(new oi(i.widget||new ai("div"),o,t))}else{let s=_e.create(i.widget||new ai("span"),o,o?0:i.startSide),l=this.atCursorPos&&!s.isEditable&&r<=n.length&&(t0),h=!s.isEditable&&(tn.length||i.startSide<=0),a=this.getLine();2!=this.pendingBuffer||l||s.isEditable||(this.pendingBuffer=0),this.flushBuffer(n),l&&(a.append(hi(new qe(1),n),r),r=n.length+Math.max(0,r-n.length)),a.append(hi(s,n),r),this.atCursorPos=h,this.pendingBuffer=h?tn.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=r)}static build(t,e,i,n,r){let s=new li(t,e,i,r);return s.openEnd=Bt.spans(n,e,i,s),s.openStart<0&&(s.openStart=s.openEnd),s.finish(s.openEnd),s}}function hi(t,e){for(let i of e)t=new ze(i,[t],t.length);return t}class ai extends Xe{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}const ci=I.define(),ui=I.define(),fi=I.define(),di=I.define(),pi=I.define(),gi=I.define(),mi=I.define(),vi=I.define({combine:t=>t.some(t=>t)}),wi=I.define({combine:t=>t.some(t=>t)});class yi{constructor(t,e="nearest",i="nearest",n=5,r=5){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=r}map(t){return t.empty?this:new yi(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin)}}const bi=dt.define({map:(t,e)=>t.map(e)});function xi(t,e,i){let n=t.facet(di);n.length?n[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}const ki=I.define({combine:t=>!t.length||t[0]});let Si=0;const Ai=I.define();class Mi{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,this.extension=n(this)}static define(t,e){const{eventHandlers:i,provide:n,decorations:r}=e||{};return new Mi(Si++,t,i,t=>{let e=[Ai.of(t)];return r&&e.push(Ti.of(e=>{let i=e.plugin(t);return i?r(i):Ze.none})),n&&e.push(n(t)),e})}static fromClass(t,e){return Mi.define(e=>new t(e),e)}}class Ci{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(xi(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){xi(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){xi(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const Oi=I.define(),Di=I.define(),Ti=I.define(),Ei=I.define(),Bi=I.define();function Ri(t,e,i){let n=t.state.facet(Bi);if(!n.length)return n;let r=n.map(e=>e instanceof Function?e(t):e),s=[];return Bt.spans(r,e,i,{point(){},span(t,e,i,n){let r=s;for(let s=i.length-1;s>=0;s--,n--){let o,l=i[s].spec.bidiIsolate;if(null!=l)if(n>0&&r.length&&(o=r[r.length-1]).to==t&&o.direction==l)o.to=e,r=o.inner;else{let i={from:t,to:e,direction:l,inner:[]};r.push(i),r=i.inner}}}}),s}const Pi=I.define();function Ni(t){let e=0,i=0,n=0,r=0;for(let s of t.state.facet(Pi)){let o=s(t);o&&(null!=o.left&&(e=Math.max(e,o.left)),null!=o.right&&(i=Math.max(i,o.right)),null!=o.top&&(n=Math.max(n,o.top)),null!=o.bottom&&(r=Math.max(r,o.bottom)))}return{left:e,right:i,top:n,bottom:r}}const Li=I.define();class Ii{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new Ii(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toAa)break;r+=2}if(!l)return i;new Ii(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),s=l.toA,o=l.toB}}}class Hi{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=M.empty(this.startState.doc.length);for(let t of i)this.changes=this.changes.compose(t.changes);let n=[];this.changes.iterChangedRanges((t,e,i,r)=>n.push(new Ii(t,e,i,r))),this.changedRanges=n}static create(t,e,i){return new Hi(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return 0==this.flags&&0==this.transactions.length}}var Wi=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(Wi||(Wi={}));const Vi=Wi.LTR,Fi=Wi.RTL;function zi(t){let e=[];for(let i=0;i=e){if(o.level==i)return s;(r<0||(0!=n?n<0?o.frome:t[r].level>o.level))&&(r=s)}}if(r<0)throw new RangeError("Index out of range");return r}}function Gi(t,e){if(t.length!=e.length)return!1;for(let i=0;i=0;t-=3)if($i[t+1]==-i){let e=$i[t+2],i=2&e?r:4&e?1&e?s:r:0;i&&(Ji[o]=Ji[$i[t]]=i),l=t;break}}else{if(189==$i.length)break;$i[l++]=o,$i[l++]=e,$i[l++]=h}else if(2==(n=Ji[o])||1==n){let t=n==r;h=t?0:1;for(let e=l-3;e>=0;e-=3){let i=$i[e+2];if(2&i)break;if(t)$i[e+2]|=2;else{if(4&i)break;$i[e+2]|=4}}}}}(t,r,s,n,l),function(t,e,i,n){for(let r=0,s=n;r<=i.length;r++){let o=r?i[r-1].to:t,l=rh;)e==s&&(e=i[--n].from,s=n?i[n-1].to:t),Ji[--e]=c;h=o}else s=o,h++}}}(r,s,n,l),function t(e,i,n,r,s,o,l){let h=r%2?2:1;if(r%2==s%2)for(let a=i,c=0;aa&&l.push(new Ui(a,t.from,d)),Yi(e,t.direction==Vi!=!(d%2)?r+1:r,s,t.inner,t.from,t.to,l),a=t.to}p=t.to}else{if(p==n||(i?Ji[p]!=h:Ji[p]==h))break;p++}f?t(e,a,p,r+1,s,f,l):ai;){let n=!0,u=!1;if(!c||a>o[c-1].to){let t=Ji[a-1];t!=h&&(n=!1,u=16==t)}let f=n||1!=h?null:[],d=n?r:r+1,p=a;t:for(;;)if(c&&p==o[c-1].to){if(u)break t;let t=o[--c];if(!n)for(let e=t.from,n=c;;){if(e==i)break t;if(!n||o[n-1].to!=e){if(Ji[e-1]==h)break t;break}e=o[--n].from}if(f)f.push(t);else{t.toJi.length;)Ji[Ji.length]=256;let n=[],r=e==Vi?0:1;return Yi(t,r,r,i,0,t.length,n),n}function Qi(t){return[new Ui(0,t,0)]}let Zi="";function tn(t,e,i,n,r){var s;let o=n.head-t.from,l=-1;if(0==o){if(!r||!t.length)return null;e[0].level!=i&&(o=e[0].side(!1,i),l=0)}else if(o==t.length){if(r)return null;let t=e[e.length-1];t.level!=i&&(o=t.side(!0,i),l=e.length-1)}l<0&&(l=Ui.find(e,o,null!==(s=n.bidiLevel)&&void 0!==s?s:-1,n.assoc));let h=e[l];o==h.side(r,i)&&(h=e[l+=r?1:-1],o=h.side(!r,i));let a=r==(h.dir==i),c=g(t.text,o,a);if(Zi=t.text.slice(Math.min(o,c),Math.max(o,c)),c!=h.side(r,i))return P.cursor(c+t.from,a?-1:1,h.level);let u=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return u||h.level==i?u&&u.level0&&i.length&&(i.every(({fromA:t,toA:e})=>ethis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let n=-1;this.view.inputState.composing>=0&&((null===(e=this.domChanged)||void 0===e?void 0:e.newSel)?n=this.domChanged.newSel.head:function(t,e){let i=!1;e&&t.iterChangedRanges((t,n)=>{te.from&&(i=!0)});return i}(t.changes,this.hasComposition)||t.selectionSet||(n=t.state.selection.main.head));let r=n>-1?function(t,e,i){let n=rn(t,i);if(!n)return null;let{node:r,from:s,to:o}=n,l=r.nodeValue;if(/[\n\r]/.test(l))return null;if(t.state.doc.sliceString(n.from,n.to)!=l)return null;let h=e.invertedDesc,a=new Ii(h.mapPos(s),h.mapPos(o),s,o),c=[];for(let e=r.parentNode;;e=e.parentNode){let i=Se.get(e);if(i instanceof ze)c.push({node:e,deco:i.mark});else{if(i instanceof si||"DIV"==e.nodeName&&e.parentNode==t.contentDOM)return{range:a,text:r,marks:c,line:e};if(e==t.contentDOM)return null;c.push({node:e,deco:new ti({inclusive:!0,attributes:Ye(e),tagName:e.tagName.toLowerCase()})})}}}(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:e,to:n}=this.hasComposition;i=new Ii(e,n,t.changes.mapPos(e,-1),t.changes.mapPos(n,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(Ve.ie||Ve.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let s=function(t,e,i){let n=new class{constructor(){this.changes=[]}compareRange(t,e){ri(t,e,this.changes)}comparePoint(t,e){ri(t,e,this.changes)}};return Bt.compare(t,e,i,n),n.changes}(this.decorations,this.updateDeco(),t.changes);return i=Ii.extendWithRanges(i,s),!!(7&this.flags||0!=i.length)&&(this.updateInner(i,t.startState.doc.length,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e,i);let{observer:n}=this.view;n.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=Ve.chrome||Ve.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,t),this.flags&=-8,t&&(t.written||n.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(t=>t.flags&=-9);let r=[];if(this.view.viewport.from||this.view.viewport.to=0?n[t]:null;if(!e)break;let s,o,l,h,{fromA:a,toA:c,fromB:u,toB:f}=e;if(i&&i.range.fromBu){let t=li.build(this.view.state.doc,u,i.range.fromB,this.decorations,this.dynamicDecorationMap),e=li.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);o=t.breakAtStart,l=t.openStart,h=e.openEnd;let n=this.compositionView(i);e.breakAtStart?n.breakAfter=1:e.content.length&&n.merge(n.length,n.length,e.content[0],!1,e.openStart,0)&&(n.breakAfter=e.content[0].breakAfter,e.content.shift()),t.content.length&&n.merge(0,0,t.content[t.content.length-1],!0,0,t.openEnd)&&t.content.pop(),s=t.content.concat(n).concat(e.content)}else({content:s,breakAtStart:o,openStart:l,openEnd:h}=li.build(this.view.state.doc,u,f,this.decorations,this.dynamicDecorationMap));let{i:d,off:p}=r.findPos(c,1),{i:g,off:m}=r.findPos(a,-1);Ce(this,g,m,d,p,s,o,l,h)}i&&this.fixCompositionDOM(i)}compositionView(t){let e=new Fe(t.text.nodeValue);e.flags|=8;for(let{deco:i}of t.marks)e=new ze(i,[e],e.length);let i=new si;return i.append(e,0),i}fixCompositionDOM(t){let e=(t,e)=>{e.flags|=8|(e.children.some(t=>7&t.flags)?1:0),this.markedForComposition.add(e);let i=Se.get(t);i&&i!=e&&(i.dom=null),e.setDOM(t)},i=this.childPos(t.range.fromB,1),n=this.children[i.i];e(t.line,n);for(let r=t.marks.length-1;r>=-1;r--)i=n.childPos(i.off,1),n=n.children[i.i],e(r>=0?t.marks[r].node:t.text,n)}updateSelection(t=!1,e=!1){!t&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let i=this.view.root.activeElement,n=i==this.dom,r=!n&&se(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(n||e||r))return;let s=this.forceSelection;this.forceSelection=!1;let o=this.view.state.selection.main,l=this.moveToLine(this.domAtPos(o.anchor)),h=o.empty?l:this.moveToLine(this.domAtPos(o.head));if(Ve.gecko&&o.empty&&!this.hasComposition&&(1==(a=l).node.nodeType&&a.node.firstChild&&(0==a.offset||"false"==a.node.childNodes[a.offset-1].contentEditable)&&(a.offset==a.node.childNodes.length||"false"==a.node.childNodes[a.offset].contentEditable))){let t=document.createTextNode("");this.view.observer.ignore(()=>l.node.insertBefore(t,l.node.childNodes[l.offset]||null)),l=h=new xe(t,0),s=!0}var a;let c=this.view.observer.selectionRange;!s&&c.focusNode&&le(l.node,l.offset,c.anchorNode,c.anchorOffset)&&le(h.node,h.offset,c.focusNode,c.focusOffset)||(this.view.observer.ignore(()=>{Ve.android&&Ve.chrome&&this.dom.contains(c.focusNode)&&function(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=ne(this.view.root);if(t)if(o.empty){if(Ve.gecko){let t=(e=l.node,n=l.offset,1!=e.nodeType?0:(n&&"false"==e.childNodes[n-1].contentEditable?1:0)|(no.head&&([l,h]=[h,l]),e.setEnd(h.node,h.offset),e.setStart(l.node,l.offset),t.removeAllRanges(),t.addRange(e)}else;var e,n;r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(l,h)),this.impreciseAnchor=l.precise?null:new xe(c.anchorNode,c.anchorOffset),this.impreciseHead=h.precise?null:new xe(c.focusNode,c.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=ne(t.root),{anchorNode:n,anchorOffset:r}=t.observer.selectionRange;if(!(i&&e.empty&&e.assoc&&i.modify))return;let s=si.find(this,e.head);if(!s)return;let o=s.posAtStart;if(e.head==o||e.head==o+s.length)return;let l=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!l||!h||l.bottom>h.top)return;let a=this.domAtPos(e.head+e.assoc);i.collapse(a.node,a.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(n,r)}moveToLine(t){let e,i=this.dom;if(t.node!=i)return t;for(let n=t.offset;!e&&n=0;n--){let t=Se.get(i.childNodes[n]);t instanceof si&&(e=t.domAtPos(t.length))}return e?new xe(e.node,e.offset,!0):t}nearest(t){for(let e=t;e;){let t=Se.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;es||t==s&&r.type!=Qe.WidgetBefore&&r.type!=Qe.WidgetAfter&&(!n||2==e||this.children[n-1].breakAfter||this.children[n-1].type==Qe.WidgetBefore&&e>-2))return r.coordsAt(t-s,e);i=s}}coordsForChar(t){let{i:e,off:i}=this.childPos(t,1),n=this.children[e];if(!(n instanceof si))return null;for(;n.children.length;){let{i:t,off:e}=n.childPos(i,1);for(;;t++){if(t==n.children.length)return null;if((n=n.children[t]).length)break}i=e}if(!(n instanceof Fe))return null;let r=g(n.text,i);if(r==i)return null;let s=ve(n.dom,i,r).getClientRects();return!s.length||s[0].top>=s[0].bottom?null:s[0]}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,r=this.view.contentDOM.clientWidth,s=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,l=this.view.textDirection==Wi.LTR;for(let t=0,h=0;hn)break;if(t>=i){let i=a.dom.getBoundingClientRect();if(e.push(i.height),s){let e=a.dom.lastChild,n=e?oe(e):[];if(n.length){let e=n[n.length-1],s=l?e.right-i.left:i.right-e.left;s>o&&(o=s,this.minWidth=r,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+a.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?Wi.RTL:Wi.LTR}measureTextSize(){for(let t of this.children)if(t instanceof si){let e=t.measureTextSize();if(e)return e}let t,e,i,n=document.createElement("div");return n.className="cm-line",n.style.width="99999px",n.style.position="absolute",n.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(n);let r=oe(n.firstChild)[0];t=n.getBoundingClientRect().height,e=r?r.width/27:7,i=r?r.height:t,n.remove()}),{lineHeight:t,charWidth:e,textHeight:i}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new Me(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let r=n==e.viewports.length?null:e.viewports[n],s=r?r.from-1:this.length;if(s>i){let n=(e.lineBlockAt(s).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(Ze.replace({widget:new nn(n),block:!0,inclusive:!0,isBlockGap:!0}).range(i,s))}if(!r)break;i=r.to+1}return Ze.set(t)}updateDeco(){let t=this.view.state.facet(Ti).map((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t);for(let e=t.length;ei.anchor?-1:1);if(!n)return;!i.empty&&(e=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,e.left),top:Math.min(n.top,e.top),right:Math.max(n.right,e.right),bottom:Math.max(n.bottom,e.bottom)});let r=Ni(this.view),s={left:n.left-r.left,top:n.top-r.top,right:n.right+r.right,bottom:n.bottom+r.bottom};!function(t,e,i,n,r,s,o,l){let h=t.ownerDocument,a=h.defaultView||window;for(let c=t,u=!1;c&&!u;)if(1==c.nodeType){let t,f=c==h.body,d=1,p=1;if(f)t=fe(a);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(u=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();d=e.width/c.offsetWidth,p=e.height/c.offsetHeight,t={left:e.left,right:e.left+c.clientWidth*d,top:e.top,bottom:e.top+c.clientHeight*p}}let g=0,m=0;if("nearest"==r)e.top0&&e.bottom>t.bottom+m&&(m=e.bottom-t.bottom+m+o)):e.bottom>t.bottom&&(m=e.bottom-t.bottom+o,i<0&&e.top-m0&&e.right>t.right+g&&(g=e.right-t.right+g+s)):e.right>t.right&&(g=e.right-t.right+s,i<0&&e.left0))break;i=i.childNodes[n-1],n=ce(i)}if(i>=0)for(let n=t,r=e;;){if(3==n.nodeType)return{node:n,offset:r};if(!(1==n.nodeType&&r=0))break;n=n.childNodes[r],r=0}return null}function on(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function ln(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function hn(t,e){return t.tope.top+1}function an(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function un(t,e,i){let n=t.nodeValue.length,r=-1,s=1e9,o=0;for(let l=0;li?a.top-i:i-a.bottom)-1;if(a.left-1<=e&&a.right+1>=e&&c=(a.left+a.right)/2,n=i;if(Ve.chrome||Ve.gecko){ve(t,l).getBoundingClientRect().left==a.right&&(n=!i)}if(c<=0)return{node:t,offset:l+(n?1:0)};r=l+(n?1:0),s=c}}}return{node:t,offset:r>-1?r:o>0?t.nodeValue.length:0}}function fn(t,e,i,n=-1){var r,s;let o,l=t.contentDOM.getBoundingClientRect(),h=l.top+t.viewState.paddingTop,{docHeight:a}=t.viewState,{x:c,y:u}=e,f=u-h;if(f<0)return 0;if(f>a)return t.state.doc.length;for(let e=t.viewState.heightOracle.textHeight/2,r=!1;o=t.elementAtHeight(f),o.type!=Qe.Text;)for(;f=n>0?o.bottom+e:o.top-e,!(f>=0&&f<=a);){if(r)return i?null:0;r=!0,n=-n}u=h+f;let d=o.from;if(dt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:i?null:dn(t,l,o,c,u);let p=t.dom.ownerDocument,g=t.root.elementFromPoint?t.root:p,m=g.elementFromPoint(c,u);m&&!t.contentDOM.contains(m)&&(m=null),m||(c=Math.max(l.left+1,Math.min(l.right-1,c)),m=g.elementFromPoint(c,u),m&&!t.contentDOM.contains(m)&&(m=null));let v,w=-1;if(m&&0!=(null===(r=t.docView.nearest(m))||void 0===r?void 0:r.isEditable))if(p.caretPositionFromPoint){let t=p.caretPositionFromPoint(c,u);t&&({offsetNode:v,offset:w}=t)}else if(p.caretRangeFromPoint){let e=p.caretRangeFromPoint(c,u);e&&(({startContainer:v,startOffset:w}=e),(!t.contentDOM.contains(v)||Ve.safari&&function(t,e,i){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return ve(t,n-1,n).getBoundingClientRect().left>i}(v,w,c)||Ve.chrome&&function(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}let n=1==t.nodeType?t.getBoundingClientRect():ve(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return i-n.left>5}(v,w,c))&&(v=void 0))}if(!v||!t.docView.dom.contains(v)){let e=si.find(t.docView,d);if(!e)return f>o.top+o.height/2?o.to:o.from;({node:v,offset:w}=function t(e,i,n){let r,s,o,l,h,a,c,u,f=!1;for(let d=e.firstChild;d;d=d.nextSibling){let e=oe(d);for(let p=0;pv||l==v&&o>m){r=d,s=g,o=m,l=v;let t=v?n0?p0)}0==m?n>g.bottom&&(!c||c.bottomg.top)&&(a=d,u=g):c&&hn(c,g)?c=cn(c,g.bottom):u&&hn(u,g)&&(u=an(u,g.top))}}if(c&&c.bottom>=n?(r=h,s=c):u&&u.top<=n&&(r=a,s=u),!r)return{node:e,offset:0};let d=Math.max(s.left,Math.min(s.right,i));return 3==r.nodeType?un(r,d,n):f&&"false"!=r.contentEditable?t(r,d,n):{node:e,offset:Array.prototype.indexOf.call(e.childNodes,r)+(i>=(s.left+s.right)/2?1:0)}}(e.dom,c,u))}let y=t.docView.nearest(v);if(!y)return null;if(y.isWidget&&1==(null===(s=y.dom)||void 0===s?void 0:s.nodeType)){let t=y.dom.getBoundingClientRect();return e.y1.5*t.defaultLineHeight){let e=t.viewState.heightOracle.textHeight;s+=Math.floor((r-i.top-.5*(t.defaultLineHeight-e))/e)*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+jt(o,s,t.state.tabSize)}function pn(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==Qe.Text))return t;return i}function gn(t,e,i,n){let r=t.state.doc.lineAt(e.head),s=t.bidiSpans(r),o=t.textDirectionAt(r.from);for(let l=e,h=null;;){let e=tn(r,s,o,l,i),a=Zi;if(!e){if(r.number==(i?t.state.doc.lines:1))return l;a="\n",r=t.state.doc.line(r.number+(i?1:-1)),s=t.bidiSpans(r),e=P.cursor(i?r.from:r.to)}if(h){if(!h(a))return l}else{if(!n)return e;h=n(a)}l=e}}function mn(t,e,i){for(;;){let n=0;for(let r of t)r.between(e-1,e+1,(t,r,s)=>{if(e>t&&ee(t)),i.from,e.head>i.from?-1:1);return n==i.from?i:P.cursor(n,n{this.ignoreDuringComposition(i)||"keydown"==i.type&&this.keydown(t,i)||(this.mustFlushObserver(i)&&t.observer.forceFlush(),this.runCustomHandlers(i.type,t,i)?i.preventDefault():e(t,i))};for(let i in Mn){let n=Mn[i];t.contentDOM.addEventListener(i,i=>{An(t,i)&&e(n,i)},Cn[i]),this.registeredEvents.push(i)}var i;t.scrollDOM.addEventListener("mousedown",i=>{if(i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&(e(Mn.mousedown,i),!i.defaultPrevented&&2==i.button)){let e=t.contentDOM.style.minHeight;t.contentDOM.style.minHeight="100%",setTimeout(()=>t.contentDOM.style.minHeight=e,200)}}),t.scrollDOM.addEventListener("drop",i=>{i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&e(Mn.drop,i)}),Ve.chrome&&102==Ve.chrome_version&&t.scrollDOM.addEventListener("wheel",()=>{this.chromeScrollHack<0?t.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout(()=>{this.chromeScrollHack=-1,t.contentDOM.style.pointerEvents=""},100)},{passive:!0}),this.notifiedFocused=t.hasFocus,Ve.safari&&t.contentDOM.addEventListener("input",()=>null),Ve.gecko&&(i=t.contentDOM.ownerDocument,jn.has(i)||(jn.add(i),i.addEventListener("copy",()=>{}),i.addEventListener("cut",()=>{})))}ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let r of e)if(n=null===(i=r.update(t).spec)||void 0===i?void 0:i.domEventHandlers){this.customHandlers.push({plugin:r.value,handlers:n});for(let e in n)this.registeredEvents.indexOf(e)<0&&"scroll"!=e&&(this.registeredEvents.push(e),t.contentDOM.addEventListener(e,i=>{An(t,i)&&this.runCustomHandlers(e,t,i)&&i.preventDefault()}))}}runCustomHandlers(t,e,i){for(let n of this.customHandlers){let r=n.handlers[t];if(r)try{if(r.call(n.plugin,i,e)||i.defaultPrevented)return!0}catch(t){xi(e.state,t)}}return!1}runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.lastScrollLeft=t.scrollDOM.scrollLeft;for(let i of this.customHandlers){let n=i.handlers.scroll;if(n)try{n.call(i.plugin,e,t)}catch(e){xi(t.state,e)}}}keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()t.keyCode==e.keyCode))&&!e.ctrlKey||bn.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey))&&(this.pendingIOSKey=i||e,setTimeout(()=>this.flushIOSKey(t),250),!0)}flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,we(t.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(Ve.safari&&!Ve.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const yn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],bn="dthko",xn=[16,17,18,20,91,92,224,225];function kn(t){return.7*Math.max(0,t)+8}class Sn{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=function(t){let e=t.ownerDocument;for(let i=t.parentNode;i&&i!=e.body;)if(1==i.nodeType){if(i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)return i;i=i.assignedSlot||i.parentNode}else{if(11!=i.nodeType)break;i=i.host}return null}(t.contentDOM),this.atoms=t.state.facet(Ei).map(e=>e(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(Mt.allowMultipleSelections)&&function(t,e){let i=t.state.facet(ci);return i.length?i[0](e):Ve.mac?e.metaKey:e.ctrlKey}(t,e),this.dragging=!(!function(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=ne(t.root);if(!n||0==n.rangeCount)return!0;let r=n.getRangeAt(0).getClientRects();for(let t=0;t=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}(t,e)||1!=Wn(e))&&null}start(t){!1===this.dragging&&(t.preventDefault(),this.select(t))}move(t){var e,i,n;if(0==t.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(i=this.startEvent,n=t,Math.max(Math.abs(i.clientX-n.clientX),Math.abs(i.clientY-n.clientY))<10))return;this.select(this.lastEvent=t);let r=0,s=0,o=(null===(e=this.scrollParent)||void 0===e?void 0:e.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},l=Ni(this.view);t.clientX-l.left<=o.left+6?r=-kn(o.left-t.clientX):t.clientX+l.right>=o.right-6&&(r=kn(t.clientX-o.right)),t.clientY-l.top<=o.top+6?s=-kn(o.top-t.clientY):t.clientY+l.bottom>=o.bottom-6&&(s=kn(t.clientY-o.bottom)),this.setScrollSpeed(r,s)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(t){let e=null;for(let i=0;ithis.select(this.lastEvent),20)}}function An(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i,n=e.target;n!=t.contentDOM;n=n.parentNode)if(!n||11==n.nodeType||(i=Se.get(n))&&i.ignoreEvent(e))return!1;return!0}const Mn=Object.create(null),Cn=Object.create(null),On=Ve.ie&&Ve.ie_version<15||Ve.ios&&Ve.webkit_version<604;function Dn(t,e){let i,{state:n}=t,r=1,s=n.toText(e),o=s.lines==n.selection.ranges.length;if(null!=Fn&&n.selection.ranges.every(t=>t.empty)&&Fn==s.toString()){let t=-1;i=n.changeByRange(i=>{let l=n.doc.lineAt(i.from);if(l.from==t)return{range:i};t=l.from;let h=n.toText((o?s.line(r++).text:e)+n.lineBreak);return{changes:{from:l.from,insert:h},range:P.cursor(i.from+h.length)}})}else i=o?n.changeByRange(t=>{let e=s.line(r++);return{changes:{from:t.from,to:t.to,insert:e.text},range:P.cursor(t.from+e.length)}}):n.replaceSelection(s);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}function Tn(t,e,i,n){if(1==n)return P.cursor(e,i);if(2==n)return function(t,e,i=1){let n=t.charCategorizer(e),r=t.doc.lineAt(e),s=e-r.from;if(0==r.length)return P.cursor(e);0==s?i=1:s==r.length&&(i=-1);let o=s,l=s;i<0?o=g(r.text,s,!1):l=g(r.text,s);let h=n(r.text.slice(o,l));for(;o>0;){let t=g(r.text,o,!1);if(n(r.text.slice(t,o))!=h)break;o=t}for(;l{t.inputState.setSelectionOrigin("select"),27==e.keyCode&&(t.inputState.lastEscPress=Date.now())},Mn.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},Mn.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},Cn.touchstart=Cn.touchmove={passive:!0},Mn.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return;let i=null;for(let n of t.state.facet(fi))if(i=n(t,e),i)break;if(i||0!=e.button||(i=function(t,e){let i=Pn(t,e),n=Wn(e),r=t.state.selection;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),r=r.map(t.changes))},get(e,s,o){let l,h=Pn(t,e),a=Tn(t,h.pos,h.bias,n);if(i.pos!=h.pos&&!s){let e=Tn(t,i.pos,i.bias,n),r=Math.min(e.from,a.from),s=Math.max(e.to,a.to);a=r1&&(l=function(t,e){for(let i=0;i=e)return P.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}(r,h.pos))?l:o?r.addRange(a):P.create([a])}}}(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new Sn(t,e,i,n)),n&&t.observer.ignore(()=>me(t.contentDOM)),t.inputState.mouseSelection&&t.inputState.mouseSelection.start(e)}};let En=(t,e)=>t>=e.top&&t<=e.bottom,Bn=(t,e,i)=>En(e,i)&&t>=i.left&&t<=i.right;function Rn(t,e,i,n){let r=si.find(t.docView,e);if(!r)return 1;let s=e-r.posAtStart;if(0==s)return 1;if(s==r.length)return-1;let o=r.coordsAt(s,-1);if(o&&Bn(i,n,o))return-1;let l=r.coordsAt(s,1);return l&&Bn(i,n,l)?1:o&&En(n,o)?-1:1}function Pn(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:Rn(t,i,e.clientX,e.clientY)}}const Nn=Ve.ie&&Ve.ie_version<=11;let Ln=null,In=0,Hn=0;function Wn(t){if(!Nn)return t.detail;let e=Ln,i=Hn;return Ln=t,Hn=Date.now(),In=!e||i>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(In+1)%3:1}function Vn(t,e,i,n){if(!i)return;let r=t.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:s}=t.inputState,o=n&&s&&s.dragging&&function(t,e){let i=t.state.facet(ui);return i.length?i[0](e):Ve.mac?!e.altKey:!e.ctrlKey}(t,e)?{from:s.dragging.from,to:s.dragging.to}:null,l={from:r,insert:i},h=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:h,selection:{anchor:h.mapPos(r,-1),head:h.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"})}Mn.dragstart=(t,e)=>{let{selection:{main:i}}=t.state,{mouseSelection:n}=t.inputState;n&&(n.dragging=i),e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove")},Mn.drop=(t,e)=>{if(!e.dataTransfer)return;if(t.state.readOnly)return e.preventDefault();let i=e.dataTransfer.files;if(i&&i.length){e.preventDefault();let n=Array(i.length),r=0,s=()=>{++r==i.length&&Vn(t,e,n.filter(t=>null!=t).join(t.state.lineBreak),!1)};for(let t=0;t{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(n[t]=e.result),s()},e.readAsText(i[t])}}else Vn(t,e,e.dataTransfer.getData("Text"),!0)},Mn.paste=(t,e)=>{if(t.state.readOnly)return e.preventDefault();t.observer.flush();let i=On?null:e.clipboardData;i?(Dn(t,i.getData("text/plain")||i.getData("text/uri-text")),e.preventDefault()):function(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),Dn(t,i.value)},50)}(t)};let Fn=null;Mn.copy=Mn.cut=(t,e)=>{let{text:i,ranges:n,linewise:r}=function(t){let e=[],i=[],n=!1;for(let n of t.selection.ranges)n.empty||(e.push(t.sliceDoc(n.from,n.to)),i.push(n));if(!e.length){let r=-1;for(let{from:n}of t.selection.ranges){let s=t.doc.lineAt(n);s.number>r&&(e.push(s.text),i.push({from:s.from,to:Math.min(t.doc.length,s.to+1)})),r=s.number}n=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:n}}(t.state);if(!i&&!r)return;Fn=r?i:null;let s=On?null:e.clipboardData;s?(e.preventDefault(),s.clearData(),s.setData("text/plain",i)):function(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),t.focus()},50)}(t,i),"cut"!=e.type||t.state.readOnly||t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})};const zn=ct.define();function _n(t,e){let i=[];for(let n of t.facet(mi)){let r=n(t,e);r&&i.push(r)}return i?t.update({effects:i,annotations:zn.of(!0)}):null}function qn(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=_n(t.state,e);i?t.dispatch(i):t.update([])}},10)}Mn.focus=t=>{t.inputState.lastFocusTime=Date.now(),t.scrollDOM.scrollTop||!t.inputState.lastScrollTop&&!t.inputState.lastScrollLeft||(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),qn(t)},Mn.blur=t=>{t.observer.clearSelectionRange(),qn(t)},Mn.compositionstart=Mn.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},Mn.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,Ve.chrome&&Ve.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50)},Mn.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},Mn.beforeinput=(t,e)=>{var i;let n;if(Ve.chrome&&Ve.android&&(n=yn.find(t=>t.inputType==e.inputType))&&(t.observer.delayAndroidKey(n.key,n.keyCode),"Backspace"==n.key||"Delete"==n.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout(()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}};const jn=new Set;const $n=["pre-wrap","normal","pre-line","break-spaces"];class Kn{constructor(t){this.lineWrapping=t,this.doc=n.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){if(!this.lineWrapping)return this.lineHeight;return(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return $n.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,l=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=r,l){this.heightSamples={};for(let t=0;t0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>.001&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return Yn.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let r=this,s=i.doc;for(let o=n.length-1;o>=0;o--){let{fromA:l,toA:h,fromB:a,toB:c}=n[o],u=r.lineAt(l,Jn.ByPosNoHeight,i.setDoc(e),0,0),f=u.to>=h?u:r.lineAt(h,Jn.ByPosNoHeight,i,0,0);for(c+=f.to-h,h=f.to;o>0&&u.from<=n[o-1].toA;)l=n[o-1].fromA,a=n[o-1].fromB,o--,l2*r){let r=t[e-1];r.break?t.splice(--e,1,r.left,null,r.right):t.splice(--e,1,r.left,r.right),i+=1+r.break,n-=r.size}else{if(!(r>2*n))break;{let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,r-=e.size}}else if(n=r&&s(this.blockAt(0,i,n,r))}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight(t,n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Qn extends Xn{constructor(t,e){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(t,e,i,n){return new Gn(n,this.length,i,this.height,this.breaks)}replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Qn||n instanceof Zn&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof Zn?n=new Qn(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Yn.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(t,n.heights[n.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Zn extends Yn{constructor(t){super(t,0)}heightMetrics(t,e){let i,n=t.doc.lineAt(e).number,r=t.doc.lineAt(e+this.length).number,s=r-n+1,o=0;if(t.lineWrapping){let e=Math.min(this.height,t.lineHeight*s);i=e/s,this.length>s+1&&(o=(this.height-e)/(this.length-s-1))}else i=this.height/s;return{firstLine:n,lastLine:r,perLine:i,perChar:o}}blockAt(t,e,i,n){let{firstLine:r,lastLine:s,perLine:o,perChar:l}=this.heightMetrics(e,n);if(e.lineWrapping){let r=n+Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length),s=e.doc.lineAt(r),h=o+s.length*l,a=Math.max(i,t-h/2);return new Gn(s.from,s.length,a,h,0)}{let n=Math.max(0,Math.min(s-r,Math.floor((t-i)/o))),{from:l,length:h}=e.doc.line(r+n);return new Gn(l,h,i+o*n,o,0)}}lineAt(t,e,i,n,r){if(e==Jn.ByHeight)return this.blockAt(t,i,n,r);if(e==Jn.ByPosNoHeight){let{from:e,to:n}=i.doc.lineAt(t);return new Gn(e,n-e,0,0,0)}let{firstLine:s,perLine:o,perChar:l}=this.heightMetrics(i,r),h=i.doc.lineAt(t),a=o+h.length*l,c=h.number-s,u=n+o*c+l*(h.from-r-c);return new Gn(h.from,h.length,Math.max(n,Math.min(u,n+this.height-a)),a,0)}forEachLine(t,e,i,n,r,s){t=Math.max(t,r),e=Math.min(e,r+this.length);let{firstLine:o,perLine:l,perChar:h}=this.heightMetrics(i,r);for(let a=t,c=n;a<=e;){let e=i.doc.lineAt(a);if(a==t){let i=e.number-o;c+=l*i+h*(t-r-i)}let n=l+h*e.length;s(new Gn(e.from,e.length,c,n,0)),c+=n,a=e.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t instanceof Zn?i[i.length-1]=new Zn(t.length+n):i.push(null,new Zn(n-1))}if(t>0){let e=i[0];e instanceof Zn?i[0]=new Zn(t+e.length):i.unshift(new Zn(t-1),null)}return Yn.of(i)}decomposeLeft(t,e){e.push(new Zn(t-1),null)}decomposeRight(t,e){e.push(null,new Zn(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let r=e+this.length;if(n&&n.from<=e+this.length&&n.more){let i=[],s=Math.max(e,n.from),o=-1;for(n.from>e&&i.push(new Zn(n.from-e-1).updateHeight(t,e));s<=r&&n.more;){let e=t.doc.lineAt(s).length;i.length&&i.push(null);let r=n.heights[n.index++];-1==o?o=r:Math.abs(r-o)>=.001&&(o=-2);let l=new Qn(e,r);l.outdated=!1,i.push(l),s+=e+1}s<=r&&i.push(null,new Zn(r-s).updateHeight(t,s));let l=Yn.of(i);return(o<0||Math.abs(l.height-this.height)>=.001||Math.abs(o-this.heightMetrics(t,e).perLine)>=.001)&&(t.heightChanged=!0),l}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class tr extends Yn{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,n){let r=i+this.left.height;return to))return h;let a=e==Jn.ByPosNoHeight?Jn.ByPosNoHeight:Jn.ByPos;return l?h.join(this.right.lineAt(o,a,i,s,o)):this.left.lineAt(o,a,i,n,r).join(h)}forEachLine(t,e,i,n,r,s){let o=n+this.left.height,l=r+this.left.length+this.break;if(this.break)t=l&&this.right.forEachLine(t,e,i,o,l,s);else{let h=this.lineAt(l,Jn.ByPos,i,n,r);t=t&&h.from<=e&&s(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,o,l,s)}}replace(t,e,i){let n=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let r=[];t>0&&this.decomposeLeft(t,r);let s=r.length;for(let t of i)r.push(t);if(t>0&&er(r,s-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t2*e.size||e.size>2*t.size?Yn.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:r,right:s}=this,o=e+r.length+this.break,l=null;return n&&n.from<=e+r.length&&n.more?l=r=r.updateHeight(t,e,i,n):r.updateHeight(t,e,i),n&&n.from<=o+s.length&&n.more?l=s=s.updateHeight(t,o,i,n):s.updateHeight(t,o,i),l?this.balanced(r,s):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function er(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Zn&&(n=t[e+1])instanceof Zn&&t.splice(e-1,3,new Zn(i.length+1+n.length))}class ir{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof Qn?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new Qn(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=5)&&this.addLineDeco(n,r,s)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new Qn(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new Zn(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof Qn)return t;let e=new Qn(0,-1);return this.nodes.push(e),e}addBlock(t){var e;this.enterLine();let i=null===(e=t.deco)||void 0===e?void 0:e.type;i!=Qe.WidgetAfter||this.isCovered||this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,i!=Qe.WidgetBefore&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof Qn||this.isCovered?(this.writtenToi.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=n.overflow){let n=i.getBoundingClientRect();s=Math.max(s,n.left),o=Math.min(o,n.right),l=Math.max(l,n.top),h=e==t.parentNode?n.bottom:Math.min(h,n.bottom)}e="absolute"==n.position||"fixed"==n.position?i.offsetParent:i.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:s-i.left,right:Math.max(s,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,h)-(i.top+e)}}function sr(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class or{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i"function"!=typeof t&&"cm-lineWrapping"==t.class);this.heightOracle=new Kn(e),this.stateDeco=t.facet(Ti).filter(t=>"function"!=typeof t),this.heightMap=Yn.empty().applyChanges(this.stateDeco,n.empty,this.heightOracle.setDoc(t.doc),[new Ii(0,0,0,t.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ze.set(this.lineGaps.map(t=>t.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some(({from:t,to:e})=>n>=t&&n<=e)){let{from:e,to:i}=this.lineBlockAt(n);t.push(new ar(e,i))}}this.viewports=t.sort((t,e)=>t.from-e.from),this.scaler=this.heightMap.height<=7e6?dr:new pr(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(1==this.scaler.scale?t:gr(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Ti).filter(t=>"function"!=typeof t);let n=t.changedRanges,r=Ii.extendWithRanges(n,function(t,e,i){let n=new nr;return Bt.compare(t,e,i,n,0),n.changes}(i,this.stateDeco,t?t.changes:M.empty(this.state.doc.length))),s=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=s&&(t.flags|=2),o?(this.scrollAnchorPos=t.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let l=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,e));let h=!t.changes.empty||2&t.flags||l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,this.updateForViewport(),h&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(wi)&&(this.mustEnforceCursorAssoc=!0)}measure(t){let e=t.contentDOM,i=window.getComputedStyle(e),r=this.heightOracle,s=i.whiteSpace;this.defaultTextDirection="rtl"==i.direction?Wi.RTL:Wi.LTR;let o=this.heightOracle.mustRefreshForWrapping(s),l=e.getBoundingClientRect(),h=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let a=0,c=0;if(l.width&&l.height){let t=l.width/e.offsetWidth,i=l.height/e.offsetHeight;t>.995&&t<1.005&&(t=1),i>.995&&i<1.005&&(i=1),this.scaleX==t&&this.scaleY==i||(this.scaleX=t,this.scaleY=i,a|=8,o=h=!0)}let u=(parseInt(i.paddingTop)||0)*this.scaleY,f=(parseInt(i.paddingBottom)||0)*this.scaleY;this.paddingTop==u&&this.paddingBottom==f||(this.paddingTop=u,this.paddingBottom=f,a|=10),this.editorWidth!=t.scrollDOM.clientWidth&&(r.lineWrapping&&(h=!0),this.editorWidth=t.scrollDOM.clientWidth,a|=8);let d=t.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=be(t.scrollDOM);let p=(this.printing?sr:rr)(e,this.paddingTop),g=p.top-this.pixelViewport.top,m=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let v=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(v!=this.inView&&(this.inView=v,v&&(h=!0)),!this.inView&&!this.scrollTarget)return 0;let w=l.width;if(this.contentDOMWidth==w&&this.editorHeight==t.scrollDOM.clientHeight||(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,a|=8),h){let e=t.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(e)&&(o=!0),o||r.lineWrapping&&Math.abs(w-this.contentDOMWidth)>r.charWidth){let{lineHeight:i,charWidth:n,textHeight:l}=t.docView.measureTextSize();o=i>0&&r.refresh(s,i,n,l,w/n,e),o&&(t.docView.minWidth=0,a|=8)}g>0&&m>0?c=Math.max(g,m):g<0&&m<0&&(c=Math.min(g,m)),r.heightChanged=!1;for(let i of this.viewports){let s=i.from==this.viewport.from?e:t.docView.measureVisibleLineHeights(i);this.heightMap=(o?Yn.empty().applyChanges(this.stateDeco,n.empty,this.heightOracle,[new Ii(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new Un(i.from,s))}r.heightChanged&&(a|=2)}let y=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return y&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&a||y)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),a|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),a}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,r=this.heightOracle,{visibleTop:s,visibleBottom:o}=this,l=new ar(n.lineAt(s-1e3*i,Jn.ByHeight,r,0,0).from,n.lineAt(o+1e3*(1-i),Jn.ByHeight,r,0,0).to);if(e){let{head:t}=e.range;if(tl.to){let i,s=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),o=n.lineAt(t,Jn.ByPos,r,0,0);i="center"==e.y?(o.top+o.bottom)/2-s/2:"start"==e.y||"nearest"==e.y&&t=o+Math.max(10,Math.min(i,250)))&&n>s-2e3&&r>1,s=n<<1;if(this.defaultTextDirection!=Wi.LTR&&!i)return[];let o=[],l=(n,s,h,a)=>{if(s-nn&&tt.from>=h.from&&t.to<=h.to&&Math.abs(t.from-n)t.frome));if(!f){if(st.from<=s&&t.to>=s)){let t=e.moveToLineBoundary(P.cursor(s),!1,!0).head;t>n&&(s=t)}f=new or(n,s,this.gapSize(h,n,s,a))}o.push(f)};for(let t of this.viewportLines){if(t.lengtht.from&&l(t.from,r,t,e),ot.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];Bt.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some((t,i)=>t.from!=e[i].from||t.to!=e[i].to);return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||gr(this.heightMap.lineAt(t,Jn.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return gr(this.heightMap.lineAt(this.scaler.fromDOM(t),Jn.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return gr(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class ar{constructor(t,e){this.from=t,this.to=e}}function cr(t,e,i){let n=[],r=t,s=0;return Bt.spans(i,t,e,{span(){},point(t,e){t>r&&(n.push({from:r,to:t}),s+=t-r),r=e}},20),r=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:r}=e[t],s=r-i;if(n<=s)return i+n;n-=s}}function fr(t,e){let i=0;for(let{from:n,to:r}of t.ranges){if(e<=r){i+=e-n;break}i+=r-n}return i/t.total}const dr={toDOM:t=>t,fromDOM:t=>t,scale:1};class pr{constructor(t,e,i){let n=0,r=0,s=0;this.viewports=i.map(({from:i,to:r})=>{let s=e.lineAt(i,Jn.ByPos,t,0,0).top,o=e.lineAt(r,Jn.ByPos,t,0,0).bottom;return n+=o-s,{from:i,to:r,top:s,bottom:o,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(e.height-n);for(let t of this.viewports)t.domTop=s+(t.top-r)*this.scale,s=t.domBottom=t.domTop+(t.bottom-t.top),r=t.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let r=egr(t,e)):t._content)}const mr=I.define({combine:t=>t.join(" ")}),vr=I.define({combine:t=>t.indexOf(!0)>-1}),wr=Gt.newName(),yr=Gt.newName(),br=Gt.newName(),xr={"&light":"."+yr,"&dark":"."+br};function kr(t,e,i){return new Gt(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,e=>{if("&"==e)return t;if(!i||!i[e])throw new RangeError("Unsupported selector: "+e);return i[e]}):t+" "+e})}const Sr=kr("."+wr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:'url(\'data:image/svg+xml,\')',backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},xr);class Ar{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(Mt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+="￿"}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let t=this.text.length;this.readNode(n);let r=n.nextSibling;if(r==e)break;let s=Se.get(n),o=Se.get(r);(s&&o?s.breakAfter:(s?s.breakAfter:Mr(n))||Mr(r)&&("BR"!=n.nodeName||n.cmIgnore)&&this.text.length>t)&&this.lineBreak(),n=r}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let r,s=-1,o=1;if(this.lineSeparator?(s=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(r=n.exec(e))&&(s=r.index,o=r[0].length),this.append(e.slice(i,s<0?e.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=o-1);i=s+o}}readNode(t){if(t.cmIgnore)return;let e=Se.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+Math.min(e,i.offset))}}function Mr(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class Cr{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class Or{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let{impreciseHead:r,impreciseAnchor:s}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=r||s?[]:function(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}=t.observer.selectionRange;i&&(e.push(new Cr(i,n)),r==i&&s==n||e.push(new Cr(r,s)));return e}(t),i=new Ar(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=function(t,e){if(0==t.length)return null;let i=t[0].pos,n=2==t.length?t[1].pos:i;return i>-1&&n>-1?P.single(i+e,n+e):null}(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=r&&r.node==e.focusNode&&r.offset==e.focusOffset||!re(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),n=s&&s.node==e.anchorNode&&s.offset==e.anchorOffset||!re(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=P.single(n,i)}}}function Dr(t,e){let i,{newSel:r}=e,s=t.state.selection.main,o=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:r,to:l}=e.bounds,h=s.from,a=null;(8===o||Ve.android&&e.text.length0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if("end"==n){let t=Math.max(0,s-Math.min(o,l));i-=o+t-s}if(o=o?s-i:0,l=s+(l-o),o=s}else if(l=l?s-i:0,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}(t.state.doc.sliceString(r,l,"￿"),e.text,h-r,a);c&&(Ve.chrome&&13==o&&c.toB==c.from+2&&"￿￿"==e.text.slice(c.from,c.toB)&&c.toB--,i={from:r+c.from,to:r+c.toA,insert:n.of(e.text.slice(c.from,c.toB).split("￿"))})}else r&&(!t.hasFocus&&t.state.facet(ki)||r.main.eq(s))&&(r=null);if(!i&&!r)return!1;if(!i&&e.typeOver&&!s.empty&&r&&r.main.empty?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,s.to)}:i&&i.from>=s.from&&i.to<=s.to&&(i.from!=s.from||i.to!=s.to)&&s.to-s.from-(i.to-i.from)<=4?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,i.from).append(i.insert).append(t.state.doc.slice(i.to,s.to))}:(Ve.mac||Ve.android)&&i&&i.from==i.to&&i.from==s.head-1&&/^\. ?$/.test(i.insert.toString())&&"off"==t.contentDOM.getAttribute("autocorrect")?(r&&2==i.insert.length&&(r=P.single(r.main.anchor-1,r.main.head-1)),i={from:s.from,to:s.to,insert:n.of([" "])}):Ve.chrome&&i&&i.from==i.to&&i.from==s.head&&"\n "==i.insert.toString()&&t.lineWrapping&&(r&&(r=P.single(r.main.anchor-1,r.main.head-1)),i={from:s.from,to:s.to,insert:n.of([" "])}),i){if(Ve.ios&&t.inputState.flushIOSKey(t))return!0;if(Ve.android&&(i.from==s.from&&i.to==s.to&&1==i.insert.length&&2==i.insert.lines&&we(t.contentDOM,"Enter",13)||(i.from==s.from-1&&i.to==s.to&&0==i.insert.length||8==o&&i.insert.lengths.head)&&we(t.contentDOM,"Backspace",8)||i.from==s.from&&i.to==s.to+1&&0==i.insert.length&&we(t.contentDOM,"Delete",46)))return!0;let e,n=i.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let l=()=>e||(e=function(t,e,i){let n,r=t.state,s=r.selection.main;if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let i=s.frome.to?r.sliceDoc(e.to,s.to):"";n=r.replaceSelection(t.state.toText(i+e.insert.sliceString(0,void 0,t.state.lineBreak)+o))}else{let o=r.changes(e),l=i&&i.main.to<=o.newLength?i.main:void 0;if(r.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=s.to&&e.to>=s.to-10){let h,a=t.state.sliceDoc(e.from,e.to),c=i&&rn(t,i.main.head);if(c){let t=e.insert.length-(e.to-e.from);h={from:c.from,to:c.to-t}}else h=t.state.doc.lineAt(s.head);let u=s.to-e.to,f=s.to-s.from;n=r.changeByRange(i=>{if(i.from==s.from&&i.to==s.to)return{changes:o,range:l||i.map(o)};let n=i.to-u,c=n-a.length;if(i.to-i.from!=f||t.state.sliceDoc(c,n)!=a||i.to>=h.from&&i.from<=h.to)return{range:i};let d=r.changes({from:c,to:n,insert:e.insert}),p=i.to-s.to;return{changes:d,range:l?P.range(Math.max(0,l.anchor+p),Math.max(0,l.head+p)):i.map(d)}})}else n={changes:o,selection:l&&r.selection.replaceRange(l)}}let o="input.type";(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,o+=".compose",t.inputState.compositionFirstChange&&(o+=".start",t.inputState.compositionFirstChange=!1));return r.update(n,{userEvent:o,scrollIntoView:!0})}(t,i,r));return t.state.facet(gi).some(e=>e(t,i.from,i.to,n,l))||t.dispatch(l()),!0}if(r&&!r.main.eq(s)){let e=!1,i="select";return t.inputState.lastSelectionTime>Date.now()-50&&("select"==t.inputState.lastSelectionOrigin&&(e=!0),i=t.inputState.lastSelectionOrigin),t.dispatch({selection:r,scrollIntoView:e,userEvent:i}),!0}return!1}const Tr={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Er=Ve.ie&&Ve.ie_version<=11;class Br{constructor(t){this.view=t,this.active=!1,this.selectionRange=new de,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.resizeContent=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let t of e)this.queue.push(t);(Ve.ie&&Ve.ie_version<=11||Ve.ios&&t.composing)&&e.some(t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length)?this.flushSoon():this.flush()}),Er&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),"function"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver(()=>{var t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)this.view.requestMeasure()),this.resizeContent.observe(t.contentDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(ki)?i.root.activeElement!=this.dom:!se(i.dom,n))return;let r=n.anchorNode&&i.docView.nearest(n.anchorNode);r&&r.ignoreEvent(t)?e||(this.selectionChanged=!1):(Ve.ie&&Ve.ie_version<=11||Ve.android&&Ve.chrome)&&!i.state.selection.main.empty&&n.focusNode&&le(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=Ve.safari&&11==t.root.nodeType&&function(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}(this.dom.ownerDocument)==this.dom&&function(t){let e=null;function i(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),!e)return null;let n=e.startContainer,r=e.startOffset,s=e.endContainer,o=e.endOffset,l=t.docView.domAtPos(t.state.selection.main.anchor);le(l.node,l.offset,s,o)&&([n,r,s,o]=[s,o,n,r]);return{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:o}}(this.view)||ne(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=se(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let t=this.delayedAndroidKey;if(t){this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=t.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&t.force&&we(this.dom,t.key,t.keyCode)}};this.flushingAndroidKey=this.view.win.requestAnimationFrame(t)}this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let r of t){let t=this.readMutation(r);t&&(t.typeOver&&(n=!0),-1==e?({from:e,to:i}=t):(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&se(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new Or(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return!1;let i=this.view.state,n=Dr(this.view,e);return this.view.state==i&&this.view.update([]),n}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.flags|=4),"childList"==t.type){let i=Rr(e,t.previousSibling||t.target.previousSibling,-1),n=Rr(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i,n;this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resizeScroll)||void 0===i||i.disconnect(),null===(n=this.resizeContent)||void 0===n||n.disconnect();for(let t of this.scrollTargets)t.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function Rr(t,e,i){for(;e;){let n=Se.get(e);if(n&&n.parent==t)return n;let r=e.parentNode;e=r!=t.dom?r:i>0?e.nextSibling:e.previousSibling}return null}class Pr{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: fixed; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM);let{dispatch:e}=t;this.dispatchTransactions=t.dispatchTransactions||e&&(t=>t.forEach(t=>e(t,this)))||(t=>this.update(t)),this.dispatch=this.dispatch.bind(this),this._root=t.root||function(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}(t.parent)||document,this.viewState=new hr(t.state||Mt.create(t)),this.plugins=this.state.facet(Ai).map(t=>new Ci(t));for(let t of this.plugins)t.update(this);this.observer=new Br(this),this.inputState=new wn(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new en(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),t.parent&&t.parent.appendChild(this.dom)}dispatch(...t){let e=1==t.length&&t[0]instanceof pt?t:1==t.length&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e,i=!1,n=!1,r=this.state;for(let e of t){if(e.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=e.state}if(this.destroyed)return void(this.viewState.state=r);let s=this.hasFocus,o=0,l=null;t.some(t=>t.annotation(zn))?(this.inputState.notifiedFocused=s,o=1):s!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=s,l=_n(r,s),l||(o=1));let h=this.observer.delayedAndroidKey,a=null;if(h?(this.observer.clearDelayedAndroidKey(),a=this.observer.readChange(),(a&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(a=null)):this.observer.clear(),r.facet(Mt.phrases)!=this.state.facet(Mt.phrases))return this.setState(r);e=Hi.create(this,r,t),e.flags|=o;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let e of t){if(c&&(c=c.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;c=new yi(t.empty?t:P.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(bi)&&(c=t.value)}this.viewState.update(e,c),this.bidiCache=Ir.update(this.bidiCache,e.changes),e.empty||(this.updatePlugins(e),this.inputState.update(e)),i=this.docView.update(e),this.state.facet(Li)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(i,t.some(t=>t.isUserEvent("select.pointer")))}finally{this.updateState=0}if(e.startState.facet(mr)!=e.state.facet(mr)&&(this.viewState.mustMeasureContent=!0),(i||n||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!e.empty)for(let t of this.state.facet(pi))t(e);(l||a)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),a&&!Dr(this,a)&&h.force&&we(this.contentDOM,h.key,h.keyCode)})}setState(t){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=t);this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);this.viewState=new hr(t),this.plugins=t.facet(Ai).map(t=>new Ci(t)),this.pluginMap.clear();for(let t of this.plugins)t.update(this);this.docView=new en(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ai),i=t.state.facet(Ai);if(e!=i){let n=[];for(let r of i){let i=e.indexOf(r);if(i<0)n.push(new Ci(r));else{let e=this.plugins[i];e.mustUpdate=t,n.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=n,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.scrollDOM,n=i.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:s}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(s=-1),this.viewState.scrollAnchorHeight=-1;try{for(let t=0;;t++){if(s<0)if(be(i))r=-1,s=this.viewState.heightMap.height;else{let t=this.viewState.scrollAnchorAt(n);r=t.from,s=t.top}this.updateState=1;let o=this.viewState.measure(this);if(!o&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let l=[];4&o||([this.measureRequests,l]=[l,this.measureRequests]);let h=l.map(t=>{try{return t.read(this)}catch(t){return xi(this.state,t),Lr}}),a=Hi.create(this,this.state,[]),c=!1;a.flags|=o,e?e.flags|=o:e=a,this.updateState=2,a.empty||(this.updatePlugins(a),this.inputState.update(a),this.updateAttrs(),c=this.docView.update(a));for(let t=0;t1||t<-1){n+=t,i.scrollTop=n/this.scaleY,s=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(pi))t(e)}get themeClasses(){return wr+" "+(this.state.facet(vr)?br:yr)+" "+this.state.facet(mr)}updateAttrs(){let t=Hr(this,Oi,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(ki)?"true":"false",class:"cm-content",style:`${Ve.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Hr(this,Di,e);let i=this.observer.ignore(()=>{let i=Je(this.contentDOM,this.contentAttrs,e),n=Je(this.dom,this.editorAttrs,t);return i||n});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)if(t.is(Pr.announce)){e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(Li);let t=this.state.facet(Pr.cspNonce);Gt.mount(this.root,this.styleModules.concat(Sr).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(null!=t.key)for(let e=0;ee.spec==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return vn(this,t,gn(this,t,e,i))}moveByGroup(t,e){return vn(this,t,gn(this,t,e,e=>function(t,e,i){let n=t.state.charCategorizer(e),r=n(i);return t=>{let e=n(t);return r==xt.Space&&(r=e),r==e}}(this,t.head,e)))}moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let r=pn(t,e.head),s=n&&r.type==Qe.Text&&(t.lineWrapping||r.widgetLineBreaks)?t.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head):null;if(s){let e=t.dom.getBoundingClientRect(),n=t.textDirectionAt(r.from),o=t.posAtCoords({x:i==(n==Wi.LTR)?e.right-1:e.left+1,y:(s.top+s.bottom)/2});if(null!=o)return P.cursor(o,i?-1:1)}return P.cursor(i?r.to:r.from,i?-1:1)}(this,t,e,i)}moveVertically(t,e,i){return vn(this,t,function(t,e,i,n){let r=e.head,s=i?1:-1;if(r==(i?t.state.doc.length:0))return P.cursor(r,e.assoc);let o,l=e.goalColumn,h=t.contentDOM.getBoundingClientRect(),a=t.coordsAtPos(r),c=t.documentTop;if(a)null==l&&(l=a.left-h.left),o=s<0?a.top:a.bottom;else{let e=t.viewState.lineBlockAt(r);null==l&&(l=Math.min(h.right-h.left,t.defaultCharacterWidth*(r-e.from))),o=(s<0?e.top:e.bottom)+c}let u=h.left+l,f=null!=n?n:t.viewState.heightOracle.textHeight>>1;for(let i=0;;i+=10){let n=o+(f+i)*s,a=fn(t,{x:u,y:n},!1,s);if(nh.bottom||(s<0?ar))return P.cursor(a,e.assoc,void 0,l)}}(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),fn(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),r=this.bidiSpans(n);return ue(i,r[Ui.find(r,t-n.from,-1,e)].dir==Wi.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(vi)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Nr)return Qi(t.length);let e,i=this.textDirectionAt(t.from);for(let n of this.bidiCache)if(n.from==t.from&&n.dir==i&&(n.fresh||Gi(n.isolates,e=Ri(this,t.from,t.to))))return n.order;e||(e=Ri(this,t.from,t.to));let n=Xi(t.text,i,e);return this.bidiCache.push(new Ir(t.from,t.to,i,e,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||Ve.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{me(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return bi.of(new yi("number"==typeof t?P.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}static domEventHandlers(t){return Mi.define(()=>({}),{eventHandlers:t})}static theme(t,e){let i=Gt.newName(),n=[mr.of(i),Li.of(kr("."+i,t))];return e&&e.dark&&n.push(vr.of(!0)),n}static baseTheme(t){return Y.lowest(Li.of(kr("."+wr,t,xr)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&Se.get(i)||Se.get(t);return(null===(e=null==n?void 0:n.rootView)||void 0===e?void 0:e.view)||null}}Pr.styleModule=Li,Pr.inputHandler=gi,Pr.focusChangeEffect=mi,Pr.perLineTextDirection=vi,Pr.exceptionSink=di,Pr.updateListener=pi,Pr.editable=ki,Pr.mouseSelectionStyle=fi,Pr.dragMovesSelection=ui,Pr.clickAddsSelectionRange=ci,Pr.decorations=Ti,Pr.atomicRanges=Ei,Pr.bidiIsolatedRanges=Bi,Pr.scrollMargins=Pi,Pr.darkTheme=vr,Pr.cspNonce=I.define({combine:t=>t.length?t[0]:""}),Pr.contentAttributes=Di,Pr.editorAttributes=Oi,Pr.lineWrapping=Pr.contentAttributes.of({class:"cm-lineWrapping"}),Pr.announce=dt.define();const Nr=4096,Lr={};class Ir{constructor(t,e,i,n,r,s){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=r,this.order=s}static update(t,e){if(e.empty&&!t.some(t=>t.fresh))return t;let i=[],n=t.length?t[t.length-1].dir:Wi.LTR;for(let r=Math.max(0,t.length-10);r=0;r--){let e=n[r],s="function"==typeof e?e(t):e;s&&Ke(s,i)}return i}const Wr=Ve.mac?"mac":Ve.windows?"win":Ve.linux?"linux":"key";function Vr(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}const Fr=Y.default(Pr.domEventHandlers({keydown:(t,e)=>$r(qr(e.state),t,e,"editor")})),zr=I.define({enables:Fr}),_r=new WeakMap;function qr(t){let e=t.facet(zr),i=_r.get(e);return i||_r.set(e,i=function(t,e=Wr){let i=Object.create(null),n=Object.create(null),r=(t,e)=>{let i=n[t];if(null==i)n[t]=e;else if(i!=e)throw new Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},s=(t,n,s,o,l)=>{var h,a;let c=i[t]||(i[t]=Object.create(null)),u=n.split(/ (?!$)/).map(t=>function(t,e){const i=t.split(/-(?!$)/);let n,r,s,o,l=i[i.length-1];"Space"==l&&(l=" ");for(let t=0;t{let n=jr={view:e,prefix:i,scope:t};return setTimeout(()=>{jr==n&&(jr=null)},4e3),!0}]})}let f=u.join(" ");r(f,!1);let d=c[f]||(c[f]={preventDefault:!1,stopPropagation:!1,run:(null===(a=null===(h=c._any)||void 0===h?void 0:h.run)||void 0===a?void 0:a.slice())||[]});s&&d.run.push(s),o&&(d.preventDefault=!0),l&&(d.stopPropagation=!0)};for(let n of t){let t=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));t._any||(t._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let e in t)t[e].run.push(n.any)}let r=n[e]||n.key;if(r)for(let e of t)s(e,r,n.run,n.preventDefault,n.stopPropagation),n.shift&&s(e,"Shift-"+r,n.shift,n.preventDefault,n.stopPropagation)}return i}(e.reduce((t,e)=>t.concat(e),[]))),i}let jr=null;function $r(t,e,i,n){let r=function(t){var e=!(Zt&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||te&&t.shiftKey&&t.key&&1==t.key.length||"Unidentified"==t.key)&&t.key||(t.shiftKey?Qt:Xt)[t.keyCode]||t.key||"Unidentified";return"Esc"==e&&(e="Escape"),"Del"==e&&(e="Delete"),"Left"==e&&(e="ArrowLeft"),"Up"==e&&(e="ArrowUp"),"Right"==e&&(e="ArrowRight"),"Down"==e&&(e="ArrowDown"),e}(e),s=x(b(r,0))==r.length&&" "!=r,o="",l=!1,h=!1,a=!1;jr&&jr.view==i&&jr.scope==n&&(o=jr.prefix+" ",xn.indexOf(e.keyCode)<0&&(h=!0,jr=null));let c,u,f=new Set,d=t=>{if(t){for(let n of t.run)if(!f.has(n)&&(f.add(n),n(i,e)))return t.stopPropagation&&(a=!0),!0;t.preventDefault&&(t.stopPropagation&&(a=!0),h=!0)}return!1},p=t[n];return p&&(d(p[o+Vr(r,e,!s)])?l=!0:s&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Ve.windows&&e.ctrlKey&&e.altKey)&&(c=Xt[e.keyCode])&&c!=r?(d(p[o+Vr(c,e,!0)])||e.shiftKey&&(u=Qt[e.keyCode])!=r&&u!=c&&d(p[o+Vr(u,e,!1)]))&&(l=!0):s&&e.shiftKey&&d(p[o+Vr(r,e,!0)])&&(l=!0),!l&&d(p._any)&&(l=!0)),h&&(l=!0),l&&a&&e.stopPropagation(),l}const Kr=!Ve.ios;const Ur={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};Kr&&(Ur[".cm-line"].caretColor="transparent !important");const Gr=I.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function Jr(t,e){let i=t.plugin(Yr),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const Yr=Mi.fromClass(class{constructor(t){this.input=t.state.facet(Zr),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(e=>e(t));let e=t.state.facet(Gr);this.top=new Xr(t,!0,e.topContainer),this.bottom=new Xr(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(t){let e=t.state.facet(Gr);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Xr(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Xr(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Zr);if(i!=this.input){let e=i.filter(t=>t),n=[],r=[],s=[],o=[];for(let i of e){let e,l=this.specs.indexOf(i);l<0?(e=i(t.view),o.push(e)):(e=this.panels[l],e.update&&e.update(t)),n.push(e),(e.top?r:s).push(e)}this.specs=e,this.panels=n,this.top.sync(r),this.bottom.sync(s);for(let t of o)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}else for(let e of this.panels)e.update&&e.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Pr.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});class Xr{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(0==this.panels.length)return void(this.dom&&(this.dom.remove(),this.dom=void 0));if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=Qr(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=Qr(t)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(this.container&&this.classes!=this.view.themeClasses){for(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}}function Qr(t){let e=t.nextSibling;return t.remove(),e}const Zr=I.define({enables:Yr});class ts extends Ot{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}ts.prototype.elementClass="",ts.prototype.toDOM=void 0,ts.prototype.mapMode=S.TrackBefore,ts.prototype.startSide=ts.prototype.endSide=-1,ts.prototype.point=!0;const es=I.define(),is=I.define();const ns=I.define({combine:t=>t.some(t=>t)});function rs(t){let e=[ss];return t&&!1===t.fixed&&e.push(ns.of(!0)),e}const ss=Mi.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(is).map(e=>new as(t,e));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!t.state.facet(ns),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<.8*(i.to-i.from))}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(ns)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Bt.iter(this.view.state.facet(es),this.view.viewport.from),n=[],r=this.gutters.map(t=>new hs(t,this.view.viewport,-this.view.documentPadding.top));for(let t of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(t.type)){let e=!0;for(let s of t.type)if(s.type==Qe.Text&&e){ls(i,n,s.from);for(let t of r)t.line(this.view,s,n);e=!1}else if(s.widget)for(let t of r)t.widget(this.view,s)}else if(t.type==Qe.Text){ls(i,n,t.from);for(let e of r)e.line(this.view,t,n)}else if(t.widget)for(let e of r)e.widget(this.view,t);for(let t of r)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(is),i=t.state.facet(is),n=t.docChanged||t.heightChanged||t.viewportChanged||!Bt.eq(t.startState.facet(es),t.state.facet(es),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(n=!0);else{n=!0;let r=[];for(let n of i){let i=e.indexOf(n);i<0?r.push(new as(this.view,n)):(this.gutters[i].update(t),r.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),r.indexOf(t)<0&&t.destroy();for(let t of r)this.dom.appendChild(t.dom);this.gutters=r}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Pr.scrollMargins.of(e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==Wi.LTR?{left:i.dom.offsetWidth*e.scaleX}:{right:i.dom.offsetWidth*e.scaleX}:null})});function os(t){return Array.isArray(t)?t:[t]}function ls(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class hs{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=Bt.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,r=e.top-this.height;if(this.i==n.elements.length){let s=new cs(t,e.height,r,i);n.elements.push(s),n.dom.appendChild(s.dom)}else n.elements[this.i].update(t,e.height,r,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];ls(this.cursor,n,e.from),i.length&&(n=n.concat(i));let r=this.gutter.config.lineMarker(t,e,n);r&&n.unshift(r);let s=this.gutter;(0!=n.length||s.config.renderEmptyElements)&&this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e);i&&this.addElement(t,e,[i])}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class as{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,n=>{let r,s=n.target;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let t=s.getBoundingClientRect();r=(t.top+t.bottom)/2}else r=n.clientY;let o=t.lineBlockAtHeight(r-t.documentTop);e.domEventHandlers[i](t,o,n)&&n.preventDefault()});this.markers=os(e.markers(t)),e.initialSpacer&&(this.spacer=new cs(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=os(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!Bt.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}}class cs{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e/t.scaleY+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i/t.scaleY+"px":""),function(t,e){if(t.length!=e.length)return!1;for(let i=0;iCt(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[t],r=e[t];i[t]=n?(t,e,i)=>n(t,e,i)||r(t,e,i):r}return i}})});class ds extends ts{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function ps(t,e){return t.state.facet(fs).formatNumber(e,t.state)}const gs=is.compute([fs],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(us),lineMarker:(t,e,i)=>i.some(t=>t.toDOM)?null:new ds(ps(t,t.state.doc.lineAt(e.from).number)),widgetMarker:()=>null,lineMarkerChange:t=>t.startState.facet(fs)!=t.state.facet(fs),initialSpacer:t=>new ds(ps(t,ms(t.state.doc.lines))),updateSpacer(t,e){let i=ps(e.view,ms(e.view.state.doc.lines));return i==t.number?t:new ds(i)},domEventHandlers:t.facet(fs).domEventHandlers}));function ms(t){let e=9;for(;e0&&void 0!==arguments[0]?arguments[0]:this.defaultExtensions;this.state=Mt.create({doc:this.$textarea.textSelection("getContents"),extensions:e}),this.view=new Pr({state:this.state,parent:this.$textarea.parent()[0]}),this.$textarea.hide(),this.$textarea[0].form&&this.$textarea[0].form.addEventListener("submit",(function(){t.$textarea.val(t.view.state.doc.toString())})),$(this.view.dom).textSelection("register",this.cmTextSelection),this.$textarea.textSelection("register",this.cmTextSelection),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}},{key:"logUsage",value:function(t){var e=Object.assign({session_token:mw.user.sessionId(),user_id:mw.user.getId()},t),i=mw.config.get("wgUserEditCountBucket");null!==i&&(e.user_edit_count_bucket=i),mw.track("event.CodeMirrorUsage",e)}},{key:"setCodeMirrorPreference",value:function(t){mw.user.isNamed()&&((new mw.Api).saveOption("usecodemirror",t?1:0),mw.user.options.set("usecodemirror",t?1:0))}},{key:"cmTextSelection",get:function(){var t=this,e=$(this.view.dom);return{getContents:function(){return t.view.state.doc.toString()},setContents:function(i){return t.view.dispatch({changes:{from:0,to:t.view.state.doc.length,insert:i}}),e},getSelection:function(){return t.view.state.sliceDoc(t.view.state.selection.main.from,t.view.state.selection.main.to)},setSelection:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{start:0,end:0};return t.view.dispatch({selection:{anchor:i.start,head:i.end||i.start}}),t.view.focus(),e},replaceSelection:function(i){return t.view.dispatch(t.view.state.replaceSelection(i)),e},getCaretPosition:function(e){return e.startAndEnd?[t.view.state.selection.main.from,t.view.state.selection.main.to]:t.view.state.selection.main.head},scrollToCaretPosition:function(){return t.view.scrollIntoView(t.view.state.selection.main.head),e}}}}])&&ws(e.prototype,i),n&&ws(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();const bs=1024;let xs=0;class ks{constructor(t,e){this.from=t,this.to=e}}class Ss{constructor(t={}){this.id=xs++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=Cs.match(t)),e=>{let i=t(e);return void 0===i?null:[this,i]}}}Ss.closedBy=new Ss({deserialize:t=>t.split(" ")}),Ss.openedBy=new Ss({deserialize:t=>t.split(" ")}),Ss.group=new Ss({deserialize:t=>t.split(" ")}),Ss.contextHash=new Ss({perNode:!0}),Ss.lookAhead=new Ss({perNode:!0}),Ss.mounted=new Ss({perNode:!0});class As{constructor(t,e,i){this.tree=t,this.overlay=e,this.parser=i}static get(t){return t&&t.props&&t.props[Ss.mounted.id]}}const Ms=Object.create(null);class Cs{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):Ms,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new Cs(t.name||"",e,t.id,i);if(t.props)for(let i of t.props)if(Array.isArray(i)||(i=i(n)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[i[0].id]=i[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(Ss.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return t=>{for(let i=t.prop(Ss.group),n=-1;n<(i?i.length:0);n++){let r=e[n<0?t.name:i[n]];if(r)return r}}}}Cs.none=new Cs("",Object.create(null),0,8);const Os=new WeakMap,Ds=new WeakMap;var Ts;!function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"}(Ts||(Ts={}));class Es{constructor(t,e,i,n,r){if(this.type=t,this.children=e,this.positions=i,this.length=n,this.props=null,r&&r.length){this.props=Object.create(null);for(let[t,e]of r)this.props["number"==typeof t?t:t.id]=e}}toString(){let t=As.get(this);if(t&&!t.overlay)return t.tree.toString();let e="";for(let t of this.children){let i=t.toString();i&&(e&&(e+=","),e+=i)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(e.length?"("+e+")":""):e}cursor(t=0){return new qs(this.topNode,t)}cursorAt(t,e=0,i=0){let n=Os.get(this)||this.topNode,r=new qs(n);return r.moveTo(t,e),Os.set(this,r._tree),r}get topNode(){return new Is(this,0,0,null)}resolve(t,e=0){let i=Ns(Os.get(this)||this.topNode,t,e,!1);return Os.set(this,i),i}resolveInner(t,e=0){let i=Ns(Ds.get(this)||this.topNode,t,e,!0);return Ds.set(this,i),i}resolveStack(t,e=0){return function(t,e,i){let n=t.resolveInner(e,i),r=null;for(let t=n instanceof Is?n:n.context.parent;t;t=t.parent)if(t.index<0){let s=t.parent;(r||(r=[n])).push(s.resolve(e,i)),t=s}else{let s=As.get(t.tree);if(s&&s.overlay&&s.overlay[0].from<=e&&s.overlay[s.overlay.length-1].to>=e){let o=new Is(s.tree,s.overlay[0].from+t.from,0,null);(r||(r=[n])).push(Ns(o,e,i,!1))}}return r?zs(r):n}(this,t,e)}iterate(t){let{enter:e,leave:i,from:n=0,to:r=this.length}=t,s=t.mode||0,o=(s&Ts.IncludeAnonymous)>0;for(let t=this.cursor(s|Ts.IncludeAnonymous);;){let s=!1;if(t.from<=r&&t.to>=n&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;s=!0}for(;s&&i&&(o||!t.type.isAnonymous)&&i(t),!t.nextSibling();){if(!t.parent())return;s=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Us(Cs.none,this.children,this.positions,0,this.children.length,0,this.length,(t,e,i)=>new Es(this.type,t,e,i,this.propValues),t.makeTree||((t,e,i)=>new Es(Cs.none,t,e,i)))}static build(t){return function(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:r=bs,reused:s=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Bs(i,i.length):i,h=n.types,a=0,c=0;function u(t,e,i,g,m){let{id:v,start:w,end:y,size:b}=l,x=c;for(;b<0;){if(l.next(),-1==b){let e=s[v];return i.push(e),void g.push(w-t)}if(-3==b)return void(a=v);if(-4==b)return void(c=v);throw new RangeError("Unrecognized record size: "+b)}let k,S,A=h[v],M=w-t;if(y-w<=r&&(S=function(t,e){let i=l.fork(),n=0,s=0,h=0,a=i.end-r,c={size:0,start:0,skip:0};t:for(let r=i.pos-t;i.pos>r;){let t=i.size;if(i.id==e&&t>=0){c.size=n,c.start=s,c.skip=h,h+=4,n+=4,i.next();continue}let l=i.pos-t;if(t<0||l=o?4:0,f=i.start;for(i.next();i.pos>l;){if(i.size<0){if(-3!=i.size)break t;u+=4}else i.id>=o&&(u+=4);i.next()}s=f,n+=t,h+=u}(e<0||n==t)&&(c.size=n,c.start=s,c.skip=h);return c.size>4?c:void 0}(l.pos-e,m))){let e=new Uint16Array(S.size-S.skip),i=l.pos-S.size,r=e.length;for(;l.pos>i;)r=p(S.start,e,r);k=new Rs(e,y-S.start,n),M=S.start-t}else{let t=l.pos-b;l.next();let e=[],i=[],n=v>=o?v:-1,s=0,h=y;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=h-r&&(f(e,i,w,s,l.end,h,n,x),s=e.length,h=l.end),l.next()):u(w,t,e,i,n);if(n>=0&&s>0&&s-1&&s>0){let t=function(t){return(e,i,n)=>{let r,s,o=0,l=e.length-1;if(l>=0&&(r=e[l])instanceof Es){if(!l&&r.type==t&&r.length==n)return r;(s=r.prop(Ss.lookAhead))&&(o=i[l]+r.length+s)}return d(t,e,i,n,o)}}(A);k=Us(A,e,i,0,e.length,0,y-w,t,t)}else k=d(A,e,i,y-w,x-y)}i.push(k),g.push(M)}function f(t,e,i,r,s,o,l,h){let a=[],c=[];for(;t.length>r;)a.push(t.pop()),c.push(e.pop()+i-s);t.push(d(n.types[l],a,c,o-s,h-o)),e.push(s-i)}function d(t,e,i,n,r=0,s){if(a){let t=[Ss.contextHash,a];s=s?[t].concat(s):[t]}if(r>25){let t=[Ss.lookAhead,r];s=s?[t].concat(s):[t]}return new Es(t,e,i,n,s)}function p(t,e,i){let{id:n,start:r,end:s,size:h}=l;if(l.next(),h>=0&&n4){let n=l.pos-(h-4);for(;l.pos>n;)i=p(t,e,i)}e[--i]=o,e[--i]=s-t,e[--i]=r-t,e[--i]=n}else-3==h?a=n:-4==h&&(c=n);return i}let g=[],m=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,g,m,-1);let v=null!==(e=t.length)&&void 0!==e?e:g.length?m[0]+g[0].length:0;return new Es(h[t.topID],g.reverse(),m.reverse(),v)}(t)}}Es.empty=new Es(Cs.none,[],[],0);class Bs{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Bs(this.buffer,this.index)}}class Rs{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Cs.none}toString(){let t=[];for(let e=0;e0));l=s[l+3]);return o}slice(t,e,i){let n=this.buffer,r=new Uint16Array(e-t),s=0;for(let o=t,l=0;o=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Ns(t,e,i,n){for(var r;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?o.length:-1;t!=h;t+=e){let h=o[t],a=l[t]+s.from;if(Ps(n,i,a,a+h.length))if(h instanceof Rs){if(r&Ts.ExcludeBuffers)continue;let o=h.findChild(0,h.buffer.length,e,i-a,n);if(o>-1)return new Fs(new Vs(s,h,t,a),null,o)}else if(r&Ts.IncludeAnonymous||!h.type.isAnonymous||js(h)){let o;if(!(r&Ts.IgnoreMounts)&&(o=As.get(h))&&!o.overlay)return new Is(o.tree,a,t,s);let l=new Is(h,a,t,s);return r&Ts.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?h.children.length-1:0,e,i,n)}}if(r&Ts.IncludeAnonymous||!s.type.isAnonymous)return null;if(t=s.index>=0?s.index+e:e<0?-1:s._parent._tree.children.length,s=s._parent,!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,i=0){let n;if(!(i&Ts.IgnoreOverlays)&&(n=As.get(this._tree))&&n.overlay){let i=t-this.from;for(let{from:t,to:r}of n.overlay)if((e>0?t<=i:t=i:r>i))return new Is(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Hs(t,e,i,n){let r=t.cursor(),s=[];if(!r.firstChild())return s;if(null!=i)for(;!r.type.is(i);)if(!r.nextSibling())return s;for(;;){if(null!=n&&r.type.is(n))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return null==n?s:[]}}function Ws(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class Vs{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class Fs extends Ls{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new Fs(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,i=0){if(i&Ts.ExcludeBuffers)return null;let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new Fs(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new Fs(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new Fs(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,r=i.buffer[this.index+3];if(r>n){let s=i.buffer[this.index+1];t.push(i.slice(n,r,s)),e.push(0)}return new Es(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function zs(t){if(!t.length)return null;if(1==t.length)return t[0];let e=0,i=t[0];for(let n=1;ni.from||r.to0){if(this.index-1)for(let n=e+t,r=t<0?-1:i._tree.children.length;n!=r;n+=t){let t=i._tree.children[n];if(this.mode&Ts.IncludeAnonymous||t instanceof Rs||!t.type.isAnonymous||js(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let s=t;s;s=s._parent)if(s.index==n){if(n==this.index)return s;e=s,i=r+1;break t}n=this.stack[--r]}for(let t=i;t=0;r--){if(r<0)return Ws(this.node,t,n);let s=i[e.buffer[this.stack[r]]];if(!s.isAnonymous){if(t[n]&&t[n]!=s.name)return!1;n--}}return!0}}function js(t){return t.children.some(t=>t instanceof Rs||!t.type.isAnonymous||js(t))}const $s=new WeakMap;function Ks(t,e){if(!t.isAnonymous||e instanceof Rs||e.type!=t)return 1;let i=$s.get(e);if(null==i){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof Es)){i=1;break}i+=Ks(t,n)}$s.set(e,i)}return i}function Us(t,e,i,n,r,s,o,l,h){let a=0;for(let i=n;i=c)break;p+=e}if(a==r+1){if(p>c){let t=i[r];e(t.children,t.positions,0,t.children.length,n[r]+l);continue}u.push(i[r])}else{let e=n[a-1]+i[a-1].length-d;u.push(Us(t,i,n,r,a,d,e,null,h))}f.push(d+l-s)}}(e,i,n,r,0),(l||h)(u,f,o)}class Gs{constructor(t,e,i,n,r=!1,s=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(r?1:0)|(s?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],i=!1){let n=[new Gs(0,t.length,t,0,!1,i)];for(let i of e)i.to>t.length&&n.push(i);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],r=1,s=t.length?t[0]:null;for(let o=0,l=0,h=0;;o++){let a=o=i)for(;s&&s.from=e.from||c<=e.to||h){let t=Math.max(e.from,l)-h,i=Math.min(e.to,c)-h;e=t>=i?null:new Gs(t,i,e.tree,e.offset+h,o>0,!!a)}if(e&&n.push(e),s.to>c)break;s=rnew ks(t.from,t.to)):[new ks(0,0)]:[new ks(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if(t)return t}}}class Ys{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new Ss({perNode:!0});let Xs=0;class Qs{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Xs++}static define(t){if(null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let e=new Qs([],null,[]);if(e.set.push(e),t)for(let i of t.set)e.set.push(i);return e}static defineModifier(){let t=new to;return e=>e.modified.indexOf(t)>-1?e:to.get(e.base||e,e.modified.concat(t).sort((t,e)=>t.id-e.id))}}let Zs=0;class to{constructor(){this.instances=[],this.id=Zs++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(i=>{return i.base==t&&(n=e,r=i.modified,n.length==r.length&&n.every((t,e)=>t==r[e]));var n,r});if(i)return i;let n=[],r=new Qs(n,t,e);for(let t of e)t.instances.push(r);let s=function(t){let e=[[]];for(let i=0;ie.length-t.length)}(e);for(let e of t.set)if(!e.modified.length)for(let t of s)n.push(to.get(e,t));return r}}function eo(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let t of i.split(" "))if(t){let i=[],r=2,s=t;for(let e=0;;){if("..."==s&&e>0&&e+3==t.length){r=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(s);if(!n)throw new RangeError("Invalid path: "+t);if(i.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){r=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);s=t.slice(e)}let o=i.length-1,l=i[o];if(!l)throw new RangeError("Invalid path: "+t);let h=new no(n,r,o>0?i.slice(0,o):null);e[l]=h.sort(e[l])}}return io.add(e)}const io=new Ss;class no{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth{let e=r;for(let n of t)for(let t of n.set){let n=i[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}no.empty=new no([],2,null);const so=Qs.define,oo=so(),lo=so(),ho=so(lo),ao=so(lo),co=so(),uo=so(co),fo=so(co),po=so(),go=so(po),mo=so(),vo=so(),wo=so(),yo=so(wo),bo=so(),xo={comment:oo,lineComment:so(oo),blockComment:so(oo),docComment:so(oo),name:lo,variableName:so(lo),typeName:ho,tagName:so(ho),propertyName:ao,attributeName:so(ao),className:so(lo),labelName:so(lo),namespace:so(lo),macroName:so(lo),literal:co,string:uo,docString:so(uo),character:so(uo),attributeValue:so(uo),number:fo,integer:so(fo),float:so(fo),bool:so(co),regexp:so(co),escape:so(co),color:so(co),url:so(co),keyword:mo,self:so(mo),null:so(mo),atom:so(mo),unit:so(mo),modifier:so(mo),operatorKeyword:so(mo),controlKeyword:so(mo),definitionKeyword:so(mo),moduleKeyword:so(mo),operator:vo,derefOperator:so(vo),arithmeticOperator:so(vo),logicOperator:so(vo),bitwiseOperator:so(vo),compareOperator:so(vo),updateOperator:so(vo),definitionOperator:so(vo),typeOperator:so(vo),controlOperator:so(vo),punctuation:wo,separator:so(wo),bracket:yo,angleBracket:so(yo),squareBracket:so(yo),paren:so(yo),brace:so(yo),content:po,heading:go,heading1:so(go),heading2:so(go),heading3:so(go),heading4:so(go),heading5:so(go),heading6:so(go),contentSeparator:so(po),list:so(po),quote:so(po),emphasis:so(po),strong:so(po),link:so(po),monospace:so(po),strikethrough:so(po),inserted:so(),deleted:so(),changed:so(),invalid:so(),meta:bo,documentMeta:so(bo),annotation:so(bo),processingInstruction:so(bo),definition:Qs.defineModifier(),constant:Qs.defineModifier(),function:Qs.defineModifier(),standard:Qs.defineModifier(),local:Qs.defineModifier(),special:Qs.defineModifier()};ro([{tag:xo.link,class:"tok-link"},{tag:xo.heading,class:"tok-heading"},{tag:xo.emphasis,class:"tok-emphasis"},{tag:xo.strong,class:"tok-strong"},{tag:xo.keyword,class:"tok-keyword"},{tag:xo.atom,class:"tok-atom"},{tag:xo.bool,class:"tok-bool"},{tag:xo.url,class:"tok-url"},{tag:xo.labelName,class:"tok-labelName"},{tag:xo.inserted,class:"tok-inserted"},{tag:xo.deleted,class:"tok-deleted"},{tag:xo.literal,class:"tok-literal"},{tag:xo.string,class:"tok-string"},{tag:xo.number,class:"tok-number"},{tag:[xo.regexp,xo.escape,xo.special(xo.string)],class:"tok-string2"},{tag:xo.variableName,class:"tok-variableName"},{tag:xo.local(xo.variableName),class:"tok-variableName tok-local"},{tag:xo.definition(xo.variableName),class:"tok-variableName tok-definition"},{tag:xo.special(xo.variableName),class:"tok-variableName2"},{tag:xo.definition(xo.propertyName),class:"tok-propertyName tok-definition"},{tag:xo.typeName,class:"tok-typeName"},{tag:xo.namespace,class:"tok-namespace"},{tag:xo.className,class:"tok-className"},{tag:xo.macroName,class:"tok-macroName"},{tag:xo.propertyName,class:"tok-propertyName"},{tag:xo.operator,class:"tok-operator"},{tag:xo.comment,class:"tok-comment"},{tag:xo.meta,class:"tok-meta"},{tag:xo.invalid,class:"tok-invalid"},{tag:xo.punctuation,class:"tok-punctuation"}]);var ko;const So=new Ss;const Ao=new Ss;class Mo{constructor(t,e,i=[],n=""){this.data=t,this.name=n,Mt.prototype.hasOwnProperty("tree")||Object.defineProperty(Mt.prototype,"tree",{get(){return Oo(this)}}),this.parser=e,this.extension=[Io.of(this),Mt.languageData.of((t,e,i)=>{let n=Co(t,e,i),r=n.type.prop(So);if(!r)return[];let s=t.facet(r),o=n.type.prop(Ao);if(o){let r=n.resolve(e-n.from,i);for(let e of o)if(e.test(r,t)){let i=t.facet(e.facet);return"replace"==e.type?i:i.concat(s)}}return s})].concat(i)}isActiveAt(t,e,i=-1){return Co(t,e,i).type.prop(So)==this.data}findRegions(t){let e=t.facet(Io);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(t,e)=>{if(t.prop(So)==this.data)return void i.push({from:e,to:e+t.length});let r=t.prop(Ss.mounted);if(r){if(r.tree.prop(So)==this.data){if(r.overlay)for(let t of r.overlay)i.push({from:t.from+e,to:t.to+e});else i.push({from:e,to:e+t.length});return}if(r.overlay){let t=i.length;if(n(r.tree,r.overlay[0].from+e),i.length>t)return}}for(let i=0;i=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let To=null;class Eo{constructor(t,e,i=[],n,r,s,o,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=r,this.viewport=s,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new Eo(t,e,[],Es.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Do(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=Es.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Gs.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=To;To=this;try{return t()}finally{To=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Bo(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:r,viewport:s,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,i,n,r)=>e.push({fromA:t,toA:i,fromB:n,toB:r})),i=Gs.applyChanges(i,e),n=Es.empty,r=0,s={from:t.mapPos(s.from,-1),to:t.mapPos(s.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let i=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);it.from&&(this.fragments=Bo(this.fragments,i,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e)&&(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Js{createParse(e,i,n){let r=n[0].from,s=n[n.length-1].to;return{parsedPos:r,advance(){let e=To;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=s,new Es(Cs.none,[],[],s-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return To}}function Bo(t,e,i){return Gs.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class Ro{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new Ro(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Eo.create(t.facet(Io).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new Ro(i)}}Mo.state=q.define({create:Ro.init,update(t,e){for(let t of e.effects)if(t.is(Mo.setState))return t.value;return e.startState.facet(Io)!=e.state.facet(Io)?Ro.init(e.state):t.apply(e)}});let Po=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(Po=t=>{let e=-1,i=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const No="undefined"!=typeof navigator&&(null===(ko=navigator.scheduling)||void 0===ko?void 0:ko.isInputPending)?()=>navigator.scheduling.isInputPending():null,Lo=Mi.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Mo.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Mo.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=Po(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEndn+1e3,l=r.context.work(()=>No&&No()||Date.now()>s,n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Mo.setState.of(new Ro(r.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(t=>xi(this.view.state,t)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Io=I.define({combine:t=>t.length?t[0]:null,enables:t=>[Mo.state,Lo,Pr.contentAttributes.compute([t],e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}})]});const Ho=I.define(),Wo=I.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Vo(t){let e=t.facet(Wo);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Fo(t,e){let i="",n=t.tabSize,r=t.facet(Wo)[0];if("\t"==r){for(;e>=n;)i+="\t",e-=n;r=" "}for(let t=0;t=e?function(t,e,i){let n=e.resolveStack(i),r=n.node.enterUnfinishedNodesBefore(i);if(r!=n.node){let t=[];for(let e=r;e!=n.node;e=e.parent)t.push(e);for(let e=t.length-1;e>=0;e--)n={node:t[e],next:n}}return jo(n,t,i)}(t,i,e):null}class _o{constructor(t,e={}){this.state=t,this.options=e,this.unit=Vo(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:r}=this.options;return null!=n&&n>=i.from&&n<=i.to?r&&n==t?{text:"",from:t}:(e<0?n-1&&(r+=s-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return qt(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let t=r(n);if(t>-1)return t}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const qo=new Ss;function jo(t,e,i){for(let n=t;n;n=n.next){let t=$o(n.node);if(t)return t(Uo.create(e,i,n))}return 0}function $o(t){let e=t.type.prop(qo);if(e)return e;let i,n=t.firstChild;if(n&&(i=n.type.prop(Ss.closedBy))){let e=t.lastChild,n=e&&i.indexOf(e.name)>-1;return t=>Jo(t,!0,1,void 0,n&&!function(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}(t)?e.from:void 0)}return null==t.parent?Ko:null}function Ko(){return 0}class Uo extends _o{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new Uo(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(Go(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return jo(this.context.next,this.base,this.pos)}}function Go(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function Jo(t,e,i,n,r){let s=t.textAfter,o=s.match(/^\s*/)[0].length,l=n&&s.slice(o,o+n.length)==n||r==t.pos+o,h=e?function(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let r=t.options.simulateBreak,s=t.state.doc.lineAt(i.from),o=null==r||r<=s.from?s.to:Math.min(s.to,r);for(let t=i.to;;){let r=e.childAfter(t);if(!r||r==n)return null;if(!r.type.isSkipped)return r.fromt.prop(So)==s.data:s?t=>t==s:void 0,this.style=ro(t.map(t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))})),{all:r}).style,this.module=i?new Gt(i):null,this.themeType=e.themeType}static define(t,e){return new Yo(t,e||{})}}xo.meta,xo.link,xo.heading,xo.emphasis,xo.strong,xo.strikethrough,xo.keyword,xo.atom,xo.bool,xo.url,xo.contentSeparator,xo.labelName,xo.literal,xo.inserted,xo.string,xo.deleted,xo.regexp,xo.escape,xo.string,xo.variableName,xo.variableName,xo.typeName,xo.namespace,xo.className,xo.variableName,xo.macroName,xo.propertyName,xo.comment,xo.invalid;const Xo=new Ss;function Qo(t,e,i){let n=t.prop(e<0?Ss.openedBy:Ss.closedBy);if(n)return n;if(1==t.name.length){let n=i.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[i[n+e]]}return null}function Zo(t){let e=t.type.prop(Xo);return e?e(t.node):t}function tl(t,e,i,n={}){let r=n.maxScanDistance||1e4,s=n.brackets||"()[]{}",o=Oo(t),l=o.resolveInner(e,i);for(let n=l;n;n=n.parent){let r=Qo(n.type,i,s);if(r&&n.from0?e>=o.from&&eo.from&&e<=o.to))return el(t,e,i,n,o,r,s)}}return function(t,e,i,n,r,s,o){let l=i<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),h=o.indexOf(l);if(h<0||h%2==0!=i>0)return null;let a={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),u=0;for(let t=0;!c.next().done&&t<=s;){let s=c.value;i<0&&(t+=s.length);let l=e+t*i;for(let t=i>0?0:s.length-1,e=i>0?s.length:-1;t!=e;t+=i){let e=o.indexOf(s[t]);if(!(e<0||n.resolveInner(l+t,1).type!=r))if(e%2==0==i>0)u++;else{if(1==u)return{start:a,end:{from:l+t,to:l+t+1},matched:e>>1==h>>1};u--}}i>0&&(t+=s.length)}return c.done?{start:a,matched:!1}:null}(t,e,i,o,l.type,r,s)}function el(t,e,i,n,r,s,o){let l=n.parent,h={from:r.from,to:r.to},a=0,c=null==l?void 0:l.cursor();if(c&&(i<0?c.childBefore(n.from):c.childAfter(n.to)))do{if(i<0?c.to<=n.from:c.from>=n.to){if(0==a&&s.indexOf(c.type.name)>-1&&c.from-1||(rl.push(t),console.warn(e))}function ll(t,e){let i=null;for(let n of e.split(".")){let e=t[n]||xo[n];e?"function"==typeof e?i?i=e(i):ol(n,`Modifier ${n} used at start of tag`):i?ol(n,`Tag ${n} used as modifier`):i=e:ol(n,"Unknown highlighting tag "+n)}if(!i)return 0;let n=e.replace(/ /g,"_"),r=Cs.define({id:nl.length,name:n,props:[eo({[n]:i})]});return nl.push(r),r.id}function hl(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let r=t(e,i);return!!r&&(n(i.update(r)),!0)}}const al=hl(pl,0),cl=hl(dl,0),ul=hl((t,e)=>dl(t,e,function(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=i.to<=n.to?n:t.doc.lineAt(i.to),s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=r.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:r.to})}return e}(e)),0);function fl(t,e){let i=t.languageDataAt("commentTokens",e);return i.length?i[0]:{}}function dl(t,e,i=e.selection.ranges){let n=i.map(t=>fl(e,t.from).block);if(!n.every(t=>t))return null;let r=i.map((t,i)=>function(t,{open:e,close:i},n,r){let s,o,l=t.sliceDoc(n-50,n),h=t.sliceDoc(r,r+50),a=/\s*$/.exec(l)[0].length,c=/^\s*/.exec(h)[0].length,u=l.length-a;if(l.slice(u-e.length,u)==e&&h.slice(c,c+i.length)==i)return{open:{pos:n-a,margin:a&&1},close:{pos:r+c,margin:c&&1}};r-n<=100?s=o=t.sliceDoc(n,r):(s=t.sliceDoc(n,n+50),o=t.sliceDoc(r-50,r));let f=/^\s*/.exec(s)[0].length,d=/\s*$/.exec(o)[0].length,p=o.length-d-i.length;return s.slice(f,f+e.length)==e&&o.slice(p,p+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(s.charAt(f+e.length))?1:0},close:{pos:r-d-i.length,margin:/\s/.test(o.charAt(p-1))?1:0}}:null}(e,n[i],t.from,t.to));if(2!=t&&!r.every(t=>t))return{changes:e.changes(i.map((t,e)=>r[e]?[]:[{from:t.from,insert:n[e].open+" "},{from:t.to,insert:" "+n[e].close}]))};if(1!=t&&r.some(t=>t)){let t=[];for(let e,i=0;ir&&(t==s||s>h.from)){r=h.from;let t=/^\s*/.exec(h.text)[0].length,e=t==h.length,i=h.text.slice(t,t+l.length)==l?t:-1;tt.comment<0&&(!t.empty||t.single))){let t=[];for(let{line:e,token:i,indent:r,empty:s,single:o}of n)!o&&s||t.push({from:e.from+r,insert:i+" "});let i=e.changes(t);return{changes:i,selection:e.selection.map(i,1)}}if(1!=t&&n.some(t=>t.comment>=0)){let t=[];for(let{line:e,comment:i,token:r}of n)if(i>=0){let n=e.from+i,s=n+r.length;" "==e.text[s-e.from]&&s++,t.push({from:n,to:s})}return{changes:t}}return null}const gl=ct.define(),ml=ct.define(),vl=I.define(),wl=I.define({combine:t=>Ct(t,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,n)=>t(i,n)||e(i,n)})});const yl=q.define({create:()=>Ll.empty,update(t,e){let i=e.state.facet(wl),n=e.annotation(gl);if(n){let r=e.docChanged?P.single(function(t){let e=0;return t.iterChangedRanges((t,i)=>e=i),e}(e.changes)):void 0,s=Cl.fromTransaction(e,r),o=n.side,l=0==o?t.undone:t.done;return l=s?Ol(l,l.length,i.minDepth,s):El(l,e.startState.selection),new Ll(0==o?n.rest:l,0==o?l:n.rest)}let r=e.annotation(ml);if("full"!=r&&"before"!=r||(t=t.isolate()),!1===e.annotation(pt.addToHistory))return e.changes.empty?t:t.addMapping(e.changes.desc);let s=Cl.fromTransaction(e),o=e.annotation(pt.time),l=e.annotation(pt.userEvent);return s?t=t.addChanges(s,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),"full"!=r&&"after"!=r||(t=t.isolate()),t},toJSON:t=>({done:t.done.map(t=>t.toJSON()),undone:t.undone.map(t=>t.toJSON())}),fromJSON:t=>new Ll(t.done.map(Cl.fromJSON),t.undone.map(Cl.fromJSON))});function bl(t={}){return[yl,wl.of(t),Pr.domEventHandlers({beforeinput(t,e){let i="historyUndo"==t.inputType?kl:"historyRedo"==t.inputType?Sl:null;return!!i&&(t.preventDefault(),i(e))}})]}function xl(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let r=i.field(yl,!1);if(!r)return!1;let s=r.pop(t,i,e);return!!s&&(n(s),!0)}}const kl=xl(0,!1),Sl=xl(1,!1),Al=xl(0,!0),Ml=xl(1,!0);class Cl{constructor(t,e,i,n,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=r}setSelAfter(t){return new Cl(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?void 0:t.toJSON(),mapped:null===(e=this.mapped)||void 0===e?void 0:e.toJSON(),startSelection:null===(i=this.startSelection)||void 0===i?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(t=>t.toJSON())}}static fromJSON(t){return new Cl(t.changes&&M.fromJSON(t.changes),[],t.mapped&&A.fromJSON(t.mapped),t.startSelection&&P.fromJSON(t.startSelection),t.selectionsAfter.map(P.fromJSON))}static fromTransaction(t,e){let i=Tl;for(let e of t.startState.facet(vl)){let n=e(t);n.length&&(i=i.concat(n))}return!i.length&&t.changes.empty?null:new Cl(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,Tl)}static selection(t){return new Cl(void 0,Tl,void 0,void 0,t)}}function Ol(t,e,i,n){let r=e+1>i+20?e-i-1:0,s=t.slice(r,e);return s.push(n),s}function Dl(t,e){return t.length?e.length?t.concat(e):t:e}const Tl=[];function El(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-200));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),Ol(t,t.length-1,1e9,i.setSelAfter(n)))}return[Cl.selection([e])]}function Bl(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function Rl(t,e){if(!t.length)return t;let i=t.length,n=Tl;for(;i;){let r=Pl(t[i-1],e,n);if(r.changes&&!r.changes.empty||r.effects.length){let e=t.slice(0,i);return e[i-1]=r,e}e=r.mapped,i--,n=r.selectionsAfter}return n.length?[Cl.selection(n)]:Tl}function Pl(t,e,i){let n=Dl(t.selectionsAfter.length?t.selectionsAfter.map(t=>t.map(e)):Tl,i);if(!t.changes)return Cl.selection(n);let r=t.changes.map(e),s=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(s):s;return new Cl(r,dt.mapEffects(t.effects,e),o,t.startSelection.map(s),n)}const Nl=/^(input\.type|delete)($|\.)/;class Ll{constructor(t,e,i=0,n){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new Ll(this.done,this.undone):this}addChanges(t,e,i,n,r){let s=this.done,o=s[s.length-1];return s=o&&o.changes&&!o.changes.empty&&t.changes&&(!i||Nl.test(i))&&(!o.selectionsAfter.length&&e-this.prevTimei.push(t,e)),e.iterChangedRanges((t,e,r,s)=>{for(let t=0;t=e&&r<=o&&(n=!0)}}),n}(o.changes,t.changes))||"input.type.compose"==i)?Ol(s,s.length-1,n.minDepth,new Cl(t.changes.compose(o.changes),Dl(t.effects,o.effects),o.mapped,o.startSelection,Tl)):Ol(s,s.length,n.minDepth,t),new Ll(s,Tl,e,i)}addSelection(t,e,i,n){let r=this.done.length?this.done[this.done.length-1].selectionsAfter:Tl;return r.length>0&&e-this.prevTimet.empty!=o.ranges[e].empty).length)?this:new Ll(El(this.done,t),this.undone,e,i);var s,o}addMapping(t){return new Ll(Rl(this.done,t),Rl(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null;let r=n[n.length-1];if(i&&r.selectionsAfter.length)return e.update({selection:r.selectionsAfter[r.selectionsAfter.length-1],annotations:gl.of({side:t,rest:Bl(n)}),userEvent:0==t?"select.undo":"select.redo",scrollIntoView:!0});if(r.changes){let i=1==n.length?Tl:n.slice(0,n.length-1);return r.mapped&&(i=Rl(i,r.mapped)),e.update({changes:r.changes,selection:r.startSelection,effects:r.effects,annotations:gl.of({side:t,rest:i}),filter:!1,userEvent:0==t?"undo":"redo",scrollIntoView:!0})}return null}}Ll.empty=new Ll(Tl,Tl);const Il=[{key:"Mod-z",run:kl,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Sl,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Sl,preventDefault:!0},{key:"Mod-u",run:Al,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Ml,preventDefault:!0}];function Hl(t,e){return P.create(t.ranges.map(e),t.mainIndex)}function Wl(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Vl({state:t,dispatch:e},i){let n=Hl(t.selection,i);return!n.eq(t.selection)&&(e(Wl(t,n)),!0)}function Fl(t,e){return P.cursor(e?t.to:t.from)}function zl(t,e){return Vl(t,i=>i.empty?t.moveByChar(i,e):Fl(i,e))}function _l(t){return t.textDirectionAt(t.state.selection.main.head)==Wi.LTR}const ql=t=>zl(t,!_l(t)),jl=t=>zl(t,_l(t));function $l(t,e){return Vl(t,i=>i.empty?t.moveByGroup(i,e):Fl(i,e))}"undefined"!=typeof Intl&&Intl.Segmenter;function Kl(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Ul(t,e,i){let n,r,s=Oo(t).resolveInner(e.head),o=i?Ss.closedBy:Ss.openedBy;for(let n=e.head;;){let e=i?s.childAfter(n):s.childBefore(n);if(!e)break;Kl(t,e,o)?s=e:n=i?e.to:e.from}return r=s.type.prop(o)&&(n=i?tl(t,s.from,1):tl(t,s.to,-1))&&n.matched?i?n.end.to:n.end.from:i?s.to:s.from,P.cursor(r,i?-1:1)}function Gl(t,e){return Vl(t,i=>{if(!i.empty)return Fl(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)})}const Jl=t=>Gl(t,!1),Yl=t=>Gl(t,!0);function Xl(t){let e,i=t.scrollDOM.clientHeighti.empty?t.moveVertically(i,e,n.height):Fl(i,e));if(s.eq(r.selection))return!1;if(n.selfScroll){let e=t.coordsAtPos(r.selection.main.head),o=t.scrollDOM.getBoundingClientRect(),l=o.top+n.marginTop,h=o.bottom-n.marginBottom;e&&e.top>l&&e.bottomQl(t,!1),th=t=>Ql(t,!0);function eh(t,e,i){let n=t.lineBlockAt(e.head),r=t.moveToLineBoundary(e,i);if(r.head==e.head&&r.head!=(i?n.to:n.from)&&(r=t.moveToLineBoundary(e,i,!1)),!i&&r.head==n.from&&n.length){let i=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(r=P.cursor(n.from+i))}return r}function ih(t,e,i){let n=!1,r=Hl(t.selection,e=>{let r=tl(t,e.head,-1)||tl(t,e.head,1)||e.head>0&&tl(t,e.head-1,1)||e.head{let i=e(t);return P.range(t.anchor,i.head,i.goalColumn,i.bidiLevel||void 0)});return!i.eq(t.state.selection)&&(t.dispatch(Wl(t.state,i)),!0)}function rh(t,e){return nh(t,i=>t.moveByChar(i,e))}const sh=t=>rh(t,!_l(t)),oh=t=>rh(t,_l(t));function lh(t,e){return nh(t,i=>t.moveByGroup(i,e))}function hh(t,e){return nh(t,i=>t.moveVertically(i,e))}const ah=t=>hh(t,!1),ch=t=>hh(t,!0);function uh(t,e){return nh(t,i=>t.moveVertically(i,e,Xl(t).height))}const fh=t=>uh(t,!1),dh=t=>uh(t,!0),ph=({state:t,dispatch:e})=>(e(Wl(t,{anchor:0})),!0),gh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.doc.length})),!0),mh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.selection.main.anchor,head:0})),!0),vh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0);function wh(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,r=n.changeByRange(n=>{let{from:r,to:s}=n;if(r==s){let n=e(r);nr&&(i="delete.forward",n=yh(t,n,!0)),r=Math.min(r,n),s=Math.max(s,n)}else r=yh(t,r,!1),s=yh(t,s,!0);return r==s?{range:n}:{changes:{from:r,to:s},range:P.cursor(r)}});return!r.changes.empty&&(t.dispatch(n.update(r,{scrollIntoView:!0,userEvent:i,effects:"delete.selection"==i?Pr.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function yh(t,e,i){if(t instanceof Pr)for(let n of t.state.facet(Pr.atomicRanges).map(e=>e(t)))n.between(e,e,(t,n)=>{te&&(e=i?n:t)});return e}const bh=(t,e)=>wh(t,i=>{let n,r,{state:s}=t,o=s.doc.lineAt(i);if(!e&&i>o.from&&ibh(t,!1),kh=t=>bh(t,!0),Sh=(t,e)=>wh(t,i=>{let n=i,{state:r}=t,s=r.doc.lineAt(n),o=r.charCategorizer(n);for(let t=null;;){if(n==(e?s.to:s.from)){n==i&&s.number!=(e?r.doc.lines:1)&&(n+=e?1:-1);break}let l=g(s.text,n-s.from,e)+s.from,h=s.text.slice(Math.min(n,l)-s.from,Math.max(n,l)-s.from),a=o(h);if(null!=t&&a!=t)break;" "==h&&n==i||(t=a),n=l}return n}),Ah=t=>Sh(t,!1),Mh=t=>wh(t,e=>{let i=t.lineBlockAt(e).to;return e=r.number){let t=e[e.length-1];t.to=s.to,t.ranges.push(n)}else e.push({from:r.from,to:s.to,ranges:[n]});i=s.number+1}return e}function Oh(t,e,i){if(t.readOnly)return!1;let n=[],r=[];for(let e of Ch(t)){if(i?e.to==t.doc.length:0==e.from)continue;let s=t.doc.lineAt(i?e.to+1:e.from-1),o=s.length+1;if(i){n.push({from:e.to,to:s.to},{from:e.from,insert:s.text+t.lineBreak});for(let i of e.ranges)r.push(P.range(Math.min(t.doc.length,i.anchor+o),Math.min(t.doc.length,i.head+o)))}else{n.push({from:s.from,to:e.from},{from:e.to,insert:t.lineBreak+s.text});for(let t of e.ranges)r.push(P.range(t.anchor-o,t.head-o))}}return!!n.length&&(e(t.update({changes:n,scrollIntoView:!0,selection:P.create(r,t.selection.mainIndex),userEvent:"move.line"})),!0)}function Dh(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of Ch(t))i?n.push({from:e.from,insert:t.doc.slice(e.from,e.to)+t.lineBreak}):n.push({from:e.to,insert:t.lineBreak+t.doc.slice(e.from,e.to)});return e(t.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Th=Eh(!1);function Eh(t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let r=e.changeByRange(i=>{let{from:r,to:s}=i,o=e.doc.lineAt(r),l=!t&&r==s&&function(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i,n=Oo(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e);return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(Ss.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}(e,r);t&&(r=s=(s<=o.to?o:e.doc.lineAt(s)).to);let h=new _o(e,{simulateBreak:r,simulateDoubleBreak:!!l}),a=zo(h,r);for(null==a&&(a=qt(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));so.from&&r{let r=[];for(let s=n.from;s<=n.to;){let o=t.doc.lineAt(s);o.number>i&&(n.empty||n.to>o.from)&&(e(o,r,n),i=o.number),s=o.to+1}let s=t.changes(r);return{changes:r,range:P.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}const Rh=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(Bh(t,(e,i)=>{i.push({from:e.from,insert:t.facet(Wo)})}),{userEvent:"input.indent"})),!0),Ph=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(Bh(t,(e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let r=qt(n,t.tabSize),s=0,o=Fo(t,Math.max(0,r-Vo(t)));for(;sVl(t,e=>Ul(t.state,e,!_l(t))),shift:t=>nh(t,e=>Ul(t.state,e,!_l(t)))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:t=>Vl(t,e=>Ul(t.state,e,_l(t))),shift:t=>nh(t,e=>Ul(t.state,e,_l(t)))},{key:"Alt-ArrowUp",run:({state:t,dispatch:e})=>Oh(t,e,!1)},{key:"Shift-Alt-ArrowUp",run:({state:t,dispatch:e})=>Dh(t,e,!1)},{key:"Alt-ArrowDown",run:({state:t,dispatch:e})=>Oh(t,e,!0)},{key:"Shift-Alt-ArrowDown",run:({state:t,dispatch:e})=>Dh(t,e,!0)},{key:"Escape",run:({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=P.create([i.main]):i.main.empty||(n=P.create([P.cursor(i.main.head)])),!!n&&(e(Wl(t,n)),!0)}},{key:"Mod-Enter",run:Eh(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:t,dispatch:e})=>{let i=Ch(t).map(({from:e,to:i})=>P.range(e,Math.min(i+1,t.doc.length)));return e(t.update({selection:P.create(i),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:t,dispatch:e})=>{let i=Hl(t.selection,e=>{var i;let n=Oo(t).resolveInner(e.head,1);for(;!(n.from=e.to||n.to>e.to&&n.from<=e.from)&&(null===(i=n.parent)||void 0===i?void 0:i.parent);)n=n.parent;return P.range(n.to,n.from)});return e(Wl(t,i)),!0},preventDefault:!0},{key:"Mod-[",run:Ph},{key:"Mod-]",run:Rh},{key:"Mod-Alt-\\",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new _o(t,{overrideIndentation:t=>{let e=i[t];return null==e?-1:e}}),r=Bh(t,(e,r,s)=>{let o=zo(n,e.from);if(null==o)return;/\S/.test(e.text)||(o=0);let l=/^\s*/.exec(e.text)[0],h=Fo(t,o);(l!=h||s.from{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(Ch(e).map(({from:t,to:i})=>(t>0?t--:it.moveVertically(e,!0)).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:t,dispatch:e})=>ih(t,e,!1)},{key:"Mod-/",run:t=>{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=fl(t.state,i.from);return n.line?al(t):!!n.block&&ul(t)}},{key:"Alt-A",run:cl}].concat([{key:"ArrowLeft",run:ql,shift:sh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:t=>$l(t,!_l(t)),shift:t=>lh(t,!_l(t)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:t=>Vl(t,e=>eh(t,e,!_l(t))),shift:t=>nh(t,e=>eh(t,e,!_l(t))),preventDefault:!0},{key:"ArrowRight",run:jl,shift:oh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:t=>$l(t,_l(t)),shift:t=>lh(t,_l(t)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:t=>Vl(t,e=>eh(t,e,_l(t))),shift:t=>nh(t,e=>eh(t,e,_l(t))),preventDefault:!0},{key:"ArrowUp",run:Jl,shift:ah,preventDefault:!0},{mac:"Cmd-ArrowUp",run:ph,shift:mh},{mac:"Ctrl-ArrowUp",run:Zl,shift:fh},{key:"ArrowDown",run:Yl,shift:ch,preventDefault:!0},{mac:"Cmd-ArrowDown",run:gh,shift:vh},{mac:"Ctrl-ArrowDown",run:th,shift:dh},{key:"PageUp",run:Zl,shift:fh},{key:"PageDown",run:th,shift:dh},{key:"Home",run:t=>Vl(t,e=>eh(t,e,!1)),shift:t=>nh(t,e=>eh(t,e,!1)),preventDefault:!0},{key:"Mod-Home",run:ph,shift:mh},{key:"End",run:t=>Vl(t,e=>eh(t,e,!0)),shift:t=>nh(t,e=>eh(t,e,!0)),preventDefault:!0},{key:"Mod-End",run:gh,shift:vh},{key:"Enter",run:Th},{key:"Mod-a",run:({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:xh,shift:xh},{key:"Delete",run:kh},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Ah},{key:"Mod-Delete",mac:"Alt-Delete",run:t=>Sh(t,!0)},{mac:"Mod-Backspace",run:t=>wh(t,e=>{let i=t.lineBlockAt(e).from;return e>i?i:Math.max(0,e-1)})},{mac:"Mod-Delete",run:Mh}].concat([{key:"Ctrl-b",run:ql,shift:sh,preventDefault:!0},{key:"Ctrl-f",run:jl,shift:oh},{key:"Ctrl-p",run:Jl,shift:ah},{key:"Ctrl-n",run:Yl,shift:ch},{key:"Ctrl-a",run:t=>Vl(t,e=>P.cursor(t.lineBlockAt(e.head).from,1)),shift:t=>nh(t,e=>P.cursor(t.lineBlockAt(e.head).from))},{key:"Ctrl-e",run:t=>Vl(t,e=>P.cursor(t.lineBlockAt(e.head).to,-1)),shift:t=>nh(t,e=>P.cursor(t.lineBlockAt(e.head).to))},{key:"Ctrl-d",run:kh},{key:"Ctrl-h",run:xh},{key:"Ctrl-k",run:Mh},{key:"Ctrl-Alt-h",run:Ah},{key:"Ctrl-o",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:n.of(["",""])},range:P.cursor(t.from)}));return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(e=>{if(!e.empty||0==e.from||e.from==t.doc.length)return{range:e};let i=e.from,n=t.doc.lineAt(i),r=i==n.from?i-1:g(n.text,i-n.from,!1)+n.from,s=i==n.to?i+1:g(n.text,i-n.from,!0)+n.from;return{changes:{from:r,to:s,insert:t.doc.slice(i,s).append(t.doc.slice(r,i))},range:P.cursor(s)}});return!i.changes.empty&&(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:th}].map(t=>({mac:t.key,run:t.run,shift:t.shift}))));function Lh(){var t=arguments[0];"string"==typeof t&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var r=i[n];"string"==typeof r?t.setAttribute(n,r):null!=r&&(t[n]=r)}e++}for(;et.normalize("NFKD"):t=>t;class Wh{constructor(t,e,i=0,n=t.length,r,s){this.test=s,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=r?t=>r(Hh(t)):Hh,this.query=this.normalize(e)}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 b(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 i=(t=e)<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))),n=this.bufferStart+this.bufferPos;this.bufferPos+=x(e);let r=this.normalize(i);for(let t=0,e=n;;t++){let s=r.charCodeAt(t),o=this.match(s,e);if(t==r.length-1){if(o)return this.value=o,this;break}e==n&&tthis.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 t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let e=this.matchPos<=this.to&&this.re.exec(this.curLine);if(e){let i=this.curLineStart+e.index,n=i+e[0].length;if(this.matchPos=$h(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,match:e},this;t=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length=i||n.to<=e){let n=new qh(e,t.sliceString(e,i));return _h.set(t,n),n}if(n.from==e&&n.to==i)return n;let{text:r,from:s}=n;return s>e&&(r=t.sliceString(e,s)+r,s=e),n.to=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=t+1,e=this.re.exec(this.flat.text)),e){let t=this.flat.from+e.index,i=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this.matchPos=$h(this.text,i+(t==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=qh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function $h(t,e){if(e>=t.length)return e;let i,n=t.lineAt(e);for(;e=56320&&i<57344;)e++;return e}function Kh(t){let e=Lh("input",{class:"cm-textfield",name:"line",value:String(t.state.doc.lineAt(t.state.selection.main.head).number)});function i(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!i)return;let{state:n}=t,r=n.doc.lineAt(n.selection.main.head),[,s,o,l,h]=i,a=l?+l.slice(1):0,c=o?+o:r.number;if(o&&h){let t=c/100;s&&(t=t*("-"==s?-1:1)+r.number/n.doc.lines),c=Math.round(n.doc.lines*t)}else o&&s&&(c=c*("-"==s?-1:1)+r.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,c))),f=P.cursor(u.from+Math.max(0,Math.min(a,u.length)));t.dispatch({effects:[Uh.of(!1),Pr.scrollIntoView(f.from,{y:"center"})],selection:f}),t.focus()}return{dom:Lh("form",{class:"cm-gotoLine",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),t.dispatch({effects:Uh.of(!1)}),t.focus()):13==e.keyCode&&(e.preventDefault(),i())},onsubmit:t=>{t.preventDefault(),i()}},Lh("label",t.state.phrase("Go to line"),": ",e)," ",Lh("button",{class:"cm-button",type:"submit"},t.state.phrase("go")))}}"undefined"!=typeof Symbol&&(zh.prototype[Symbol.iterator]=jh.prototype[Symbol.iterator]=function(){return this});const Uh=dt.define(),Gh=q.define({create:()=>!0,update(t,e){for(let i of e.effects)i.is(Uh)&&(t=i.value);return t},provide:t=>Zr.from(t,t=>t?Kh:null)}),Jh=Pr.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}});const Yh=I.define({combine:t=>Ct(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new Ma(t),scrollToMatch:t=>Pr.scrollIntoView(t)})});class Xh{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||function(t){try{return new RegExp(t,Fh),!0}catch(t){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,(t,e)=>"n"==e?"\n":"r"==e?"\r":"t"==e?"\t":"\\")}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord}create(){return this.regexp?new ra(this):new ta(this)}getCursor(t,e=0,i){let n=t.doc?t:Mt.create({doc:t});return null==i&&(i=n.doc.length),this.regexp?ea(this,n,e,i):Zh(this,n,e,i)}}class Qh{constructor(t){this.spec=t}}function Zh(t,e,i,n){return new Wh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:t=>t.toLowerCase(),t.wholeWord?(r=e.doc,s=e.charCategorizer(e.selection.main.head),(t,e,i,n)=>((n>t||n+i.length=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=Zh(this.spec,t,Math.max(0,e-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}function ea(t,e,i,n){return new zh(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?(r=e.charCategorizer(e.selection.main.head),(t,e,i)=>!i[0].length||(r(ia(i.input,i.index))!=xt.Word||r(na(i.input,i.index))!=xt.Word)&&(r(na(i.input,i.index+i[0].length))!=xt.Word||r(ia(i.input,i.index+i[0].length))!=xt.Word)):void 0},i,n);var r}function ia(t,e){return t.slice(g(t,e,!1),e)}function na(t,e){return t.slice(e,g(t,e))}class ra extends Qh{nextMatch(t,e,i){let n=ea(this.spec,t,i,t.doc.length).next();return n.done&&(n=ea(this.spec,t,0,e).next()),n.done?null:n.value}prevMatchInRange(t,e,i){for(let n=1;;n++){let r=Math.max(e,i-1e4*n),s=ea(this.spec,t,r,i),o=null;for(;!s.next().done;)o=s.value;if(o&&(r==e||o.from>r+10))return o;if(r==e)return null}}prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchInRange(t,i,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace.replace(/\$([$&\d+])/g,(e,i)=>"$"==i?"$":"&"==i?t.match[0]:"0"!=i&&+i=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=ea(this.spec,t,Math.max(0,e-250),Math.min(i+250,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}const sa=dt.define(),oa=dt.define(),la=q.define({create:t=>new ha(ya(t).create(),null),update(t,e){for(let i of e.effects)i.is(sa)?t=new ha(i.value.create(),t.panel):i.is(oa)&&(t=new ha(t.query,i.value?wa:null));return t},provide:t=>Zr.from(t,t=>t.panel)});class ha{constructor(t,e){this.query=t,this.panel=e}}const aa=Ze.mark({class:"cm-searchMatch"}),ca=Ze.mark({class:"cm-searchMatch cm-searchMatch-selected"}),ua=Mi.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(la))}update(t){let e=t.state.field(la);(e!=t.startState.field(la)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ze.none;let{view:i}=this,n=new Rt;for(let e=0,r=i.visibleRanges,s=r.length;er[e+1].from-500;)l=r[++e].to;t.highlight(i.state,o,l,(t,e)=>{let r=i.state.selection.ranges.some(i=>i.from==t&&i.to==e);n.add(t,e,r?ca:aa)})}return n.finish()}},{decorations:t=>t.decorations});function fa(t){return e=>{let i=e.state.field(la,!1);return i&&i.query.spec.valid?t(e,i):ka(e)}}const da=fa((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let r=P.single(n.from,n.to),s=t.state.facet(Yh);return t.dispatch({selection:r,effects:[Da(t,n),s.scrollToMatch(r.main,t)],userEvent:"select.search"}),xa(t),!0}),pa=fa((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,r=e.prevMatch(i,n,n);if(!r)return!1;let s=P.single(r.from,r.to),o=t.state.facet(Yh);return t.dispatch({selection:s,effects:[Da(t,r),o.scrollToMatch(s.main,t)],userEvent:"select.search"}),xa(t),!0}),ga=fa((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!(!i||!i.length)&&(t.dispatch({selection:P.create(i.map(t=>P.range(t.from,t.to))),userEvent:"select.search.matches"}),!0)}),ma=fa((t,{query:e})=>{let{state:i}=t,{from:n,to:r}=i.selection.main;if(i.readOnly)return!1;let s=e.nextMatch(i,n,n);if(!s)return!1;let o,l,h=[],a=[];if(s.from==n&&s.to==r&&(l=i.toText(e.getReplacement(s)),h.push({from:s.from,to:s.to,insert:l}),s=e.nextMatch(i,s.from,s.to),a.push(Pr.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+"."))),s){let e=0==h.length||h[0].from>=s.to?0:s.to-s.from-l.length;o=P.single(s.from-e,s.to-e),a.push(Da(t,s)),a.push(i.facet(Yh).scrollToMatch(o.main,t))}return t.dispatch({changes:h,selection:o,effects:a,userEvent:"input.replace"}),!0}),va=fa((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map(t=>{let{from:i,to:n}=t;return{from:i,to:n,insert:e.getReplacement(t)}});if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:Pr.announce.of(n),userEvent:"input.replace.all"}),!0});function wa(t){return t.state.facet(Yh).createPanel(t)}function ya(t,e){var i,n,r,s,o;let l=t.selection.main,h=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!h)return e;let a=t.facet(Yh);return new Xh({search:(null!==(i=null==e?void 0:e.literal)&&void 0!==i?i:a.literal)?h:h.replace(/\n/g,"\\n"),caseSensitive:null!==(n=null==e?void 0:e.caseSensitive)&&void 0!==n?n:a.caseSensitive,literal:null!==(r=null==e?void 0:e.literal)&&void 0!==r?r:a.literal,regexp:null!==(s=null==e?void 0:e.regexp)&&void 0!==s?s:a.regexp,wholeWord:null!==(o=null==e?void 0:e.wholeWord)&&void 0!==o?o:a.wholeWord})}function ba(t){let e=Jr(t,wa);return e&&e.dom.querySelector("[main-field]")}function xa(t){let e=ba(t);e&&e==t.root.activeElement&&e.select()}const ka=t=>{let e=t.state.field(la,!1);if(e&&e.panel){let i=ba(t);if(i&&i!=t.root.activeElement){let n=ya(t.state,e.query.spec);n.valid&&t.dispatch({effects:sa.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[oa.of(!0),e?sa.of(ya(t.state,e.query.spec)):dt.appendConfig.of(Ea)]});return!0},Sa=t=>{let e=t.state.field(la,!1);if(!e||!e.panel)return!1;let i=Jr(t,wa);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:oa.of(!1)}),!0},Aa=[{key:"Mod-f",run:ka,scope:"editor search-panel"},{key:"F3",run:da,shift:pa,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:da,shift:pa,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Sa,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:r}=i.main,s=[],o=0;for(let e=new Wh(t.doc,t.sliceDoc(n,r));!e.next().done;){if(s.length>1e3)return!1;e.value.from==n&&(o=s.length),s.push(P.range(e.value.from,e.value.to))}return e(t.update({selection:P.create(s,o),userEvent:"select.search.matches"})),!0}},{key:"Alt-g",run:t=>{let e=Jr(t,Kh);if(!e){let i=[Uh.of(!0)];null==t.state.field(Gh,!1)&&i.push(dt.appendConfig.of([Gh,Jh])),t.dispatch({effects:i}),e=Jr(t,Kh)}return e&&e.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some(t=>t.from===t.to))return(({state:t,dispatch:e})=>{let{selection:i}=t,n=P.create(i.ranges.map(e=>t.wordAt(e.head)||P.cursor(e.head)),i.mainIndex);return!n.eq(i)&&(e(t.update({selection:n})),!0)})({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some(e=>t.sliceDoc(e.from,e.to)!=n))return!1;let r=function(t,e){let{main:i,ranges:n}=t.selection,r=t.wordAt(i.head),s=r&&r.from==i.from&&r.to==i.to;for(let i=!1,r=new Wh(t.doc,e,n[n.length-1].to);;){if(r.next(),!r.done){if(i&&n.some(t=>t.from==r.value.from))continue;if(s){let e=t.wordAt(r.value.from);if(!e||e.from!=r.value.from||e.to!=r.value.to)continue}return r.value}if(i)return null;r=new Wh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}}(t,n);return!!r&&(e(t.update({selection:t.selection.addRange(P.range(r.from,r.to),!1),effects:Pr.scrollIntoView(r.to)})),!0)},preventDefault:!0}];class Ma{constructor(t){this.view=t;let e=this.query=t.state.field(la).query.spec;function i(t,e,i){return Lh("button",{class:"cm-button",name:t,onclick:e,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=Lh("input",{value:e.search,placeholder:Ca(t,"Find"),"aria-label":Ca(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Lh("input",{value:e.replace,placeholder:Ca(t,"Replace"),"aria-label":Ca(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Lh("input",{type:"checkbox",name:"case",form:"",checked:e.caseSensitive,onchange:this.commit}),this.reField=Lh("input",{type:"checkbox",name:"re",form:"",checked:e.regexp,onchange:this.commit}),this.wordField=Lh("input",{type:"checkbox",name:"word",form:"",checked:e.wholeWord,onchange:this.commit}),this.dom=Lh("div",{onkeydown:t=>this.keydown(t),class:"cm-search"},[this.searchField,i("next",()=>da(t),[Ca(t,"next")]),i("prev",()=>pa(t),[Ca(t,"previous")]),i("select",()=>ga(t),[Ca(t,"all")]),Lh("label",null,[this.caseField,Ca(t,"match case")]),Lh("label",null,[this.reField,Ca(t,"regexp")]),Lh("label",null,[this.wordField,Ca(t,"by word")]),...t.state.readOnly?[]:[Lh("br"),this.replaceField,i("replace",()=>ma(t),[Ca(t,"replace")]),i("replaceAll",()=>va(t),[Ca(t,"replace all")])],Lh("button",{name:"close",onclick:()=>Sa(t),"aria-label":Ca(t,"close"),type:"button"},["×"])])}commit(){let t=new Xh({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:sa.of(t)}))}keydown(t){var e,i,n;e=this.view,i=t,n="search-panel",$r(qr(e.state),i,e,n)?t.preventDefault():13==t.keyCode&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?pa:da)(this.view)):13==t.keyCode&&t.target==this.replaceField&&(t.preventDefault(),ma(this.view))}update(t){for(let e of t.transactions)for(let t of e.effects)t.is(sa)&&!t.value.eq(this.query)&&this.setQuery(t.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Yh).top}}function Ca(t,e){return t.state.phrase(e)}const Oa=/[\s\.,:;?!]/;function Da(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),r=t.state.doc.lineAt(i).to,s=Math.max(n.from,e-30),o=Math.min(r,i+30),l=t.state.sliceDoc(s,o);if(s!=n.from)for(let t=0;t<30;t++)if(!Oa.test(l[t+1])&&Oa.test(l[t])){l=l.slice(t);break}if(o!=r)for(let t=l.length-1;t>l.length-30;t--)if(!Oa.test(l[t-1])&&Oa.test(l[t])){l=l.slice(0,t);break}return Pr.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const Ta=Pr.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"}}),Ea=[la,Y.low(ua),Ta];function Ba(t){return(Ba="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Ra(t){return function(t){if(Array.isArray(t))return Pa(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Pa(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return Pa(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pa(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i0,e.editRecoveryHandler=null,e}return e=s,(i=[{key:"setCodeMirrorPreference",value:function(t){this.useCodeMirror=t,La(Fa(s.prototype),"setCodeMirrorPreference",this).call(this,t)}},{key:"enableCodeMirror",value:function(){var t=this;if(!(this.view||mw.user.options.get("gadget-wikEd")>0)){var e=this.$textarea.prop("selectionStart"),i=this.$textarea.prop("selectionEnd"),n=this.$textarea.scrollTop(),r=this.$textarea.is(":focus"),s=[].concat(Ra(this.defaultExtensions),[bl(),Pr.contentAttributes.of({spellcheck:"true",accesskey:this.$textarea.attr("accesskey")}),Pr.domEventHandlers({blur:function(){return t.$textarea.triggerHandler("blur")},focus:function(){return t.$textarea.triggerHandler("focus")}}),Pr.updateListener.of((function(e){e.docChanged&&"function"==typeof t.editRecoveryHandler&&t.editRecoveryHandler()})),Pr.lineWrapping,zr.of([].concat(Ra(Nh),Ra(Aa),Ra(Il)))]);mw.hook("editRecovery.loadEnd").add((function(e){t.editRecoveryHandler=e.fieldChangeHandler})),this.initialize(s),this.view.scrollDOM.scrollTop=n,this.view.dispatch({selection:P.create([P.range(e,i)])}),r&&this.view.focus(),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}}},{key:"addCodeMirrorToWikiEditor",value:function(){var t=this,e=this.$textarea.data("wikiEditor-context"),i=e&&e.modules&&e.modules.toolbar;i&&(this.$textarea.wikiEditor("addToToolbar",{section:"main",groups:{codemirror:{tools:{CodeMirror:{label:mw.msg("codemirror-toggle-label"),type:"toggle",oouiIcon:"highlight",action:{type:"callback",execute:function(){return t.switchCodeMirror()}}}}}}}),i.$toolbar.find(".tool[rel=CodeMirror]").attr("id","mw-editbutton-codemirror"),this.useCodeMirror&&this.enableCodeMirror(),this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!1,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0}))}},{key:"updateToolbarButton",value:function(){var t=$("#mw-editbutton-codemirror");t.toggleClass("mw-editbutton-codemirror-active",this.useCodeMirror),t.data("setActive")&&t.data("setActive")(this.useCodeMirror)}},{key:"switchCodeMirror",value:function(){if(this.view){this.setCodeMirrorPreference(!1);var t=this.view.scrollDOM.scrollTop,e=this.view.hasFocus,i=this.view.state.selection.ranges[0],n=i.from,r=i.to;$(this.view.dom).textSelection("unregister"),this.$textarea.textSelection("unregister"),this.view.destroy(),this.view=null,this.$textarea.show(),e&&this.$textarea.trigger("focus"),this.$textarea.prop("selectionStart",Math.min(n,r)).prop("selectionEnd",Math.max(r,n)),this.$textarea.scrollTop(t),mw.hook("ext.CodeMirror.switch").fire(!1,this.$textarea)}else this.enableCodeMirror(),this.setCodeMirrorPreference(!0);this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!0,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0})}}])&&Na(e.prototype,i),n&&Na(e,n),Object.defineProperty(e,"prototype",{writable:!1}),s}(ys);mw.loader.getState("ext.wikiEditor")&&mw.hook("wikiEditor.toolbarReady").add((function(t){new za(t).addCodeMirrorToWikiEditor()}))}}); +!function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s="./src/codemirror.wikieditor.init.js")}({"./src/codemirror.wikieditor.init.js":function(t,e,i){"use strict";i.r(e);class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){let n=[];return this.decompose(0,t,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(e,this.length,n,1),s.from(n,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){let i=[];return this.decompose(t,e,i,0),s.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new h(this),r=new h(t);for(let t=e,s=e;;){if(n.next(t),r.next(t),t=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(s+=n.value.length,n.done||s>=i)return!0}}iter(t=1){return new h(this,t)}iterRange(t,e=this.length){return new a(this,t,e)}iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new c(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(0==t.length)throw new RangeError("A document must have at least one line");return 1!=t.length||t[0]?t.length<=32?new r(t):s.from(r.split(t,[])):n.empty}}class r extends n{constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;return e}(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let r=0;;r++){let s=this.text[r],o=n+s.length;if((e?i:o)>=t)return new u(n,o,i,s);n=o+1,i++}}decompose(t,e,i,n){let s=t<=0&&e>=this.length?this:new r(l(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(1&n){let t=i.pop(),e=o(s.text,t.text.slice(),0,s.length);if(e.length<=32)i.push(new r(e,t.length+s.length));else{let t=e.length>>1;i.push(new r(e.slice(0,t)),new r(e.slice(t)))}}else i.push(s)}replace(t,e,i){if(!(i instanceof r))return super.replace(t,e,i);let n=o(this.text,o(i.text,l(this.text,0,t)),e),h=this.length+i.length-(e-t);return n.length<=32?new r(n,h):s.from(r.split(n,[]),h)}sliceString(t,e=this.length,i="\n"){let n="";for(let r=0,s=0;r<=e&&st&&s&&(n+=i),tr&&(n+=o.slice(Math.max(0,t-r),e-r)),r=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],n=-1;for(let s of t)i.push(s),n+=s.length+1,32==i.length&&(e.push(new r(i,n)),i=[],n=-1);return n>-1&&e.push(new r(i,n)),e}}class s extends n{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let e of t)this.lines+=e.lines}lineInner(t,e,i,n){for(let r=0;;r++){let s=this.children[r],o=n+s.length,l=i+s.lines-1;if((e?l:o)>=t)return s.lineInner(t,e,i,n);n=o+1,i=l+1}}decompose(t,e,i,n){for(let r=0,s=0;s<=e&&r=s){let r=n&((s<=t?1:0)|(l>=e?2:0));s>=t&&l<=e&&!r?i.push(o):o.decompose(t-s,e-s,i,r)}s=l+1}}replace(t,e,i){if(i.lines=r&&e<=l){let h=o.replace(t-r,e-r,i),a=this.lines-o.lines+h.lines;if(h.lines>4&&h.lines>a>>6){let r=this.children.slice();return r[n]=h,new s(r,this.length-(e-t)+i.length)}return super.replace(r,l,h)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i="\n"){let n="";for(let r=0,s=0;rt&&r&&(n+=i),ts&&(n+=o.sliceString(t-s,e-s,i)),s=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof s))return 0;let i=0,[n,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;n+=e,r+=e){if(n==o||r==l)return i;let s=this.children[n],h=t.children[r];if(s!=h)return i+s.scanIdentical(h,e);i+=s.length+1}}static from(t,e=t.reduce((t,e)=>t+e.length+1,-1)){let i=0;for(let e of t)i+=e.lines;if(i<32){let i=[];for(let e of t)e.flatten(i);return new r(i,e)}let n=Math.max(32,i>>5),o=n<<1,l=n>>1,h=[],a=0,c=-1,u=[];function f(t){let e;if(t.lines>o&&t instanceof s)for(let e of t.children)f(e);else t.lines>l&&(a>l||!a)?(d(),h.push(t)):t instanceof r&&a&&(e=u[u.length-1])instanceof r&&t.lines+e.lines<=32?(a+=t.lines,c+=t.length+1,u[u.length-1]=new r(e.text.concat(t.text),e.length+1+t.length)):(a+t.lines>n&&d(),a+=t.lines,c+=t.length+1,u.push(t))}function d(){0!=a&&(h.push(1==u.length?u[0]:s.from(u,c)),c=-1,a=u.length=0)}for(let e of t)f(e);return d(),1==h.length?h[0]:new s(h,e)}}function o(t,e,i=0,n=1e9){for(let r=0,s=0,o=!0;s=i&&(h>n&&(l=l.slice(0,n-r)),r0?1:(t instanceof r?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,n=this.nodes[i],s=this.offsets[i],o=s>>1,l=n instanceof r?n.text.length:n.children.length;if(o==(e>0?l:0)){if(0==i)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&s)==(e>0?0:1)){if(this.offsets[i]+=e,0==t)return this.lineBreak=!0,this.value="\n",this;t--}else if(n instanceof r){let r=n.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,r.length>Math.max(0,t))return this.value=0==t?r:e>0?r.slice(t):r.slice(0,r.length-t),this;t-=r.length}else{let s=n.children[o+(e<0?-1:0)];t>s.length?(t-=s.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(s),this.offsets.push(e>0?1:(s instanceof r?s.text.length:s.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class a{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new h(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class c{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(n.prototype[Symbol.iterator]=function(){return this.iter()},h.prototype[Symbol.iterator]=a.prototype[Symbol.iterator]=c.prototype[Symbol.iterator]=function(){return this});class u{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}let f="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=1;tt)return f[e-1]<=t;return!1}function p(t){return t>=127462&&t<=127487}function g(t,e,i=!0,n=!0){return(i?m:v)(t,e,n)}function m(t,e,i){if(e==t.length)return e;e&&w(t.charCodeAt(e))&&y(t.charCodeAt(e-1))&&e--;let n=b(t,e);for(e+=x(n);e=0&&p(b(t,n));)i++,n-=2;if(i%2==0)break;e+=2}}}return e}function v(t,e,i){for(;e>0;){let n=m(t,e-2,i);if(n=56320&&t<57344}function y(t){return t>=55296&&t<56320}function b(t,e){let i=t.charCodeAt(e);if(!y(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return w(n)?n-56320+(i-55296<<10)+65536:i}function x(t){return t<65536?1:2}const k=/\r\n?|\n/;var S=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(S||(S={}));class A{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-n);r+=o}else{if(i!=S.Simple&&h>=t&&(i==S.TrackDel&&nt||i==S.TrackBefore&&nt))return null;if(h>t||h==t&&e<0&&!o)return t==n||e<0?r:r+l;r+=l}n=h}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return r}touchesRange(t,e=t){for(let i=0,n=0;i=0&&n<=e&&r>=t)return!(ne)||"cover";n=r}return!1}toString(){let t="";for(let e=0;e=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(t=>"number"!=typeof t))throw new RangeError("Invalid JSON representation of ChangeDesc");return new A(t)}static create(t){return new A(t)}}class M extends A{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return D(this,(e,i,n,r,s)=>t=t.replace(n,n+(i-e),s),!1),t}mapDesc(t,e=!1){return T(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let r=0,s=0;r=0){e[r]=l,e[r+1]=o;let h=r>>1;for(;i.length0&&O(i,e,r.text),r.forward(t),o+=t}let h=t[s++];for(;o>1].toJSON()))}return t}static of(t,e,i){let r=[],s=[],o=0,l=null;function h(t=!1){if(!t&&!r.length)return;ol||t<0||l>e)throw new RangeError(`Invalid change range ${t} to ${l} (in doc of length ${e})`);let u=c?"string"==typeof c?n.of(c.split(i||k)):c:n.empty,f=u.length;if(t==l&&0==f)return;to&&C(r,t-o,-1),C(r,l-t,f),O(s,r,u),o=l}}(t),h(!l),l}static empty(t){return new M(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let r=0;re&&"string"!=typeof t))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==s.length)e.push(s[0],0);else{for(;i.length=0&&i<=0&&i==t[r+1]?t[r]+=e:0==e&&0==t[r]?t[r+1]+=i:n?(t[r]+=e,t[r+1]+=i):t.push(e,i)}function O(t,e,i){if(0==i.length)return;let r=e.length-2>>1;if(r>1])),!(i||l==t.sections.length||t.sections[l+1]<0);)h=t.sections[l++],a=t.sections[l++];e(s,c,o,u,f),s=c,o=u}}}function T(t,e,i,n=!1){let r=[],s=n?[]:null,o=new B(t),l=new B(e);for(let t=-1;;)if(-1==o.ins&&-1==l.ins){let t=Math.min(o.len,l.len);C(r,t,-1),o.forward(t),l.forward(t)}else if(l.ins>=0&&(o.ins<0||t==o.i||0==o.off&&(l.len=0&&t=0)){if(o.done&&l.done)return s?M.createSet(r,s):A.create(r);throw new Error("Mismatched change set lengths")}{let e=0,i=o.len;for(;i;)if(-1==l.ins){let t=Math.min(i,l.len);e+=t,i-=t,l.forward(t)}else{if(!(0==l.ins&&l.lene||o.ins>=0&&o.len>e)&&(t||n.length>i),s.forward2(e),o.forward(e)}}else C(n,0,o.ins,t),r&&O(r,n,o.text),o.next()}}class B{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?n.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?n.empty:e[i].slice(this.off,null==t?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class R{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return 16&this.flags?this.to:this.from}get head(){return 16&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 4&this.flags?-1:8&this.flags?1:0}get bidiLevel(){let t=3&this.flags;return 3==t?null:t}get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new R(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return P.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return P.range(this.anchor,i)}eq(t){return this.anchor==t.anchor&&this.head==t.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid JSON representation for SelectionRange");return P.range(t.anchor,t.head)}static create(t,e,i){return new R(t,e,i)}}class P{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:P.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;et.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t.main||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new P(t.ranges.map(t=>R.fromJSON(t)),t.main)}static single(t,e=t){return new P([P.range(t,e)],0)}static create(t,e=0){if(0==t.length)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;nt?4:0)|r)}static normalized(t,e=0){let i=t[e];t.sort((t,e)=>t.from-e.from),e=t.indexOf(i);for(let i=1;in.head?P.range(o,s):P.range(s,o))}}return new P(t,e)}}function N(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let L=0;class I{constructor(t,e,i,n,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=L++,this.default=t([]),this.extensions="function"==typeof r?r(this):r}static define(t={}){return new I(t.combine||(t=>t),t.compareInput||((t,e)=>t===e),t.compare||(t.combine?(t,e)=>t===e:H),!!t.static,t.enables)}of(t){return new W([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new W(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new W(t,this,2,e)}from(t,e){return e||(e=t=>t),this.compute([t],i=>e(i.field(t)))}}function H(t,e){return t==e||t.length==e.length&&t.every((t,i)=>t===e[i])}class W{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=L++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,r=this.id,s=t[r]>>1,o=2==this.type,l=!1,h=!1,a=[];for(let i of this.dependencies)"doc"==i?l=!0:"selection"==i?h=!0:0==(1&(null!==(e=t[i.id])&&void 0!==e?e:1))&&a.push(t[i.id]);return{create:t=>(t.values[s]=i(t),1),update(t,e){if(l&&e.docChanged||h&&(e.docChanged||e.selection)||F(t,a)){let e=i(t);if(o?!V(e,t.values[s],n):!n(e,t.values[s]))return t.values[s]=e,1}return 0},reconfigure:(t,e)=>{let l,h=e.config.address[r];if(null!=h){let r=it(e,h);if(this.dependencies.every(i=>i instanceof I?e.facet(i)===t.facet(i):!(i instanceof q)||e.field(i,!1)==t.field(i,!1))||(o?V(l=i(t),r,n):n(l=i(t),r)))return t.values[s]=r,0}else l=i(t);return t.values[s]=l,1}}}}function V(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[e.id]),r=i.map(t=>t.type),s=n.filter(t=>!(1&t)),o=t[e.id]>>1;function l(t){let i=[];for(let e=0;et===e),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(_).find(t=>t.field==this);return((null==e?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(t),1),update:(t,i)=>{let n=t.values[e],r=this.updateF(n,i);return this.compareF(n,r)?0:(t.values[e]=r,1)},reconfigure:(t,i)=>null!=i.config.address[this.id]?(t.values[e]=i.field(this),0):(t.values[e]=this.create(t),1)}}init(t){return[this,_.of({field:this,create:t})]}get extension(){return this}}const j=4,K=3,U=2,G=1;function J(t){return e=>new X(e,t)}const Y={highest:J(0),high:J(G),default:J(U),low:J(K),lowest:J(j)};class X{constructor(t,e){this.inner=t,this.prec=e}}class Q{of(t){return new Z(this,t)}reconfigure(t){return Q.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class Z{constructor(t,e){this.compartment=t,this.inner=e}}class tt{constructor(t,e,i,n,r,s){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=r,this.facets=s,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let n=[],r=Object.create(null),s=new Map;for(let i of function(t,e,i){let n=[[],[],[],[],[]],r=new Map;function s(t,o){let l=r.get(t);if(null!=l){if(l<=o)return;let e=n[l].indexOf(t);e>-1&&n[l].splice(e,1),t instanceof Z&&i.delete(t.compartment)}if(r.set(t,o),Array.isArray(t))for(let e of t)s(e,o);else if(t instanceof Z){if(i.has(t.compartment))throw new RangeError("Duplicate use of compartment in extensions");let n=e.get(t.compartment)||t.inner;i.set(t.compartment,n),s(n,o)}else if(t instanceof X)s(t.inner,t.prec);else if(t instanceof q)n[o].push(t),t.provides&&s(t.provides,o);else if(t instanceof W)n[o].push(t),t.facet.extensions&&s(t.facet.extensions,U);else{let e=t.extension;if(!e)throw new Error(`Unrecognized extension value in extension set (${t}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(e,o)}}return s(t,U),n.reduce((t,e)=>t.concat(e))}(t,e,s))i instanceof q?n.push(i):(r[i.facet.id]||(r[i.facet.id]=[])).push(i);let o=Object.create(null),l=[],h=[];for(let t of n)o[t.id]=h.length<<1,h.push(e=>t.slot(e));let a=null==i?void 0:i.config.facets;for(let t in r){let e=r[t],n=e[0].facet,s=a&&a[t]||[];if(e.every(t=>0==t.type))if(o[n.id]=l.length<<1|1,H(s,e))l.push(i.facet(n));else{let t=n.combine(e.map(t=>t.value));l.push(i&&n.compare(t,i.facet(n))?i.facet(n):t)}else{for(let t of e)0==t.type?(o[t.id]=l.length<<1|1,l.push(t.value)):(o[t.id]=h.length<<1,h.push(e=>t.dynamicSlot(e)));o[n.id]=h.length<<1,h.push(t=>z(t,n,e))}}let c=h.map(t=>t(o));return new tt(t,s,c,o,l,r)}}function et(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw new Error("Cyclic dependency between fields and/or facets");if(2&n)return n;t.status[i]=4;let r=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|r}function it(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]}const nt=I.define(),rt=I.define({combine:t=>t.some(t=>t),static:!0}),st=I.define({combine:t=>t.length?t[0]:void 0,static:!0}),ot=I.define(),lt=I.define(),ht=I.define(),at=I.define({combine:t=>!!t.length&&t[0]});class ct{constructor(t,e){this.type=t,this.value=e}static define(){return new ut}}class ut{of(t){return new ct(this,t)}}class ft{constructor(t){this.map=t}of(t){return new dt(this,t)}}class dt{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==this.value?this:new dt(this.type,e)}is(t){return this.type==t}static define(t={}){return new ft(t.map||(t=>t))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let t=n.map(e);t&&i.push(t)}return i}}dt.reconfigure=dt.define(),dt.appendConfig=dt.define();class pt{constructor(t,e,i,n,r,s){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=r,this.scrollIntoView=s,this._doc=null,this._state=null,i&&N(i,e.newLength),r.some(t=>t.type==pt.time)||(this.annotations=r.concat(pt.time.of(Date.now())))}static create(t,e,i,n,r,s){return new pt(t,e,i,n,r,s)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(pt.userEvent);return!(!e||!(e==t||e.length>t.length&&e.slice(0,t.length)==t&&"."==e[t.length]))}}function gt(t,e){let i=[];for(let n=0,r=0;;){let s,o;if(n=t[n]))s=t[n++],o=t[n++];else{if(!(r=0;r--){let s=i[r](t);s&&Object.keys(s).length&&(n=mt(n,vt(e,s,t.changes.newLength),!0))}return n==t?t:pt.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}(i?function(t){let e=t.startState,i=!0;for(let n of e.facet(ot)){let e=n(t);if(!1===e){i=!1;break}Array.isArray(e)&&(i=!0===i?e:gt(i,e))}if(!0!==i){let n,r;if(!1===i)r=t.changes.invertedDesc,n=M.empty(e.doc.length);else{let e=t.changes.filter(i);n=e.changes,r=e.filtered.mapDesc(e.changes).invertedDesc}t=pt.create(e,n,t.selection&&t.selection.map(r),dt.mapEffects(t.effects,r),t.annotations,t.scrollIntoView)}let n=e.facet(lt);for(let i=n.length-1;i>=0;i--){let r=n[i](t);t=r instanceof pt?r:Array.isArray(r)&&1==r.length&&r[0]instanceof pt?r[0]:wt(e,bt(r),!1)}return t}(r):r)}pt.time=ct.define(),pt.userEvent=ct.define(),pt.addToHistory=ct.define(),pt.remote=ct.define();const yt=[];function bt(t){return null==t?yt:Array.isArray(t)?t:[t]}var xt=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(xt||(xt={}));const kt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let St;try{St=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(t){}function At(t){return e=>{if(!/\S/.test(e))return xt.Space;if(function(t){if(St)return St.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||kt.test(i)))return!0}return!1}(e))return xt.Word;for(let i=0;i-1)return xt.Word;return xt.Other}}class Mt{constructor(t,e,i,n,r,s){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=r,s&&(s._state=this);for(let t=0;tr.set(e,t)),i=null),r.set(e.value.compartment,e.value.extension)):e.is(dt.reconfigure)?(i=null,n=e.value):e.is(dt.appendConfig)&&(i=null,n=bt(n).concat(e.value));if(i)e=t.startState.values.slice();else{i=tt.resolve(n,r,this),e=new Mt(i,this.doc,this.selection,i.dynamicSlots.map(()=>null),(t,e)=>e.reconfigure(t,this),null).values}new Mt(i,t.newDoc,t.newSelection,e,(e,i)=>i.update(e,t),t)}replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:P.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),r=[i.range],s=bt(i.effects);for(let i=1;ir.spec.fromJSON(s,t)))}return Mt.create({doc:t.doc,selection:P.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(t={}){let e=tt.resolve(t.extensions||[],new Map),i=t.doc instanceof n?t.doc:n.of((t.doc||"").split(e.staticFacet(Mt.lineSeparator)||k)),r=t.selection?t.selection instanceof P?t.selection:P.single(t.selection.anchor,t.selection.head):P.single(0);return N(r,i.length),e.staticFacet(rt)||(r=r.asSingle()),new Mt(e,i,r,e.dynamicSlots.map(()=>null),(t,e)=>e.create(t),null)}get tabSize(){return this.facet(Mt.tabSize)}get lineBreak(){return this.facet(Mt.lineSeparator)||"\n"}get readOnly(){return this.facet(at)}phrase(t,...e){for(let e of this.facet(Mt.phrases))if(Object.prototype.hasOwnProperty.call(e,t)){t=e[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(t,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>e.length?t:e[n-1]})),t}languageDataAt(t,e,i=-1){let n=[];for(let r of this.facet(nt))for(let s of r(this,e,i))Object.prototype.hasOwnProperty.call(s,t)&&n.push(s[t]);return n}charCategorizer(t){return At(this.languageDataAt("wordChars",t).join(""))}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),r=this.charCategorizer(t),s=t-i,o=t-i;for(;s>0;){let t=g(e,s,!1);if(r(e.slice(t,s))!=xt.Word)break;s=t}for(;ot.length?t[0]:4}),Mt.lineSeparator=st,Mt.readOnly=at,Mt.phrases=I.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every(i=>t[i]==e[i])}}),Mt.languageData=nt,Mt.changeFilter=ot,Mt.transactionFilter=lt,Mt.transactionExtender=ht,Q.reconfigure=dt.define();class Ot{eq(t){return this==t}range(t,e=t){return Dt.create(t,e,this)}}Ot.prototype.startSide=Ot.prototype.endSide=0,Ot.prototype.point=!1,Ot.prototype.mapMode=S.TrackDel;class Dt{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new Dt(t,e,i)}}function Tt(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Et{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let r=i?this.to:this.from;for(let s=n,o=r.length;;){if(s==o)return s;let n=s+o>>1,l=r[n]-t||(i?this.value[n].endSide:this.value[n].startSide)-e;if(n==s)return l>=0?s:o;l>=0?o=n:s=n+1}}between(t,e,i,n){for(let r=this.findIndex(e,-1e9,!0),s=this.findIndex(i,1e9,!1,r);ra||h==a&&c.startSide>0&&c.endSide<=0)continue;(a-h||c.endSide-c.startSide)<0||(s<0&&(s=h),c.point&&(o=Math.max(o,a-h)),i.push(c),n.push(h-s),r.push(a-s))}return{mapped:i.length?new Et(n,r,i,o):null,pos:s}}}class Bt{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new Bt(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:r=this.length}=t,s=t.filter;if(0==e.length&&!s)return this;if(i&&(e=e.slice().sort(Tt)),this.isEmpty)return e.length?Bt.of(e):this;let o=new Nt(this,null,-1).goto(0),l=0,h=[],a=new Rt;for(;o.value||l=0){let t=e[l++];a.addInner(t.from,t.to,t.value)||h.push(t)}else 1==o.rangeIndex&&o.chunkIndexthis.chunkEnd(o.chunkIndex)||ro.to||r=r&&t<=r+s.length&&!1===s.between(r,t-r,e-r,i))return}this.nextLayer.between(t,e,i)}}iter(t=0){return Lt.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return Lt.from(t).goto(e)}static compare(t,e,i,n,r=-1){let s=t.filter(t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=r),o=e.filter(t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=r),l=Pt(s,o,i),h=new Ht(s,l,r),a=new Ht(o,l,r);i.iterGaps((t,e,i)=>Wt(h,t,a,e,i,n)),i.empty&&0==i.length&&Wt(h,0,a,0,0,n)}static eq(t,e,i=0,n){null==n&&(n=999999999);let r=t.filter(t=>!t.isEmpty&&e.indexOf(t)<0),s=e.filter(e=>!e.isEmpty&&t.indexOf(e)<0);if(r.length!=s.length)return!1;if(!r.length)return!0;let o=Pt(r,s),l=new Ht(r,o,0).goto(i),h=new Ht(s,o,0).goto(i);for(;;){if(l.to!=h.to||!Vt(l.active,h.active)||l.point&&(!h.point||!l.point.eq(h.point)))return!1;if(l.to>n)return!0;l.next(),h.next()}}static spans(t,e,i,n,r=-1){let s=new Ht(t,null,r).goto(e),o=e,l=s.openStart;for(;;){let t=Math.min(s.to,i);if(s.point){let i=s.activeForPoint(s.to),r=s.pointFromo&&(n.span(o,t,s.active,l),l=s.openEnd(t));if(s.to>i)return l+(s.point&&s.to>i?1:0);o=s.to,s.next()}}static of(t,e=!1){let i=new Rt;for(let n of t instanceof Dt?[t]:e?function(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(Tt);e=n}return t}(t):t)i.add(n.from,n.to,n.value);return i.finish()}}Bt.empty=new Bt([],[],null,-1),Bt.empty.nextLayer=Bt.empty;class Rt{finishChunk(t){this.chunks.push(new Et(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new Rt)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(n<0)&&(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(Bt.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return t;let e=Bt.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function Pt(t,e,i){let n=new Map;for(let e of t)for(let t=0;t=this.minPoint)break}}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&n.push(new Nt(s,e,i,r));return 1==n.length?n[0]:new Lt(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let t=this.heap.length>>1;t>=0;t--)It(this.heap,t);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let t=this.heap.length>>1;t>=0;t--)It(this.heap,t);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),It(this.heap,0)}}}function It(t,e){for(let i=t[e];;){let n=1+(e<<1);if(n>=t.length)break;let r=t[n];if(n+1=0&&(r=t[n+1],n++),i.compare(r)<0)break;t[n]=i,t[e]=r,e=n}}class Ht{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Lt.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Ft(this.active,t),Ft(this.activeTo,t),Ft(this.activeRank,t),this.minActive=_t(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:r}=this.cursor;for(;e-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Ft(i,n)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}{let t=this.cursor.value;if(t.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[e]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function Wt(t,e,i,n,r,s){t.goto(e),i.goto(n);let o=n+r,l=n,h=n-e;for(;;){let e=t.to+h-i.to||t.endSide-i.endSide,n=e<0?t.to+h:i.to,r=Math.min(n,o);if(t.point||i.point?t.point&&i.point&&(t.point==i.point||t.point.eq(i.point))&&Vt(t.activeForPoint(t.to),i.activeForPoint(i.to))||s.comparePoint(l,r,t.point,i.point):r>l&&!Vt(t.active,i.active)&&s.compareRange(l,r,t.active,i.active),n>o)break;l=n,e<=0&&t.next(),e>=0&&i.next()}}function Vt(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;i--)t[i+1]=t[i];t[e]=i}function _t(t,e){let i=-1,n=1e9;for(let r=0;r=e)return n;if(n==t.length)break;r+=9==t.charCodeAt(n)?i-r%i:1,n=g(t,n)}return!0===n?-1:t.length}const $t="undefined"==typeof Symbol?"__ͼ":Symbol.for("ͼ"),Kt="undefined"==typeof Symbol?"__styleSet"+Math.floor(1e8*Math.random()):Symbol("styleSet"),Ut="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};class Gt{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(t){return/^@/.test(t)?[t]:t.split(/,\s*/)}function r(t,e,s,o){let l=[],h=/^@(\w+)\b/.exec(t[0]),a=h&&"keyframes"==h[1];if(h&&null==e)return s.push(t[0]+";");for(let i in e){let o=e[i];if(/&/.test(i))r(i.split(/,\s*/).map(e=>t.map(t=>e.replace(/&/,t))).reduce((t,e)=>t.concat(e)),o,s);else if(o&&"object"==typeof o){if(!h)throw new RangeError("The value of a property ("+i+") should be a primitive value.");r(n(i),o,l,a)}else null!=o&&l.push(i.replace(/_.*/,"").replace(/[A-Z]/g,t=>"-"+t.toLowerCase())+": "+o+";")}(l.length||a)&&s.push((!i||h||o?t:t.map(i)).join(", ")+" {"+l.join(" ")+"}")}for(let e in t)r(n(e),t[e],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let t=Ut[$t]||1;return Ut[$t]=t+1,"ͼ"+t.toString(36)}static mount(t,e,i){let n=t[Kt],r=i&&i.nonce;n?r&&n.setNonce(r):n=new Yt(t,r),n.mount(Array.isArray(e)?e:[e])}}let Jt=new Map;class Yt{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let e=Jt.get(i);if(e)return t.adoptedStyleSheets=[e.sheet,...t.adoptedStyleSheets],t[Kt]=e;this.sheet=new n.CSSStyleSheet,t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets],Jt.set(i,this)}else{this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);let n=t.head||t;n.insertBefore(this.styleTag,n.firstChild)}this.modules=[],t[Kt]=this}mount(t){let e=this.sheet,i=0,n=0;for(let r=0;r-1&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,s),e)for(let t=0;t",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Zt="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),te="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),ee=0;ee<10;ee++)Xt[48+ee]=Xt[96+ee]=String(ee);for(ee=1;ee<=24;ee++)Xt[ee+111]="F"+ee;for(ee=65;ee<=90;ee++)Xt[ee]=String.fromCharCode(ee+32),Qt[ee]=String.fromCharCode(ee);for(var ie in Xt)Qt.hasOwnProperty(ie)||(Qt[ie]=Xt[ie]);function ne(t){let e;return e=11==t.nodeType?t.getSelection?t:t.ownerDocument:t,e.getSelection()}function re(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function se(t,e){if(!e.anchorNode)return!1;try{return re(t,e.anchorNode)}catch(t){return!1}}function oe(t){return 3==t.nodeType?ve(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function le(t,e,i,n){return!!i&&(ae(t,e,i,n,-1)||ae(t,e,i,n,1))}function he(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function ae(t,e,i,n,r){for(;;){if(t==i&&e==n)return!0;if(e==(r<0?0:ce(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=he(t)+(r<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(1==(t=t.childNodes[e+(r<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=r<0?ce(t):0}}}function ce(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function ue(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function fe(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}class de{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?ce(e):0),i,Math.min(t.focusOffset,i?ce(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let pe,ge=null;function me(t){if(t.setActive)return t.setActive();if(ge)return t.focus(ge);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==ge?{get preventScroll(){return ge={preventScroll:!0},!0}}:void 0),!ge){ge=!1;for(let t=0;tMath.max(1,t.scrollHeight-t.clientHeight-4)}class xe{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new xe(t.parentNode,he(t),e)}static after(t,e){return new xe(t.parentNode,he(t)+1,e)}}const ke=[];class Se{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}sync(t,e){if(2&this.flags){let i,n=this.dom,r=null;for(let s of this.children){if(7&s.flags){if(!s.dom&&(i=r?r.nextSibling:n.firstChild)){let t=Se.get(i);(!t||!t.parent&&t.canReuseDOM(s))&&s.reuseDOM(i)}s.sync(t,e),s.flags&=-8}if(i=r?r.nextSibling:n.firstChild,e&&!e.written&&e.node==n&&i!=s.dom&&(e.written=!0),s.dom.parentNode==n)for(;i&&i!=s.dom;)i=Ae(i);else n.insertBefore(s.dom,i);r=s.dom}for(i=r?r.nextSibling:n.firstChild,i&&e&&e.node==n&&(e.written=!0);i;)i=Ae(i)}else if(1&this.flags)for(let i of this.children)7&i.flags&&(i.sync(t,e),i.flags&=-8)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let n=0==ce(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==n&&e.firstChild!=e.lastChild&&(n=t==e.firstChild?-1:1),t=e}i=n<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!Se.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let n=this.children[t];if(n.dom==i)return e;e+=n.length+n.breakAfter}}domBoundsAround(t,e,i=0){let n=-1,r=-1,s=-1,o=-1;for(let l=0,h=i,a=i;le)return i.domBoundsAround(t,e,h);if(c>=t&&-1==n&&(n=l,r=h),h>e&&i.dom.parentNode==this.dom){s=l,o=a;break}a=c,h=c+i.breakAfter}return{from:r,to:o<0?i+this.length:o,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:s=0?this.children[s].dom:null}}markDirty(t=!1){this.flags|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,7&this.flags&&this.markParentsDirty(!0))}setDOM(t){this.dom!=t&&(this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this)}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=ke){this.markDirty();for(let i=t;ithis.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function Ce(t,e,i,n,r,s,o,l,h){let{children:a}=t,c=a.length?a[e]:null,u=s.length?s[s.length-1]:null,f=u?u.breakAfter:o;if(!(e==n&&c&&!o&&!f&&s.length<2&&c.merge(i,r,s.length?u:null,0==i,l,h))){if(n0&&(!o&&s.length&&c.merge(i,c.length,s[0],!1,l,0)?c.breakAfter=s.shift().breakAfter:(i2);var Ve={mac:We||/Mac/.test(De.platform),windows:/Win/.test(De.platform),linux:/Linux|X11/.test(De.platform),ie:Pe,ie_version:Be?Te.documentMode||6:Re?+Re[1]:Ee?+Ee[1]:0,gecko:Ne,gecko_version:Ne?+(/Firefox\/(\d+)/.exec(De.userAgent)||[0,0])[1]:0,chrome:!!Le,chrome_version:Le?+Le[1]:0,ios:We,android:/Android\b/.test(De.userAgent),webkit:Ie,safari:He,webkit_version:Ie?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=Te.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class Fe extends Se{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t,e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return!(8&this.flags||i&&(!(i instanceof Fe)||this.length-(e-t)+i.length>256||8&i.flags))&&(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),!0)}split(t){let e=new Fe(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e.flags|=8&this.flags,e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new xe(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return function(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let r=e,s=e,o=0;0==e&&i<0||e==n&&i>=0?Ve.chrome||Ve.gecko||(e?(r--,o=1):s=0)?0:l.length-1];Ve.safari&&!o&&0==h.width&&(h=Array.prototype.find.call(l,t=>t.width)||h);return o?ue(h,o<0):h||null}(this.dom,t,e)}}class ze extends Se{constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.length=i;for(let t of e)t.setParent(this)}setAttrs(t){if(ye(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}canReuseDOM(t){return super.canReuseDOM(t)&&!(8&(this.flags|t.flags))}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.flags|=6)}sync(t,e){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t,e)}merge(t,e,i,n,r,s){return(!i||!(!(i instanceof ze&&i.mark.eq(this.mark))||t&&r<=0||et&&e.push(i=t&&(n=r),i=o,r++}let s=this.length-t;return this.length=t,n>-1&&(this.children.length=n,this.markDirty()),new ze(this.mark,e,s)}domAtPos(t){return je(this,t)}coordsAt(t,e){return $e(this,t,e)}}class _e extends Se{static create(t,e,i){return new _e(t,e,i)}constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}split(t){let e=_e.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,n,r,s){return!(i&&(!(i instanceof _e&&this.widget.compare(i.widget))||t>0&&r<=0||e0)?xe.before(this.dom):xe.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.widget.coordsAt(this.dom,t,e);if(i)return i;let n=this.dom.getClientRects(),r=null;if(!n.length)return null;let s=this.side?this.side<0:t>0;for(let e=s?n.length-1:0;r=n[e],!(t>0?0==e:e==n.length-1||r.top0?xe.before(this.dom):xe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){return this.dom.getBoundingClientRect()}get overrideDOMText(){return n.empty}get isHidden(){return!0}}function je(t,e){let i=t.dom,{children:n}=t,r=0;for(let t=0;rt&&e0;t--){let e=n[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=r;t=l&&(c.children.length?t(c,l-a):(!s||s.isHidden&&i>0)&&(u>l||a==u&&c.getSide()>0)?(s=c,o=l-a):(a-1?1:0)!=r.length-(i&&r.indexOf(i)>-1?1:0))return!1;for(let s of n)if(s!=i&&(-1==r.indexOf(s)||t[s]!==e[s]))return!1;return!0}function Je(t,e,i){let n=!1;if(e)for(let r in e)i&&r in i||(n=!0,"style"==r?t.style.cssText="":t.removeAttribute(r));if(i)for(let r in i)e&&e[r]==i[r]||(n=!0,"style"==r?t.style.cssText=i[r]:t.setAttribute(r,i[r]));return n}function Ye(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:e>0?1e8:-1e8,new ii(t,e,e,i,t.widget||null,!1)}static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;else{let{start:r,end:s}=ni(t,n);e=(r?n?-3e8:-1:5e8)-1,i=1+(s?n?2e8:1:-6e8)}return new ii(t,e,i,n,t.widget||null,!0)}static line(t){return new ei(t)}static set(t,e=!1){return Bt.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}Ze.none=Bt.empty;class ti extends Ze{constructor(t){let{start:e,end:i}=ni(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){var e,i;return this==t||t instanceof ti&&this.tagName==t.tagName&&(this.class||(null===(e=this.attrs)||void 0===e?void 0:e.class))==(t.class||(null===(i=t.attrs)||void 0===i?void 0:i.class))&&Ge(this.attrs,t.attrs,"class")}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}ti.prototype.point=!1;class ei extends Ze{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof ei&&this.spec.class==t.spec.class&&Ge(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}ei.prototype.mapMode=S.TrackBefore,ei.prototype.point=!0;class ii extends Ze{constructor(t,e,i,n,r,s){super(e,i,r,t),this.block=n,this.isReplace=s,this.mapMode=n?e<=0?S.TrackBefore:S.TrackAfter:S.TrackDel}get type(){return this.startSide=5||this.widget.lineBreaks>0)}eq(t){return t instanceof ii&&(e=this.widget,i=t.widget,e==i||!!(e&&i&&e.compare(i)))&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide;var e,i}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}function ni(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==i&&(i=t.inclusive),null==n&&(n=t.inclusive),{start:null!=i?i:e,end:null!=n?n:e}}function ri(t,e,i,n=0){let r=i.length-1;r>=0&&i[r]+n>=t?i[r]=Math.max(i[r],e):i.push(t,e)}ii.prototype.point=!0;class si extends Se{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,n,r,s){if(i){if(!(i instanceof si))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),Oe(this,t,e,i?i.children:[],r,s),!0}split(t){let e=new si;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i:i,off:n}=this.childPos(t);n&&(e.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let t=i;t0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){Ge(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){!function t(e,i,n){let r,{children:s}=e;n>0&&i instanceof ze&&s.length&&(r=s[s.length-1])instanceof ze&&r.mark.eq(i.mark)?t(r,i.children[0],n-1):(s.push(i),i.setParent(e)),e.length+=i.length}(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=Ke(e,this.attrs||{})),i&&(this.attrs=Ke({class:i},this.attrs||{}))}domAtPos(t){return je(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.flags|=6)}sync(t,e){var i;this.dom?4&this.flags&&(ye(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(Je(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t,e);let n=this.dom.lastChild;for(;n&&Se.get(n)instanceof ze;)n=n.lastChild;if(!(n&&this.length&&("BR"==n.nodeName||0!=(null===(i=Se.get(n))||void 0===i?void 0:i.isEditable)||Ve.ios&&this.children.some(t=>t instanceof Fe)))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t,e=0;for(let i of this.children){if(!(i instanceof Fe)||/[^ -~]/.test(i.text))return null;let n=oe(i.dom);if(1!=n.length)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(t,e){let i=$e(this,t,e);if(!this.children.length&&i&&this.parent){let{heightOracle:t}=this.parent.view.viewState,e=i.bottom-i.top;if(Math.abs(e-t.lineHeight)<2&&t.textHeight=e){if(r instanceof si)return r;if(s>e)break}n=s+r.breakAfter}return null}}class oi extends Se{constructor(t,e,i){super(),this.widget=t,this.length=e,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,n,r,s){return!(i&&(!(i instanceof oi&&this.widget.compare(i.widget))||t>0&&r<=0||e0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:n}=this.cursor.next(this.skip);if(this.skip=0,n)throw new Error("Ran out of text content when drawing inline views");if(i){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,t--;continue}this.text=e,this.textOff=0}let n=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(hi(new Fe(this.text.slice(this.textOff,this.textOff+n)),e),i),this.atCursorPos=!0,this.textOff+=n,t-=n,i=0}}span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(this.openStart=n)}point(t,e,i,n,r,s){if(this.disallowBlockEffectsFor[s]&&i instanceof ii){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=e-t;if(i instanceof ii)if(i.block){let{type:t}=i;t!=Qe.WidgetAfter||this.posCovered()||this.getLine(),this.addBlockWidget(new oi(i.widget||new ai("div"),o,t))}else{let s=_e.create(i.widget||new ai("span"),o,o?0:i.startSide),l=this.atCursorPos&&!s.isEditable&&r<=n.length&&(t0),h=!s.isEditable&&(tn.length||i.startSide<=0),a=this.getLine();2!=this.pendingBuffer||l||s.isEditable||(this.pendingBuffer=0),this.flushBuffer(n),l&&(a.append(hi(new qe(1),n),r),r=n.length+Math.max(0,r-n.length)),a.append(hi(s,n),r),this.atCursorPos=h,this.pendingBuffer=h?tn.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=r)}static build(t,e,i,n,r){let s=new li(t,e,i,r);return s.openEnd=Bt.spans(n,e,i,s),s.openStart<0&&(s.openStart=s.openEnd),s.finish(s.openEnd),s}}function hi(t,e){for(let i of e)t=new ze(i,[t],t.length);return t}class ai extends Xe{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}const ci=I.define(),ui=I.define(),fi=I.define(),di=I.define(),pi=I.define(),gi=I.define(),mi=I.define(),vi=I.define({combine:t=>t.some(t=>t)}),wi=I.define({combine:t=>t.some(t=>t)});class yi{constructor(t,e="nearest",i="nearest",n=5,r=5){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=r}map(t){return t.empty?this:new yi(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin)}}const bi=dt.define({map:(t,e)=>t.map(e)});function xi(t,e,i){let n=t.facet(di);n.length?n[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}const ki=I.define({combine:t=>!t.length||t[0]});let Si=0;const Ai=I.define();class Mi{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,this.extension=n(this)}static define(t,e){const{eventHandlers:i,provide:n,decorations:r}=e||{};return new Mi(Si++,t,i,t=>{let e=[Ai.of(t)];return r&&e.push(Ti.of(e=>{let i=e.plugin(t);return i?r(i):Ze.none})),n&&e.push(n(t)),e})}static fromClass(t,e){return Mi.define(e=>new t(e),e)}}class Ci{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(xi(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){xi(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){xi(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const Oi=I.define(),Di=I.define(),Ti=I.define(),Ei=I.define(),Bi=I.define();function Ri(t,e,i){let n=t.state.facet(Bi);if(!n.length)return n;let r=n.map(e=>e instanceof Function?e(t):e),s=[];return Bt.spans(r,e,i,{point(){},span(t,e,i,n){let r=s;for(let s=i.length-1;s>=0;s--,n--){let o,l=i[s].spec.bidiIsolate;if(null!=l)if(n>0&&r.length&&(o=r[r.length-1]).to==t&&o.direction==l)o.to=e,r=o.inner;else{let i={from:t,to:e,direction:l,inner:[]};r.push(i),r=i.inner}}}}),s}const Pi=I.define();function Ni(t){let e=0,i=0,n=0,r=0;for(let s of t.state.facet(Pi)){let o=s(t);o&&(null!=o.left&&(e=Math.max(e,o.left)),null!=o.right&&(i=Math.max(i,o.right)),null!=o.top&&(n=Math.max(n,o.top)),null!=o.bottom&&(r=Math.max(r,o.bottom)))}return{left:e,right:i,top:n,bottom:r}}const Li=I.define();class Ii{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new Ii(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toAa)break;r+=2}if(!l)return i;new Ii(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),s=l.toA,o=l.toB}}}class Hi{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=M.empty(this.startState.doc.length);for(let t of i)this.changes=this.changes.compose(t.changes);let n=[];this.changes.iterChangedRanges((t,e,i,r)=>n.push(new Ii(t,e,i,r))),this.changedRanges=n}static create(t,e,i){return new Hi(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return 0==this.flags&&0==this.transactions.length}}var Wi=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(Wi||(Wi={}));const Vi=Wi.LTR,Fi=Wi.RTL;function zi(t){let e=[];for(let i=0;i=e){if(o.level==i)return s;(r<0||(0!=n?n<0?o.frome:t[r].level>o.level))&&(r=s)}}if(r<0)throw new RangeError("Index out of range");return r}}function Gi(t,e){if(t.length!=e.length)return!1;for(let i=0;i=0;t-=3)if($i[t+1]==-i){let e=$i[t+2],i=2&e?r:4&e?1&e?s:r:0;i&&(Ji[o]=Ji[$i[t]]=i),l=t;break}}else{if(189==$i.length)break;$i[l++]=o,$i[l++]=e,$i[l++]=h}else if(2==(n=Ji[o])||1==n){let t=n==r;h=t?0:1;for(let e=l-3;e>=0;e-=3){let i=$i[e+2];if(2&i)break;if(t)$i[e+2]|=2;else{if(4&i)break;$i[e+2]|=4}}}}}(t,r,s,n,l),function(t,e,i,n){for(let r=0,s=n;r<=i.length;r++){let o=r?i[r-1].to:t,l=rh;)e==s&&(e=i[--n].from,s=n?i[n-1].to:t),Ji[--e]=c;h=o}else s=o,h++}}}(r,s,n,l),function t(e,i,n,r,s,o,l){let h=r%2?2:1;if(r%2==s%2)for(let a=i,c=0;aa&&l.push(new Ui(a,t.from,d)),Yi(e,t.direction==Vi!=!(d%2)?r+1:r,s,t.inner,t.from,t.to,l),a=t.to}p=t.to}else{if(p==n||(i?Ji[p]!=h:Ji[p]==h))break;p++}f?t(e,a,p,r+1,s,f,l):ai;){let n=!0,u=!1;if(!c||a>o[c-1].to){let t=Ji[a-1];t!=h&&(n=!1,u=16==t)}let f=n||1!=h?null:[],d=n?r:r+1,p=a;t:for(;;)if(c&&p==o[c-1].to){if(u)break t;let t=o[--c];if(!n)for(let e=t.from,n=c;;){if(e==i)break t;if(!n||o[n-1].to!=e){if(Ji[e-1]==h)break t;break}e=o[--n].from}if(f)f.push(t);else{t.toJi.length;)Ji[Ji.length]=256;let n=[],r=e==Vi?0:1;return Yi(t,r,r,i,0,t.length,n),n}function Qi(t){return[new Ui(0,t,0)]}let Zi="";function tn(t,e,i,n,r){var s;let o=n.head-t.from,l=-1;if(0==o){if(!r||!t.length)return null;e[0].level!=i&&(o=e[0].side(!1,i),l=0)}else if(o==t.length){if(r)return null;let t=e[e.length-1];t.level!=i&&(o=t.side(!0,i),l=e.length-1)}l<0&&(l=Ui.find(e,o,null!==(s=n.bidiLevel)&&void 0!==s?s:-1,n.assoc));let h=e[l];o==h.side(r,i)&&(h=e[l+=r?1:-1],o=h.side(!r,i));let a=r==(h.dir==i),c=g(t.text,o,a);if(Zi=t.text.slice(Math.min(o,c),Math.max(o,c)),c!=h.side(r,i))return P.cursor(c+t.from,a?-1:1,h.level);let u=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return u||h.level==i?u&&u.level0&&i.length&&(i.every(({fromA:t,toA:e})=>ethis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let n=-1;this.view.inputState.composing>=0&&((null===(e=this.domChanged)||void 0===e?void 0:e.newSel)?n=this.domChanged.newSel.head:function(t,e){let i=!1;e&&t.iterChangedRanges((t,n)=>{te.from&&(i=!0)});return i}(t.changes,this.hasComposition)||t.selectionSet||(n=t.state.selection.main.head));let r=n>-1?function(t,e,i){let n=rn(t,i);if(!n)return null;let{node:r,from:s,to:o}=n,l=r.nodeValue;if(/[\n\r]/.test(l))return null;if(t.state.doc.sliceString(n.from,n.to)!=l)return null;let h=e.invertedDesc,a=new Ii(h.mapPos(s),h.mapPos(o),s,o),c=[];for(let e=r.parentNode;;e=e.parentNode){let i=Se.get(e);if(i instanceof ze)c.push({node:e,deco:i.mark});else{if(i instanceof si||"DIV"==e.nodeName&&e.parentNode==t.contentDOM)return{range:a,text:r,marks:c,line:e};if(e==t.contentDOM)return null;c.push({node:e,deco:new ti({inclusive:!0,attributes:Ye(e),tagName:e.tagName.toLowerCase()})})}}}(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:e,to:n}=this.hasComposition;i=new Ii(e,n,t.changes.mapPos(e,-1),t.changes.mapPos(n,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(Ve.ie||Ve.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let s=function(t,e,i){let n=new class{constructor(){this.changes=[]}compareRange(t,e){ri(t,e,this.changes)}comparePoint(t,e){ri(t,e,this.changes)}};return Bt.compare(t,e,i,n),n.changes}(this.decorations,this.updateDeco(),t.changes);return i=Ii.extendWithRanges(i,s),!!(7&this.flags||0!=i.length)&&(this.updateInner(i,t.startState.doc.length,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e,i);let{observer:n}=this.view;n.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=Ve.chrome||Ve.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,t),this.flags&=-8,t&&(t.written||n.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(t=>t.flags&=-9);let r=[];if(this.view.viewport.from||this.view.viewport.to=0?n[t]:null;if(!e)break;let s,o,l,h,{fromA:a,toA:c,fromB:u,toB:f}=e;if(i&&i.range.fromBu){let t=li.build(this.view.state.doc,u,i.range.fromB,this.decorations,this.dynamicDecorationMap),e=li.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);o=t.breakAtStart,l=t.openStart,h=e.openEnd;let n=this.compositionView(i);e.breakAtStart?n.breakAfter=1:e.content.length&&n.merge(n.length,n.length,e.content[0],!1,e.openStart,0)&&(n.breakAfter=e.content[0].breakAfter,e.content.shift()),t.content.length&&n.merge(0,0,t.content[t.content.length-1],!0,0,t.openEnd)&&t.content.pop(),s=t.content.concat(n).concat(e.content)}else({content:s,breakAtStart:o,openStart:l,openEnd:h}=li.build(this.view.state.doc,u,f,this.decorations,this.dynamicDecorationMap));let{i:d,off:p}=r.findPos(c,1),{i:g,off:m}=r.findPos(a,-1);Ce(this,g,m,d,p,s,o,l,h)}i&&this.fixCompositionDOM(i)}compositionView(t){let e=new Fe(t.text.nodeValue);e.flags|=8;for(let{deco:i}of t.marks)e=new ze(i,[e],e.length);let i=new si;return i.append(e,0),i}fixCompositionDOM(t){let e=(t,e)=>{e.flags|=8|(e.children.some(t=>7&t.flags)?1:0),this.markedForComposition.add(e);let i=Se.get(t);i&&i!=e&&(i.dom=null),e.setDOM(t)},i=this.childPos(t.range.fromB,1),n=this.children[i.i];e(t.line,n);for(let r=t.marks.length-1;r>=-1;r--)i=n.childPos(i.off,1),n=n.children[i.i],e(r>=0?t.marks[r].node:t.text,n)}updateSelection(t=!1,e=!1){!t&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let i=this.view.root.activeElement,n=i==this.dom,r=!n&&se(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(n||e||r))return;let s=this.forceSelection;this.forceSelection=!1;let o=this.view.state.selection.main,l=this.moveToLine(this.domAtPos(o.anchor)),h=o.empty?l:this.moveToLine(this.domAtPos(o.head));if(Ve.gecko&&o.empty&&!this.hasComposition&&(1==(a=l).node.nodeType&&a.node.firstChild&&(0==a.offset||"false"==a.node.childNodes[a.offset-1].contentEditable)&&(a.offset==a.node.childNodes.length||"false"==a.node.childNodes[a.offset].contentEditable))){let t=document.createTextNode("");this.view.observer.ignore(()=>l.node.insertBefore(t,l.node.childNodes[l.offset]||null)),l=h=new xe(t,0),s=!0}var a;let c=this.view.observer.selectionRange;!s&&c.focusNode&&le(l.node,l.offset,c.anchorNode,c.anchorOffset)&&le(h.node,h.offset,c.focusNode,c.focusOffset)||(this.view.observer.ignore(()=>{Ve.android&&Ve.chrome&&this.dom.contains(c.focusNode)&&function(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=ne(this.view.root);if(t)if(o.empty){if(Ve.gecko){let t=(e=l.node,n=l.offset,1!=e.nodeType?0:(n&&"false"==e.childNodes[n-1].contentEditable?1:0)|(no.head&&([l,h]=[h,l]),e.setEnd(h.node,h.offset),e.setStart(l.node,l.offset),t.removeAllRanges(),t.addRange(e)}else;var e,n;r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(l,h)),this.impreciseAnchor=l.precise?null:new xe(c.anchorNode,c.anchorOffset),this.impreciseHead=h.precise?null:new xe(c.focusNode,c.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=ne(t.root),{anchorNode:n,anchorOffset:r}=t.observer.selectionRange;if(!(i&&e.empty&&e.assoc&&i.modify))return;let s=si.find(this,e.head);if(!s)return;let o=s.posAtStart;if(e.head==o||e.head==o+s.length)return;let l=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!l||!h||l.bottom>h.top)return;let a=this.domAtPos(e.head+e.assoc);i.collapse(a.node,a.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(n,r)}moveToLine(t){let e,i=this.dom;if(t.node!=i)return t;for(let n=t.offset;!e&&n=0;n--){let t=Se.get(i.childNodes[n]);t instanceof si&&(e=t.domAtPos(t.length))}return e?new xe(e.node,e.offset,!0):t}nearest(t){for(let e=t;e;){let t=Se.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;es||t==s&&r.type!=Qe.WidgetBefore&&r.type!=Qe.WidgetAfter&&(!n||2==e||this.children[n-1].breakAfter||this.children[n-1].type==Qe.WidgetBefore&&e>-2))return r.coordsAt(t-s,e);i=s}}coordsForChar(t){let{i:e,off:i}=this.childPos(t,1),n=this.children[e];if(!(n instanceof si))return null;for(;n.children.length;){let{i:t,off:e}=n.childPos(i,1);for(;;t++){if(t==n.children.length)return null;if((n=n.children[t]).length)break}i=e}if(!(n instanceof Fe))return null;let r=g(n.text,i);if(r==i)return null;let s=ve(n.dom,i,r).getClientRects();return!s.length||s[0].top>=s[0].bottom?null:s[0]}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,r=this.view.contentDOM.clientWidth,s=r>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,l=this.view.textDirection==Wi.LTR;for(let t=0,h=0;hn)break;if(t>=i){let i=a.dom.getBoundingClientRect();if(e.push(i.height),s){let e=a.dom.lastChild,n=e?oe(e):[];if(n.length){let e=n[n.length-1],s=l?e.right-i.left:i.right-e.left;s>o&&(o=s,this.minWidth=r,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+a.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?Wi.RTL:Wi.LTR}measureTextSize(){for(let t of this.children)if(t instanceof si){let e=t.measureTextSize();if(e)return e}let t,e,i,n=document.createElement("div");return n.className="cm-line",n.style.width="99999px",n.style.position="absolute",n.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(n);let r=oe(n.firstChild)[0];t=n.getBoundingClientRect().height,e=r?r.width/27:7,i=r?r.height:t,n.remove()}),{lineHeight:t,charWidth:e,textHeight:i}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new Me(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let r=n==e.viewports.length?null:e.viewports[n],s=r?r.from-1:this.length;if(s>i){let n=(e.lineBlockAt(s).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(Ze.replace({widget:new nn(n),block:!0,inclusive:!0,isBlockGap:!0}).range(i,s))}if(!r)break;i=r.to+1}return Ze.set(t)}updateDeco(){let t=this.view.state.facet(Ti).map((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t);for(let e=t.length;ei.anchor?-1:1);if(!n)return;!i.empty&&(e=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,e.left),top:Math.min(n.top,e.top),right:Math.max(n.right,e.right),bottom:Math.max(n.bottom,e.bottom)});let r=Ni(this.view),s={left:n.left-r.left,top:n.top-r.top,right:n.right+r.right,bottom:n.bottom+r.bottom};!function(t,e,i,n,r,s,o,l){let h=t.ownerDocument,a=h.defaultView||window;for(let c=t,u=!1;c&&!u;)if(1==c.nodeType){let t,f=c==h.body,d=1,p=1;if(f)t=fe(a);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(u=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();d=e.width/c.offsetWidth,p=e.height/c.offsetHeight,t={left:e.left,right:e.left+c.clientWidth*d,top:e.top,bottom:e.top+c.clientHeight*p}}let g=0,m=0;if("nearest"==r)e.top0&&e.bottom>t.bottom+m&&(m=e.bottom-t.bottom+m+o)):e.bottom>t.bottom&&(m=e.bottom-t.bottom+o,i<0&&e.top-m0&&e.right>t.right+g&&(g=e.right-t.right+g+s)):e.right>t.right&&(g=e.right-t.right+s,i<0&&e.left0))break;i=i.childNodes[n-1],n=ce(i)}if(i>=0)for(let n=t,r=e;;){if(3==n.nodeType)return{node:n,offset:r};if(!(1==n.nodeType&&r=0))break;n=n.childNodes[r],r=0}return null}function on(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function ln(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function hn(t,e){return t.tope.top+1}function an(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function un(t,e,i){let n=t.nodeValue.length,r=-1,s=1e9,o=0;for(let l=0;li?a.top-i:i-a.bottom)-1;if(a.left-1<=e&&a.right+1>=e&&c=(a.left+a.right)/2,n=i;if(Ve.chrome||Ve.gecko){ve(t,l).getBoundingClientRect().left==a.right&&(n=!i)}if(c<=0)return{node:t,offset:l+(n?1:0)};r=l+(n?1:0),s=c}}}return{node:t,offset:r>-1?r:o>0?t.nodeValue.length:0}}function fn(t,e,i,n=-1){var r,s;let o,l=t.contentDOM.getBoundingClientRect(),h=l.top+t.viewState.paddingTop,{docHeight:a}=t.viewState,{x:c,y:u}=e,f=u-h;if(f<0)return 0;if(f>a)return t.state.doc.length;for(let e=t.viewState.heightOracle.textHeight/2,r=!1;o=t.elementAtHeight(f),o.type!=Qe.Text;)for(;f=n>0?o.bottom+e:o.top-e,!(f>=0&&f<=a);){if(r)return i?null:0;r=!0,n=-n}u=h+f;let d=o.from;if(dt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:i?null:dn(t,l,o,c,u);let p=t.dom.ownerDocument,g=t.root.elementFromPoint?t.root:p,m=g.elementFromPoint(c,u);m&&!t.contentDOM.contains(m)&&(m=null),m||(c=Math.max(l.left+1,Math.min(l.right-1,c)),m=g.elementFromPoint(c,u),m&&!t.contentDOM.contains(m)&&(m=null));let v,w=-1;if(m&&0!=(null===(r=t.docView.nearest(m))||void 0===r?void 0:r.isEditable))if(p.caretPositionFromPoint){let t=p.caretPositionFromPoint(c,u);t&&({offsetNode:v,offset:w}=t)}else if(p.caretRangeFromPoint){let e=p.caretRangeFromPoint(c,u);e&&(({startContainer:v,startOffset:w}=e),(!t.contentDOM.contains(v)||Ve.safari&&function(t,e,i){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return ve(t,n-1,n).getBoundingClientRect().left>i}(v,w,c)||Ve.chrome&&function(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}let n=1==t.nodeType?t.getBoundingClientRect():ve(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return i-n.left>5}(v,w,c))&&(v=void 0))}if(!v||!t.docView.dom.contains(v)){let e=si.find(t.docView,d);if(!e)return f>o.top+o.height/2?o.to:o.from;({node:v,offset:w}=function t(e,i,n){let r,s,o,l,h,a,c,u,f=!1;for(let d=e.firstChild;d;d=d.nextSibling){let e=oe(d);for(let p=0;pv||l==v&&o>m){r=d,s=g,o=m,l=v;let t=v?n0?p0)}0==m?n>g.bottom&&(!c||c.bottomg.top)&&(a=d,u=g):c&&hn(c,g)?c=cn(c,g.bottom):u&&hn(u,g)&&(u=an(u,g.top))}}if(c&&c.bottom>=n?(r=h,s=c):u&&u.top<=n&&(r=a,s=u),!r)return{node:e,offset:0};let d=Math.max(s.left,Math.min(s.right,i));return 3==r.nodeType?un(r,d,n):f&&"false"!=r.contentEditable?t(r,d,n):{node:e,offset:Array.prototype.indexOf.call(e.childNodes,r)+(i>=(s.left+s.right)/2?1:0)}}(e.dom,c,u))}let y=t.docView.nearest(v);if(!y)return null;if(y.isWidget&&1==(null===(s=y.dom)||void 0===s?void 0:s.nodeType)){let t=y.dom.getBoundingClientRect();return e.y1.5*t.defaultLineHeight){let e=t.viewState.heightOracle.textHeight;s+=Math.floor((r-i.top-.5*(t.defaultLineHeight-e))/e)*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+jt(o,s,t.state.tabSize)}function pn(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==Qe.Text))return t;return i}function gn(t,e,i,n){let r=t.state.doc.lineAt(e.head),s=t.bidiSpans(r),o=t.textDirectionAt(r.from);for(let l=e,h=null;;){let e=tn(r,s,o,l,i),a=Zi;if(!e){if(r.number==(i?t.state.doc.lines:1))return l;a="\n",r=t.state.doc.line(r.number+(i?1:-1)),s=t.bidiSpans(r),e=P.cursor(i?r.from:r.to)}if(h){if(!h(a))return l}else{if(!n)return e;h=n(a)}l=e}}function mn(t,e,i){for(;;){let n=0;for(let r of t)r.between(e-1,e+1,(t,r,s)=>{if(e>t&&ee(t)),i.from,e.head>i.from?-1:1);return n==i.from?i:P.cursor(n,n{this.ignoreDuringComposition(i)||"keydown"==i.type&&this.keydown(t,i)||(this.mustFlushObserver(i)&&t.observer.forceFlush(),this.runCustomHandlers(i.type,t,i)?i.preventDefault():e(t,i))};for(let i in Mn){let n=Mn[i];t.contentDOM.addEventListener(i,i=>{An(t,i)&&e(n,i)},Cn[i]),this.registeredEvents.push(i)}var i;t.scrollDOM.addEventListener("mousedown",i=>{if(i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&(e(Mn.mousedown,i),!i.defaultPrevented&&2==i.button)){let e=t.contentDOM.style.minHeight;t.contentDOM.style.minHeight="100%",setTimeout(()=>t.contentDOM.style.minHeight=e,200)}}),t.scrollDOM.addEventListener("drop",i=>{i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&e(Mn.drop,i)}),Ve.chrome&&102==Ve.chrome_version&&t.scrollDOM.addEventListener("wheel",()=>{this.chromeScrollHack<0?t.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout(()=>{this.chromeScrollHack=-1,t.contentDOM.style.pointerEvents=""},100)},{passive:!0}),this.notifiedFocused=t.hasFocus,Ve.safari&&t.contentDOM.addEventListener("input",()=>null),Ve.gecko&&(i=t.contentDOM.ownerDocument,jn.has(i)||(jn.add(i),i.addEventListener("copy",()=>{}),i.addEventListener("cut",()=>{})))}ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let r of e)if(n=null===(i=r.update(t).spec)||void 0===i?void 0:i.domEventHandlers){this.customHandlers.push({plugin:r.value,handlers:n});for(let e in n)this.registeredEvents.indexOf(e)<0&&"scroll"!=e&&(this.registeredEvents.push(e),t.contentDOM.addEventListener(e,i=>{An(t,i)&&this.runCustomHandlers(e,t,i)&&i.preventDefault()}))}}runCustomHandlers(t,e,i){for(let n of this.customHandlers){let r=n.handlers[t];if(r)try{if(r.call(n.plugin,i,e)||i.defaultPrevented)return!0}catch(t){xi(e.state,t)}}return!1}runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.lastScrollLeft=t.scrollDOM.scrollLeft;for(let i of this.customHandlers){let n=i.handlers.scroll;if(n)try{n.call(i.plugin,e,t)}catch(e){xi(t.state,e)}}}keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()t.keyCode==e.keyCode))&&!e.ctrlKey||bn.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey))&&(this.pendingIOSKey=i||e,setTimeout(()=>this.flushIOSKey(t),250),!0)}flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,we(t.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(Ve.safari&&!Ve.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const yn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],bn="dthko",xn=[16,17,18,20,91,92,224,225];function kn(t){return.7*Math.max(0,t)+8}class Sn{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=function(t){let e=t.ownerDocument;for(let i=t.parentNode;i&&i!=e.body;)if(1==i.nodeType){if(i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)return i;i=i.assignedSlot||i.parentNode}else{if(11!=i.nodeType)break;i=i.host}return null}(t.contentDOM),this.atoms=t.state.facet(Ei).map(e=>e(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(Mt.allowMultipleSelections)&&function(t,e){let i=t.state.facet(ci);return i.length?i[0](e):Ve.mac?e.metaKey:e.ctrlKey}(t,e),this.dragging=!(!function(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=ne(t.root);if(!n||0==n.rangeCount)return!0;let r=n.getRangeAt(0).getClientRects();for(let t=0;t=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}(t,e)||1!=Wn(e))&&null}start(t){!1===this.dragging&&(t.preventDefault(),this.select(t))}move(t){var e,i,n;if(0==t.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(i=this.startEvent,n=t,Math.max(Math.abs(i.clientX-n.clientX),Math.abs(i.clientY-n.clientY))<10))return;this.select(this.lastEvent=t);let r=0,s=0,o=(null===(e=this.scrollParent)||void 0===e?void 0:e.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},l=Ni(this.view);t.clientX-l.left<=o.left+6?r=-kn(o.left-t.clientX):t.clientX+l.right>=o.right-6&&(r=kn(t.clientX-o.right)),t.clientY-l.top<=o.top+6?s=-kn(o.top-t.clientY):t.clientY+l.bottom>=o.bottom-6&&(s=kn(t.clientY-o.bottom)),this.setScrollSpeed(r,s)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(t){let e=null;for(let i=0;ithis.select(this.lastEvent),20)}}function An(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i,n=e.target;n!=t.contentDOM;n=n.parentNode)if(!n||11==n.nodeType||(i=Se.get(n))&&i.ignoreEvent(e))return!1;return!0}const Mn=Object.create(null),Cn=Object.create(null),On=Ve.ie&&Ve.ie_version<15||Ve.ios&&Ve.webkit_version<604;function Dn(t,e){let i,{state:n}=t,r=1,s=n.toText(e),o=s.lines==n.selection.ranges.length;if(null!=Fn&&n.selection.ranges.every(t=>t.empty)&&Fn==s.toString()){let t=-1;i=n.changeByRange(i=>{let l=n.doc.lineAt(i.from);if(l.from==t)return{range:i};t=l.from;let h=n.toText((o?s.line(r++).text:e)+n.lineBreak);return{changes:{from:l.from,insert:h},range:P.cursor(i.from+h.length)}})}else i=o?n.changeByRange(t=>{let e=s.line(r++);return{changes:{from:t.from,to:t.to,insert:e.text},range:P.cursor(t.from+e.length)}}):n.replaceSelection(s);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}function Tn(t,e,i,n){if(1==n)return P.cursor(e,i);if(2==n)return function(t,e,i=1){let n=t.charCategorizer(e),r=t.doc.lineAt(e),s=e-r.from;if(0==r.length)return P.cursor(e);0==s?i=1:s==r.length&&(i=-1);let o=s,l=s;i<0?o=g(r.text,s,!1):l=g(r.text,s);let h=n(r.text.slice(o,l));for(;o>0;){let t=g(r.text,o,!1);if(n(r.text.slice(t,o))!=h)break;o=t}for(;l{t.inputState.setSelectionOrigin("select"),27==e.keyCode&&(t.inputState.lastEscPress=Date.now())},Mn.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},Mn.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},Cn.touchstart=Cn.touchmove={passive:!0},Mn.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return;let i=null;for(let n of t.state.facet(fi))if(i=n(t,e),i)break;if(i||0!=e.button||(i=function(t,e){let i=Pn(t,e),n=Wn(e),r=t.state.selection;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),r=r.map(t.changes))},get(e,s,o){let l,h=Pn(t,e),a=Tn(t,h.pos,h.bias,n);if(i.pos!=h.pos&&!s){let e=Tn(t,i.pos,i.bias,n),r=Math.min(e.from,a.from),s=Math.max(e.to,a.to);a=r1&&(l=function(t,e){for(let i=0;i=e)return P.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}(r,h.pos))?l:o?r.addRange(a):P.create([a])}}}(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new Sn(t,e,i,n)),n&&t.observer.ignore(()=>me(t.contentDOM)),t.inputState.mouseSelection&&t.inputState.mouseSelection.start(e)}};let En=(t,e)=>t>=e.top&&t<=e.bottom,Bn=(t,e,i)=>En(e,i)&&t>=i.left&&t<=i.right;function Rn(t,e,i,n){let r=si.find(t.docView,e);if(!r)return 1;let s=e-r.posAtStart;if(0==s)return 1;if(s==r.length)return-1;let o=r.coordsAt(s,-1);if(o&&Bn(i,n,o))return-1;let l=r.coordsAt(s,1);return l&&Bn(i,n,l)?1:o&&En(n,o)?-1:1}function Pn(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:Rn(t,i,e.clientX,e.clientY)}}const Nn=Ve.ie&&Ve.ie_version<=11;let Ln=null,In=0,Hn=0;function Wn(t){if(!Nn)return t.detail;let e=Ln,i=Hn;return Ln=t,Hn=Date.now(),In=!e||i>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(In+1)%3:1}function Vn(t,e,i,n){if(!i)return;let r=t.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:s}=t.inputState,o=n&&s&&s.dragging&&function(t,e){let i=t.state.facet(ui);return i.length?i[0](e):Ve.mac?!e.altKey:!e.ctrlKey}(t,e)?{from:s.dragging.from,to:s.dragging.to}:null,l={from:r,insert:i},h=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:h,selection:{anchor:h.mapPos(r,-1),head:h.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"})}Mn.dragstart=(t,e)=>{let{selection:{main:i}}=t.state,{mouseSelection:n}=t.inputState;n&&(n.dragging=i),e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove")},Mn.drop=(t,e)=>{if(!e.dataTransfer)return;if(t.state.readOnly)return e.preventDefault();let i=e.dataTransfer.files;if(i&&i.length){e.preventDefault();let n=Array(i.length),r=0,s=()=>{++r==i.length&&Vn(t,e,n.filter(t=>null!=t).join(t.state.lineBreak),!1)};for(let t=0;t{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(n[t]=e.result),s()},e.readAsText(i[t])}}else Vn(t,e,e.dataTransfer.getData("Text"),!0)},Mn.paste=(t,e)=>{if(t.state.readOnly)return e.preventDefault();t.observer.flush();let i=On?null:e.clipboardData;i?(Dn(t,i.getData("text/plain")||i.getData("text/uri-text")),e.preventDefault()):function(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),Dn(t,i.value)},50)}(t)};let Fn=null;Mn.copy=Mn.cut=(t,e)=>{let{text:i,ranges:n,linewise:r}=function(t){let e=[],i=[],n=!1;for(let n of t.selection.ranges)n.empty||(e.push(t.sliceDoc(n.from,n.to)),i.push(n));if(!e.length){let r=-1;for(let{from:n}of t.selection.ranges){let s=t.doc.lineAt(n);s.number>r&&(e.push(s.text),i.push({from:s.from,to:Math.min(t.doc.length,s.to+1)})),r=s.number}n=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:n}}(t.state);if(!i&&!r)return;Fn=r?i:null;let s=On?null:e.clipboardData;s?(e.preventDefault(),s.clearData(),s.setData("text/plain",i)):function(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),t.focus()},50)}(t,i),"cut"!=e.type||t.state.readOnly||t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})};const zn=ct.define();function _n(t,e){let i=[];for(let n of t.facet(mi)){let r=n(t,e);r&&i.push(r)}return i?t.update({effects:i,annotations:zn.of(!0)}):null}function qn(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=_n(t.state,e);i?t.dispatch(i):t.update([])}},10)}Mn.focus=t=>{t.inputState.lastFocusTime=Date.now(),t.scrollDOM.scrollTop||!t.inputState.lastScrollTop&&!t.inputState.lastScrollLeft||(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),qn(t)},Mn.blur=t=>{t.observer.clearSelectionRange(),qn(t)},Mn.compositionstart=Mn.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},Mn.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,Ve.chrome&&Ve.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50)},Mn.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},Mn.beforeinput=(t,e)=>{var i;let n;if(Ve.chrome&&Ve.android&&(n=yn.find(t=>t.inputType==e.inputType))&&(t.observer.delayAndroidKey(n.key,n.keyCode),"Backspace"==n.key||"Delete"==n.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout(()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}};const jn=new Set;const $n=["pre-wrap","normal","pre-line","break-spaces"];class Kn{constructor(t){this.lineWrapping=t,this.doc=n.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){if(!this.lineWrapping)return this.lineHeight;return(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return $n.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,l=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=r,l){this.heightSamples={};for(let t=0;t0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>.001&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return Yn.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let r=this,s=i.doc;for(let o=n.length-1;o>=0;o--){let{fromA:l,toA:h,fromB:a,toB:c}=n[o],u=r.lineAt(l,Jn.ByPosNoHeight,i.setDoc(e),0,0),f=u.to>=h?u:r.lineAt(h,Jn.ByPosNoHeight,i,0,0);for(c+=f.to-h,h=f.to;o>0&&u.from<=n[o-1].toA;)l=n[o-1].fromA,a=n[o-1].fromB,o--,l2*r){let r=t[e-1];r.break?t.splice(--e,1,r.left,null,r.right):t.splice(--e,1,r.left,r.right),i+=1+r.break,n-=r.size}else{if(!(r>2*n))break;{let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,r-=e.size}}else if(n=r&&s(this.blockAt(0,i,n,r))}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight(t,n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Qn extends Xn{constructor(t,e){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(t,e,i,n){return new Gn(n,this.length,i,this.height,this.breaks)}replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Qn||n instanceof Zn&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof Zn?n=new Qn(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Yn.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(t,n.heights[n.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Zn extends Yn{constructor(t){super(t,0)}heightMetrics(t,e){let i,n=t.doc.lineAt(e).number,r=t.doc.lineAt(e+this.length).number,s=r-n+1,o=0;if(t.lineWrapping){let e=Math.min(this.height,t.lineHeight*s);i=e/s,this.length>s+1&&(o=(this.height-e)/(this.length-s-1))}else i=this.height/s;return{firstLine:n,lastLine:r,perLine:i,perChar:o}}blockAt(t,e,i,n){let{firstLine:r,lastLine:s,perLine:o,perChar:l}=this.heightMetrics(e,n);if(e.lineWrapping){let r=n+Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length),s=e.doc.lineAt(r),h=o+s.length*l,a=Math.max(i,t-h/2);return new Gn(s.from,s.length,a,h,0)}{let n=Math.max(0,Math.min(s-r,Math.floor((t-i)/o))),{from:l,length:h}=e.doc.line(r+n);return new Gn(l,h,i+o*n,o,0)}}lineAt(t,e,i,n,r){if(e==Jn.ByHeight)return this.blockAt(t,i,n,r);if(e==Jn.ByPosNoHeight){let{from:e,to:n}=i.doc.lineAt(t);return new Gn(e,n-e,0,0,0)}let{firstLine:s,perLine:o,perChar:l}=this.heightMetrics(i,r),h=i.doc.lineAt(t),a=o+h.length*l,c=h.number-s,u=n+o*c+l*(h.from-r-c);return new Gn(h.from,h.length,Math.max(n,Math.min(u,n+this.height-a)),a,0)}forEachLine(t,e,i,n,r,s){t=Math.max(t,r),e=Math.min(e,r+this.length);let{firstLine:o,perLine:l,perChar:h}=this.heightMetrics(i,r);for(let a=t,c=n;a<=e;){let e=i.doc.lineAt(a);if(a==t){let i=e.number-o;c+=l*i+h*(t-r-i)}let n=l+h*e.length;s(new Gn(e.from,e.length,c,n,0)),c+=n,a=e.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t instanceof Zn?i[i.length-1]=new Zn(t.length+n):i.push(null,new Zn(n-1))}if(t>0){let e=i[0];e instanceof Zn?i[0]=new Zn(t+e.length):i.unshift(new Zn(t-1),null)}return Yn.of(i)}decomposeLeft(t,e){e.push(new Zn(t-1),null)}decomposeRight(t,e){e.push(null,new Zn(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let r=e+this.length;if(n&&n.from<=e+this.length&&n.more){let i=[],s=Math.max(e,n.from),o=-1;for(n.from>e&&i.push(new Zn(n.from-e-1).updateHeight(t,e));s<=r&&n.more;){let e=t.doc.lineAt(s).length;i.length&&i.push(null);let r=n.heights[n.index++];-1==o?o=r:Math.abs(r-o)>=.001&&(o=-2);let l=new Qn(e,r);l.outdated=!1,i.push(l),s+=e+1}s<=r&&i.push(null,new Zn(r-s).updateHeight(t,s));let l=Yn.of(i);return(o<0||Math.abs(l.height-this.height)>=.001||Math.abs(o-this.heightMetrics(t,e).perLine)>=.001)&&(t.heightChanged=!0),l}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class tr extends Yn{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,n){let r=i+this.left.height;return to))return h;let a=e==Jn.ByPosNoHeight?Jn.ByPosNoHeight:Jn.ByPos;return l?h.join(this.right.lineAt(o,a,i,s,o)):this.left.lineAt(o,a,i,n,r).join(h)}forEachLine(t,e,i,n,r,s){let o=n+this.left.height,l=r+this.left.length+this.break;if(this.break)t=l&&this.right.forEachLine(t,e,i,o,l,s);else{let h=this.lineAt(l,Jn.ByPos,i,n,r);t=t&&h.from<=e&&s(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,o,l,s)}}replace(t,e,i){let n=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let r=[];t>0&&this.decomposeLeft(t,r);let s=r.length;for(let t of i)r.push(t);if(t>0&&er(r,s-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t2*e.size||e.size>2*t.size?Yn.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:r,right:s}=this,o=e+r.length+this.break,l=null;return n&&n.from<=e+r.length&&n.more?l=r=r.updateHeight(t,e,i,n):r.updateHeight(t,e,i),n&&n.from<=o+s.length&&n.more?l=s=s.updateHeight(t,o,i,n):s.updateHeight(t,o,i),l?this.balanced(r,s):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function er(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Zn&&(n=t[e+1])instanceof Zn&&t.splice(e-1,3,new Zn(i.length+1+n.length))}class ir{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof Qn?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new Qn(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=5)&&this.addLineDeco(n,r,s)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new Qn(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new Zn(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof Qn)return t;let e=new Qn(0,-1);return this.nodes.push(e),e}addBlock(t){var e;this.enterLine();let i=null===(e=t.deco)||void 0===e?void 0:e.type;i!=Qe.WidgetAfter||this.isCovered||this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,i!=Qe.WidgetBefore&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof Qn||this.isCovered?(this.writtenToi.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=n.overflow){let n=i.getBoundingClientRect();s=Math.max(s,n.left),o=Math.min(o,n.right),l=Math.max(l,n.top),h=e==t.parentNode?n.bottom:Math.min(h,n.bottom)}e="absolute"==n.position||"fixed"==n.position?i.offsetParent:i.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:s-i.left,right:Math.max(s,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,h)-(i.top+e)}}function sr(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class or{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i"function"!=typeof t&&"cm-lineWrapping"==t.class);this.heightOracle=new Kn(e),this.stateDeco=t.facet(Ti).filter(t=>"function"!=typeof t),this.heightMap=Yn.empty().applyChanges(this.stateDeco,n.empty,this.heightOracle.setDoc(t.doc),[new Ii(0,0,0,t.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ze.set(this.lineGaps.map(t=>t.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some(({from:t,to:e})=>n>=t&&n<=e)){let{from:e,to:i}=this.lineBlockAt(n);t.push(new ar(e,i))}}this.viewports=t.sort((t,e)=>t.from-e.from),this.scaler=this.heightMap.height<=7e6?dr:new pr(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(1==this.scaler.scale?t:gr(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Ti).filter(t=>"function"!=typeof t);let n=t.changedRanges,r=Ii.extendWithRanges(n,function(t,e,i){let n=new nr;return Bt.compare(t,e,i,n,0),n.changes}(i,this.stateDeco,t?t.changes:M.empty(this.state.doc.length))),s=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=s&&(t.flags|=2),o?(this.scrollAnchorPos=t.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let l=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,e));let h=!t.changes.empty||2&t.flags||l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,this.updateForViewport(),h&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(wi)&&(this.mustEnforceCursorAssoc=!0)}measure(t){let e=t.contentDOM,i=window.getComputedStyle(e),r=this.heightOracle,s=i.whiteSpace;this.defaultTextDirection="rtl"==i.direction?Wi.RTL:Wi.LTR;let o=this.heightOracle.mustRefreshForWrapping(s),l=e.getBoundingClientRect(),h=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let a=0,c=0;if(l.width&&l.height){let t=l.width/e.offsetWidth,i=l.height/e.offsetHeight;t>.995&&t<1.005&&(t=1),i>.995&&i<1.005&&(i=1),this.scaleX==t&&this.scaleY==i||(this.scaleX=t,this.scaleY=i,a|=8,o=h=!0)}let u=(parseInt(i.paddingTop)||0)*this.scaleY,f=(parseInt(i.paddingBottom)||0)*this.scaleY;this.paddingTop==u&&this.paddingBottom==f||(this.paddingTop=u,this.paddingBottom=f,a|=10),this.editorWidth!=t.scrollDOM.clientWidth&&(r.lineWrapping&&(h=!0),this.editorWidth=t.scrollDOM.clientWidth,a|=8);let d=t.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=be(t.scrollDOM);let p=(this.printing?sr:rr)(e,this.paddingTop),g=p.top-this.pixelViewport.top,m=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let v=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(v!=this.inView&&(this.inView=v,v&&(h=!0)),!this.inView&&!this.scrollTarget)return 0;let w=l.width;if(this.contentDOMWidth==w&&this.editorHeight==t.scrollDOM.clientHeight||(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,a|=8),h){let e=t.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(e)&&(o=!0),o||r.lineWrapping&&Math.abs(w-this.contentDOMWidth)>r.charWidth){let{lineHeight:i,charWidth:n,textHeight:l}=t.docView.measureTextSize();o=i>0&&r.refresh(s,i,n,l,w/n,e),o&&(t.docView.minWidth=0,a|=8)}g>0&&m>0?c=Math.max(g,m):g<0&&m<0&&(c=Math.min(g,m)),r.heightChanged=!1;for(let i of this.viewports){let s=i.from==this.viewport.from?e:t.docView.measureVisibleLineHeights(i);this.heightMap=(o?Yn.empty().applyChanges(this.stateDeco,n.empty,this.heightOracle,[new Ii(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new Un(i.from,s))}r.heightChanged&&(a|=2)}let y=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return y&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&a||y)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),a|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),a}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,r=this.heightOracle,{visibleTop:s,visibleBottom:o}=this,l=new ar(n.lineAt(s-1e3*i,Jn.ByHeight,r,0,0).from,n.lineAt(o+1e3*(1-i),Jn.ByHeight,r,0,0).to);if(e){let{head:t}=e.range;if(tl.to){let i,s=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),o=n.lineAt(t,Jn.ByPos,r,0,0);i="center"==e.y?(o.top+o.bottom)/2-s/2:"start"==e.y||"nearest"==e.y&&t=o+Math.max(10,Math.min(i,250)))&&n>s-2e3&&r>1,s=n<<1;if(this.defaultTextDirection!=Wi.LTR&&!i)return[];let o=[],l=(n,s,h,a)=>{if(s-nn&&tt.from>=h.from&&t.to<=h.to&&Math.abs(t.from-n)t.frome));if(!f){if(st.from<=s&&t.to>=s)){let t=e.moveToLineBoundary(P.cursor(s),!1,!0).head;t>n&&(s=t)}f=new or(n,s,this.gapSize(h,n,s,a))}o.push(f)};for(let t of this.viewportLines){if(t.lengtht.from&&l(t.from,r,t,e),ot.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];Bt.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some((t,i)=>t.from!=e[i].from||t.to!=e[i].to);return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||gr(this.heightMap.lineAt(t,Jn.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return gr(this.heightMap.lineAt(this.scaler.fromDOM(t),Jn.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return gr(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class ar{constructor(t,e){this.from=t,this.to=e}}function cr(t,e,i){let n=[],r=t,s=0;return Bt.spans(i,t,e,{span(){},point(t,e){t>r&&(n.push({from:r,to:t}),s+=t-r),r=e}},20),r=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:r}=e[t],s=r-i;if(n<=s)return i+n;n-=s}}function fr(t,e){let i=0;for(let{from:n,to:r}of t.ranges){if(e<=r){i+=e-n;break}i+=r-n}return i/t.total}const dr={toDOM:t=>t,fromDOM:t=>t,scale:1};class pr{constructor(t,e,i){let n=0,r=0,s=0;this.viewports=i.map(({from:i,to:r})=>{let s=e.lineAt(i,Jn.ByPos,t,0,0).top,o=e.lineAt(r,Jn.ByPos,t,0,0).bottom;return n+=o-s,{from:i,to:r,top:s,bottom:o,domTop:0,domBottom:0}}),this.scale=(7e6-n)/(e.height-n);for(let t of this.viewports)t.domTop=s+(t.top-r)*this.scale,s=t.domBottom=t.domTop+(t.bottom-t.top),r=t.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let r=egr(t,e)):t._content)}const mr=I.define({combine:t=>t.join(" ")}),vr=I.define({combine:t=>t.indexOf(!0)>-1}),wr=Gt.newName(),yr=Gt.newName(),br=Gt.newName(),xr={"&light":"."+yr,"&dark":"."+br};function kr(t,e,i){return new Gt(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,e=>{if("&"==e)return t;if(!i||!i[e])throw new RangeError("Unsupported selector: "+e);return i[e]}):t+" "+e})}const Sr=kr("."+wr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:'url(\'data:image/svg+xml,\')',backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},xr);class Ar{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(Mt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+="￿"}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let t=this.text.length;this.readNode(n);let r=n.nextSibling;if(r==e)break;let s=Se.get(n),o=Se.get(r);(s&&o?s.breakAfter:(s?s.breakAfter:Mr(n))||Mr(r)&&("BR"!=n.nodeName||n.cmIgnore)&&this.text.length>t)&&this.lineBreak(),n=r}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let r,s=-1,o=1;if(this.lineSeparator?(s=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(r=n.exec(e))&&(s=r.index,o=r[0].length),this.append(e.slice(i,s<0?e.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=o-1);i=s+o}}readNode(t){if(t.cmIgnore)return;let e=Se.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+Math.min(e,i.offset))}}function Mr(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class Cr{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class Or{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let{impreciseHead:r,impreciseAnchor:s}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=r||s?[]:function(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}=t.observer.selectionRange;i&&(e.push(new Cr(i,n)),r==i&&s==n||e.push(new Cr(r,s)));return e}(t),i=new Ar(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=function(t,e){if(0==t.length)return null;let i=t[0].pos,n=2==t.length?t[1].pos:i;return i>-1&&n>-1?P.single(i+e,n+e):null}(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=r&&r.node==e.focusNode&&r.offset==e.focusOffset||!re(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),n=s&&s.node==e.anchorNode&&s.offset==e.anchorOffset||!re(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=P.single(n,i)}}}function Dr(t,e){let i,{newSel:r}=e,s=t.state.selection.main,o=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:r,to:l}=e.bounds,h=s.from,a=null;(8===o||Ve.android&&e.text.length0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if("end"==n){let t=Math.max(0,s-Math.min(o,l));i-=o+t-s}if(o=o?s-i:0,l=s+(l-o),o=s}else if(l=l?s-i:0,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}(t.state.doc.sliceString(r,l,"￿"),e.text,h-r,a);c&&(Ve.chrome&&13==o&&c.toB==c.from+2&&"￿￿"==e.text.slice(c.from,c.toB)&&c.toB--,i={from:r+c.from,to:r+c.toA,insert:n.of(e.text.slice(c.from,c.toB).split("￿"))})}else r&&(!t.hasFocus&&t.state.facet(ki)||r.main.eq(s))&&(r=null);if(!i&&!r)return!1;if(!i&&e.typeOver&&!s.empty&&r&&r.main.empty?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,s.to)}:i&&i.from>=s.from&&i.to<=s.to&&(i.from!=s.from||i.to!=s.to)&&s.to-s.from-(i.to-i.from)<=4?i={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,i.from).append(i.insert).append(t.state.doc.slice(i.to,s.to))}:(Ve.mac||Ve.android)&&i&&i.from==i.to&&i.from==s.head-1&&/^\. ?$/.test(i.insert.toString())&&"off"==t.contentDOM.getAttribute("autocorrect")?(r&&2==i.insert.length&&(r=P.single(r.main.anchor-1,r.main.head-1)),i={from:s.from,to:s.to,insert:n.of([" "])}):Ve.chrome&&i&&i.from==i.to&&i.from==s.head&&"\n "==i.insert.toString()&&t.lineWrapping&&(r&&(r=P.single(r.main.anchor-1,r.main.head-1)),i={from:s.from,to:s.to,insert:n.of([" "])}),i){if(Ve.ios&&t.inputState.flushIOSKey(t))return!0;if(Ve.android&&(i.from==s.from&&i.to==s.to&&1==i.insert.length&&2==i.insert.lines&&we(t.contentDOM,"Enter",13)||(i.from==s.from-1&&i.to==s.to&&0==i.insert.length||8==o&&i.insert.lengths.head)&&we(t.contentDOM,"Backspace",8)||i.from==s.from&&i.to==s.to+1&&0==i.insert.length&&we(t.contentDOM,"Delete",46)))return!0;let e,n=i.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let l=()=>e||(e=function(t,e,i){let n,r=t.state,s=r.selection.main;if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let i=s.frome.to?r.sliceDoc(e.to,s.to):"";n=r.replaceSelection(t.state.toText(i+e.insert.sliceString(0,void 0,t.state.lineBreak)+o))}else{let o=r.changes(e),l=i&&i.main.to<=o.newLength?i.main:void 0;if(r.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=s.to&&e.to>=s.to-10){let h,a=t.state.sliceDoc(e.from,e.to),c=i&&rn(t,i.main.head);if(c){let t=e.insert.length-(e.to-e.from);h={from:c.from,to:c.to-t}}else h=t.state.doc.lineAt(s.head);let u=s.to-e.to,f=s.to-s.from;n=r.changeByRange(i=>{if(i.from==s.from&&i.to==s.to)return{changes:o,range:l||i.map(o)};let n=i.to-u,c=n-a.length;if(i.to-i.from!=f||t.state.sliceDoc(c,n)!=a||i.to>=h.from&&i.from<=h.to)return{range:i};let d=r.changes({from:c,to:n,insert:e.insert}),p=i.to-s.to;return{changes:d,range:l?P.range(Math.max(0,l.anchor+p),Math.max(0,l.head+p)):i.map(d)}})}else n={changes:o,selection:l&&r.selection.replaceRange(l)}}let o="input.type";(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,o+=".compose",t.inputState.compositionFirstChange&&(o+=".start",t.inputState.compositionFirstChange=!1));return r.update(n,{userEvent:o,scrollIntoView:!0})}(t,i,r));return t.state.facet(gi).some(e=>e(t,i.from,i.to,n,l))||t.dispatch(l()),!0}if(r&&!r.main.eq(s)){let e=!1,i="select";return t.inputState.lastSelectionTime>Date.now()-50&&("select"==t.inputState.lastSelectionOrigin&&(e=!0),i=t.inputState.lastSelectionOrigin),t.dispatch({selection:r,scrollIntoView:e,userEvent:i}),!0}return!1}const Tr={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Er=Ve.ie&&Ve.ie_version<=11;class Br{constructor(t){this.view=t,this.active=!1,this.selectionRange=new de,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.resizeContent=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let t of e)this.queue.push(t);(Ve.ie&&Ve.ie_version<=11||Ve.ios&&t.composing)&&e.some(t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length)?this.flushSoon():this.flush()}),Er&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),"function"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver(()=>{var t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)this.view.requestMeasure()),this.resizeContent.observe(t.contentDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver(t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(ki)?i.root.activeElement!=this.dom:!se(i.dom,n))return;let r=n.anchorNode&&i.docView.nearest(n.anchorNode);r&&r.ignoreEvent(t)?e||(this.selectionChanged=!1):(Ve.ie&&Ve.ie_version<=11||Ve.android&&Ve.chrome)&&!i.state.selection.main.empty&&n.focusNode&&le(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=Ve.safari&&11==t.root.nodeType&&function(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}(this.dom.ownerDocument)==this.dom&&function(t){let e=null;function i(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),!e)return null;let n=e.startContainer,r=e.startOffset,s=e.endContainer,o=e.endOffset,l=t.docView.domAtPos(t.state.selection.main.anchor);le(l.node,l.offset,s,o)&&([n,r,s,o]=[s,o,n,r]);return{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:o}}(this.view)||ne(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=se(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let t=this.delayedAndroidKey;if(t){this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=t.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&t.force&&we(this.dom,t.key,t.keyCode)}};this.flushingAndroidKey=this.view.win.requestAnimationFrame(t)}this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let r of t){let t=this.readMutation(r);t&&(t.typeOver&&(n=!0),-1==e?({from:e,to:i}=t):(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&se(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new Or(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return!1;let i=this.view.state,n=Dr(this.view,e);return this.view.state==i&&this.view.update([]),n}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.flags|=4),"childList"==t.type){let i=Rr(e,t.previousSibling||t.target.previousSibling,-1),n=Rr(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i,n;this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resizeScroll)||void 0===i||i.disconnect(),null===(n=this.resizeContent)||void 0===n||n.disconnect();for(let t of this.scrollTargets)t.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function Rr(t,e,i){for(;e;){let n=Se.get(e);if(n&&n.parent==t)return n;let r=e.parentNode;e=r!=t.dom?r:i>0?e.nextSibling:e.previousSibling}return null}class Pr{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: fixed; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM);let{dispatch:e}=t;this.dispatchTransactions=t.dispatchTransactions||e&&(t=>t.forEach(t=>e(t,this)))||(t=>this.update(t)),this.dispatch=this.dispatch.bind(this),this._root=t.root||function(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}(t.parent)||document,this.viewState=new hr(t.state||Mt.create(t)),this.plugins=this.state.facet(Ai).map(t=>new Ci(t));for(let t of this.plugins)t.update(this);this.observer=new Br(this),this.inputState=new wn(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new en(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),t.parent&&t.parent.appendChild(this.dom)}dispatch(...t){let e=1==t.length&&t[0]instanceof pt?t:1==t.length&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e,i=!1,n=!1,r=this.state;for(let e of t){if(e.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=e.state}if(this.destroyed)return void(this.viewState.state=r);let s=this.hasFocus,o=0,l=null;t.some(t=>t.annotation(zn))?(this.inputState.notifiedFocused=s,o=1):s!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=s,l=_n(r,s),l||(o=1));let h=this.observer.delayedAndroidKey,a=null;if(h?(this.observer.clearDelayedAndroidKey(),a=this.observer.readChange(),(a&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(a=null)):this.observer.clear(),r.facet(Mt.phrases)!=this.state.facet(Mt.phrases))return this.setState(r);e=Hi.create(this,r,t),e.flags|=o;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let e of t){if(c&&(c=c.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;c=new yi(t.empty?t:P.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(bi)&&(c=t.value)}this.viewState.update(e,c),this.bidiCache=Ir.update(this.bidiCache,e.changes),e.empty||(this.updatePlugins(e),this.inputState.update(e)),i=this.docView.update(e),this.state.facet(Li)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(i,t.some(t=>t.isUserEvent("select.pointer")))}finally{this.updateState=0}if(e.startState.facet(mr)!=e.state.facet(mr)&&(this.viewState.mustMeasureContent=!0),(i||n||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!e.empty)for(let t of this.state.facet(pi))t(e);(l||a)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),a&&!Dr(this,a)&&h.force&&we(this.contentDOM,h.key,h.keyCode)})}setState(t){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=t);this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);this.viewState=new hr(t),this.plugins=t.facet(Ai).map(t=>new Ci(t)),this.pluginMap.clear();for(let t of this.plugins)t.update(this);this.docView=new en(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ai),i=t.state.facet(Ai);if(e!=i){let n=[];for(let r of i){let i=e.indexOf(r);if(i<0)n.push(new Ci(r));else{let e=this.plugins[i];e.mustUpdate=t,n.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=n,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.scrollDOM,n=i.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:s}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(s=-1),this.viewState.scrollAnchorHeight=-1;try{for(let t=0;;t++){if(s<0)if(be(i))r=-1,s=this.viewState.heightMap.height;else{let t=this.viewState.scrollAnchorAt(n);r=t.from,s=t.top}this.updateState=1;let o=this.viewState.measure(this);if(!o&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let l=[];4&o||([this.measureRequests,l]=[l,this.measureRequests]);let h=l.map(t=>{try{return t.read(this)}catch(t){return xi(this.state,t),Lr}}),a=Hi.create(this,this.state,[]),c=!1;a.flags|=o,e?e.flags|=o:e=a,this.updateState=2,a.empty||(this.updatePlugins(a),this.inputState.update(a),this.updateAttrs(),c=this.docView.update(a));for(let t=0;t1||t<-1){n+=t,i.scrollTop=n/this.scaleY,s=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(pi))t(e)}get themeClasses(){return wr+" "+(this.state.facet(vr)?br:yr)+" "+this.state.facet(mr)}updateAttrs(){let t=Hr(this,Oi,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(ki)?"true":"false",class:"cm-content",style:`${Ve.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Hr(this,Di,e);let i=this.observer.ignore(()=>{let i=Je(this.contentDOM,this.contentAttrs,e),n=Je(this.dom,this.editorAttrs,t);return i||n});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)if(t.is(Pr.announce)){e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(Li);let t=this.state.facet(Pr.cspNonce);Gt.mount(this.root,this.styleModules.concat(Sr).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(null!=t.key)for(let e=0;ee.spec==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return vn(this,t,gn(this,t,e,i))}moveByGroup(t,e){return vn(this,t,gn(this,t,e,e=>function(t,e,i){let n=t.state.charCategorizer(e),r=n(i);return t=>{let e=n(t);return r==xt.Space&&(r=e),r==e}}(this,t.head,e)))}moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let r=pn(t,e.head),s=n&&r.type==Qe.Text&&(t.lineWrapping||r.widgetLineBreaks)?t.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head):null;if(s){let e=t.dom.getBoundingClientRect(),n=t.textDirectionAt(r.from),o=t.posAtCoords({x:i==(n==Wi.LTR)?e.right-1:e.left+1,y:(s.top+s.bottom)/2});if(null!=o)return P.cursor(o,i?-1:1)}return P.cursor(i?r.to:r.from,i?-1:1)}(this,t,e,i)}moveVertically(t,e,i){return vn(this,t,function(t,e,i,n){let r=e.head,s=i?1:-1;if(r==(i?t.state.doc.length:0))return P.cursor(r,e.assoc);let o,l=e.goalColumn,h=t.contentDOM.getBoundingClientRect(),a=t.coordsAtPos(r),c=t.documentTop;if(a)null==l&&(l=a.left-h.left),o=s<0?a.top:a.bottom;else{let e=t.viewState.lineBlockAt(r);null==l&&(l=Math.min(h.right-h.left,t.defaultCharacterWidth*(r-e.from))),o=(s<0?e.top:e.bottom)+c}let u=h.left+l,f=null!=n?n:t.viewState.heightOracle.textHeight>>1;for(let i=0;;i+=10){let n=o+(f+i)*s,a=fn(t,{x:u,y:n},!1,s);if(nh.bottom||(s<0?ar))return P.cursor(a,e.assoc,void 0,l)}}(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),fn(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),r=this.bidiSpans(n);return ue(i,r[Ui.find(r,t-n.from,-1,e)].dir==Wi.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(vi)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Nr)return Qi(t.length);let e,i=this.textDirectionAt(t.from);for(let n of this.bidiCache)if(n.from==t.from&&n.dir==i&&(n.fresh||Gi(n.isolates,e=Ri(this,t.from,t.to))))return n.order;e||(e=Ri(this,t.from,t.to));let n=Xi(t.text,i,e);return this.bidiCache.push(new Ir(t.from,t.to,i,e,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||Ve.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{me(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return bi.of(new yi("number"==typeof t?P.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}static domEventHandlers(t){return Mi.define(()=>({}),{eventHandlers:t})}static theme(t,e){let i=Gt.newName(),n=[mr.of(i),Li.of(kr("."+i,t))];return e&&e.dark&&n.push(vr.of(!0)),n}static baseTheme(t){return Y.lowest(Li.of(kr("."+wr,t,xr)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&Se.get(i)||Se.get(t);return(null===(e=null==n?void 0:n.rootView)||void 0===e?void 0:e.view)||null}}Pr.styleModule=Li,Pr.inputHandler=gi,Pr.focusChangeEffect=mi,Pr.perLineTextDirection=vi,Pr.exceptionSink=di,Pr.updateListener=pi,Pr.editable=ki,Pr.mouseSelectionStyle=fi,Pr.dragMovesSelection=ui,Pr.clickAddsSelectionRange=ci,Pr.decorations=Ti,Pr.atomicRanges=Ei,Pr.bidiIsolatedRanges=Bi,Pr.scrollMargins=Pi,Pr.darkTheme=vr,Pr.cspNonce=I.define({combine:t=>t.length?t[0]:""}),Pr.contentAttributes=Di,Pr.editorAttributes=Oi,Pr.lineWrapping=Pr.contentAttributes.of({class:"cm-lineWrapping"}),Pr.announce=dt.define();const Nr=4096,Lr={};class Ir{constructor(t,e,i,n,r,s){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=r,this.order=s}static update(t,e){if(e.empty&&!t.some(t=>t.fresh))return t;let i=[],n=t.length?t[t.length-1].dir:Wi.LTR;for(let r=Math.max(0,t.length-10);r=0;r--){let e=n[r],s="function"==typeof e?e(t):e;s&&Ke(s,i)}return i}const Wr=Ve.mac?"mac":Ve.windows?"win":Ve.linux?"linux":"key";function Vr(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}const Fr=Y.default(Pr.domEventHandlers({keydown:(t,e)=>$r(qr(e.state),t,e,"editor")})),zr=I.define({enables:Fr}),_r=new WeakMap;function qr(t){let e=t.facet(zr),i=_r.get(e);return i||_r.set(e,i=function(t,e=Wr){let i=Object.create(null),n=Object.create(null),r=(t,e)=>{let i=n[t];if(null==i)n[t]=e;else if(i!=e)throw new Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},s=(t,n,s,o,l)=>{var h,a;let c=i[t]||(i[t]=Object.create(null)),u=n.split(/ (?!$)/).map(t=>function(t,e){const i=t.split(/-(?!$)/);let n,r,s,o,l=i[i.length-1];"Space"==l&&(l=" ");for(let t=0;t{let n=jr={view:e,prefix:i,scope:t};return setTimeout(()=>{jr==n&&(jr=null)},4e3),!0}]})}let f=u.join(" ");r(f,!1);let d=c[f]||(c[f]={preventDefault:!1,stopPropagation:!1,run:(null===(a=null===(h=c._any)||void 0===h?void 0:h.run)||void 0===a?void 0:a.slice())||[]});s&&d.run.push(s),o&&(d.preventDefault=!0),l&&(d.stopPropagation=!0)};for(let n of t){let t=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));t._any||(t._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let e in t)t[e].run.push(n.any)}let r=n[e]||n.key;if(r)for(let e of t)s(e,r,n.run,n.preventDefault,n.stopPropagation),n.shift&&s(e,"Shift-"+r,n.shift,n.preventDefault,n.stopPropagation)}return i}(e.reduce((t,e)=>t.concat(e),[]))),i}let jr=null;function $r(t,e,i,n){let r=function(t){var e=!(Zt&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||te&&t.shiftKey&&t.key&&1==t.key.length||"Unidentified"==t.key)&&t.key||(t.shiftKey?Qt:Xt)[t.keyCode]||t.key||"Unidentified";return"Esc"==e&&(e="Escape"),"Del"==e&&(e="Delete"),"Left"==e&&(e="ArrowLeft"),"Up"==e&&(e="ArrowUp"),"Right"==e&&(e="ArrowRight"),"Down"==e&&(e="ArrowDown"),e}(e),s=x(b(r,0))==r.length&&" "!=r,o="",l=!1,h=!1,a=!1;jr&&jr.view==i&&jr.scope==n&&(o=jr.prefix+" ",xn.indexOf(e.keyCode)<0&&(h=!0,jr=null));let c,u,f=new Set,d=t=>{if(t){for(let n of t.run)if(!f.has(n)&&(f.add(n),n(i,e)))return t.stopPropagation&&(a=!0),!0;t.preventDefault&&(t.stopPropagation&&(a=!0),h=!0)}return!1},p=t[n];return p&&(d(p[o+Vr(r,e,!s)])?l=!0:s&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Ve.windows&&e.ctrlKey&&e.altKey)&&(c=Xt[e.keyCode])&&c!=r?(d(p[o+Vr(c,e,!0)])||e.shiftKey&&(u=Qt[e.keyCode])!=r&&u!=c&&d(p[o+Vr(u,e,!1)]))&&(l=!0):s&&e.shiftKey&&d(p[o+Vr(r,e,!0)])&&(l=!0),!l&&d(p._any)&&(l=!0)),h&&(l=!0),l&&a&&e.stopPropagation(),l}const Kr=!Ve.ios;const Ur={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};Kr&&(Ur[".cm-line"].caretColor="transparent !important");const Gr=I.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function Jr(t,e){let i=t.plugin(Yr),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const Yr=Mi.fromClass(class{constructor(t){this.input=t.state.facet(Zr),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(e=>e(t));let e=t.state.facet(Gr);this.top=new Xr(t,!0,e.topContainer),this.bottom=new Xr(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(t){let e=t.state.facet(Gr);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Xr(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Xr(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Zr);if(i!=this.input){let e=i.filter(t=>t),n=[],r=[],s=[],o=[];for(let i of e){let e,l=this.specs.indexOf(i);l<0?(e=i(t.view),o.push(e)):(e=this.panels[l],e.update&&e.update(t)),n.push(e),(e.top?r:s).push(e)}this.specs=e,this.panels=n,this.top.sync(r),this.bottom.sync(s);for(let t of o)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}else for(let e of this.panels)e.update&&e.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Pr.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});class Xr{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(0==this.panels.length)return void(this.dom&&(this.dom.remove(),this.dom=void 0));if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=Qr(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=Qr(t)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(this.container&&this.classes!=this.view.themeClasses){for(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}}function Qr(t){let e=t.nextSibling;return t.remove(),e}const Zr=I.define({enables:Yr});class ts extends Ot{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}ts.prototype.elementClass="",ts.prototype.toDOM=void 0,ts.prototype.mapMode=S.TrackBefore,ts.prototype.startSide=ts.prototype.endSide=-1,ts.prototype.point=!0;const es=I.define(),is=I.define();const ns=I.define({combine:t=>t.some(t=>t)});function rs(t){let e=[ss];return t&&!1===t.fixed&&e.push(ns.of(!0)),e}const ss=Mi.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(is).map(e=>new as(t,e));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!t.state.facet(ns),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<.8*(i.to-i.from))}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(ns)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Bt.iter(this.view.state.facet(es),this.view.viewport.from),n=[],r=this.gutters.map(t=>new hs(t,this.view.viewport,-this.view.documentPadding.top));for(let t of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(t.type)){let e=!0;for(let s of t.type)if(s.type==Qe.Text&&e){ls(i,n,s.from);for(let t of r)t.line(this.view,s,n);e=!1}else if(s.widget)for(let t of r)t.widget(this.view,s)}else if(t.type==Qe.Text){ls(i,n,t.from);for(let e of r)e.line(this.view,t,n)}else if(t.widget)for(let e of r)e.widget(this.view,t);for(let t of r)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(is),i=t.state.facet(is),n=t.docChanged||t.heightChanged||t.viewportChanged||!Bt.eq(t.startState.facet(es),t.state.facet(es),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(n=!0);else{n=!0;let r=[];for(let n of i){let i=e.indexOf(n);i<0?r.push(new as(this.view,n)):(this.gutters[i].update(t),r.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),r.indexOf(t)<0&&t.destroy();for(let t of r)this.dom.appendChild(t.dom);this.gutters=r}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Pr.scrollMargins.of(e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==Wi.LTR?{left:i.dom.offsetWidth*e.scaleX}:{right:i.dom.offsetWidth*e.scaleX}:null})});function os(t){return Array.isArray(t)?t:[t]}function ls(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class hs{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=Bt.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,r=e.top-this.height;if(this.i==n.elements.length){let s=new cs(t,e.height,r,i);n.elements.push(s),n.dom.appendChild(s.dom)}else n.elements[this.i].update(t,e.height,r,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];ls(this.cursor,n,e.from),i.length&&(n=n.concat(i));let r=this.gutter.config.lineMarker(t,e,n);r&&n.unshift(r);let s=this.gutter;(0!=n.length||s.config.renderEmptyElements)&&this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e);i&&this.addElement(t,e,[i])}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class as{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,n=>{let r,s=n.target;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let t=s.getBoundingClientRect();r=(t.top+t.bottom)/2}else r=n.clientY;let o=t.lineBlockAtHeight(r-t.documentTop);e.domEventHandlers[i](t,o,n)&&n.preventDefault()});this.markers=os(e.markers(t)),e.initialSpacer&&(this.spacer=new cs(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=os(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!Bt.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}}class cs{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e/t.scaleY+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i/t.scaleY+"px":""),function(t,e){if(t.length!=e.length)return!1;for(let i=0;iCt(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[t],r=e[t];i[t]=n?(t,e,i)=>n(t,e,i)||r(t,e,i):r}return i}})});class ds extends ts{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function ps(t,e){return t.state.facet(fs).formatNumber(e,t.state)}const gs=is.compute([fs],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(us),lineMarker:(t,e,i)=>i.some(t=>t.toDOM)?null:new ds(ps(t,t.state.doc.lineAt(e.from).number)),widgetMarker:()=>null,lineMarkerChange:t=>t.startState.facet(fs)!=t.state.facet(fs),initialSpacer:t=>new ds(ps(t,ms(t.state.doc.lines))),updateSpacer(t,e){let i=ps(e.view,ms(e.view.state.doc.lines));return i==t.number?t:new ds(i)},domEventHandlers:t.facet(fs).domEventHandlers}));function ms(t){let e=9;for(;e0&&void 0!==arguments[0]?arguments[0]:this.defaultExtensions;this.state=Mt.create({doc:this.$textarea.textSelection("getContents"),extensions:e}),this.view=new Pr({state:this.state,parent:this.$textarea.parent()[0]}),this.$textarea.hide(),this.$textarea[0].form&&this.$textarea[0].form.addEventListener("submit",(function(){t.$textarea.val(t.view.state.doc.toString())})),$(this.view.dom).textSelection("register",this.cmTextSelection),this.$textarea.textSelection("register",this.cmTextSelection),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}},{key:"logUsage",value:function(t){var e=Object.assign({session_token:mw.user.sessionId(),user_id:mw.user.getId()},t),i=mw.config.get("wgUserEditCountBucket");null!==i&&(e.user_edit_count_bucket=i),mw.track("event.CodeMirrorUsage",e)}},{key:"setCodeMirrorPreference",value:function(t){mw.user.isNamed()&&((new mw.Api).saveOption("usecodemirror",t?1:0),mw.user.options.set("usecodemirror",t?1:0))}},{key:"cmTextSelection",get:function(){var t=this,e=$(this.view.dom);return{getContents:function(){return t.view.state.doc.toString()},setContents:function(i){return t.view.dispatch({changes:{from:0,to:t.view.state.doc.length,insert:i}}),e},getSelection:function(){return t.view.state.sliceDoc(t.view.state.selection.main.from,t.view.state.selection.main.to)},setSelection:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{start:0,end:0};return t.view.dispatch({selection:{anchor:i.start,head:i.end||i.start}}),t.view.focus(),e},replaceSelection:function(i){return t.view.dispatch(t.view.state.replaceSelection(i)),e},getCaretPosition:function(e){return e.startAndEnd?[t.view.state.selection.main.from,t.view.state.selection.main.to]:t.view.state.selection.main.head},scrollToCaretPosition:function(){return t.view.dispatch({effects:Pr.scrollIntoView(t.view.state.selection.main.head)}),e}}}}])&&ws(e.prototype,i),n&&ws(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();const bs=1024;let xs=0;class ks{constructor(t,e){this.from=t,this.to=e}}class Ss{constructor(t={}){this.id=xs++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=Cs.match(t)),e=>{let i=t(e);return void 0===i?null:[this,i]}}}Ss.closedBy=new Ss({deserialize:t=>t.split(" ")}),Ss.openedBy=new Ss({deserialize:t=>t.split(" ")}),Ss.group=new Ss({deserialize:t=>t.split(" ")}),Ss.contextHash=new Ss({perNode:!0}),Ss.lookAhead=new Ss({perNode:!0}),Ss.mounted=new Ss({perNode:!0});class As{constructor(t,e,i){this.tree=t,this.overlay=e,this.parser=i}static get(t){return t&&t.props&&t.props[Ss.mounted.id]}}const Ms=Object.create(null);class Cs{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):Ms,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new Cs(t.name||"",e,t.id,i);if(t.props)for(let i of t.props)if(Array.isArray(i)||(i=i(n)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[i[0].id]=i[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(Ss.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return t=>{for(let i=t.prop(Ss.group),n=-1;n<(i?i.length:0);n++){let r=e[n<0?t.name:i[n]];if(r)return r}}}}Cs.none=new Cs("",Object.create(null),0,8);const Os=new WeakMap,Ds=new WeakMap;var Ts;!function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"}(Ts||(Ts={}));class Es{constructor(t,e,i,n,r){if(this.type=t,this.children=e,this.positions=i,this.length=n,this.props=null,r&&r.length){this.props=Object.create(null);for(let[t,e]of r)this.props["number"==typeof t?t:t.id]=e}}toString(){let t=As.get(this);if(t&&!t.overlay)return t.tree.toString();let e="";for(let t of this.children){let i=t.toString();i&&(e&&(e+=","),e+=i)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(e.length?"("+e+")":""):e}cursor(t=0){return new qs(this.topNode,t)}cursorAt(t,e=0,i=0){let n=Os.get(this)||this.topNode,r=new qs(n);return r.moveTo(t,e),Os.set(this,r._tree),r}get topNode(){return new Is(this,0,0,null)}resolve(t,e=0){let i=Ns(Os.get(this)||this.topNode,t,e,!1);return Os.set(this,i),i}resolveInner(t,e=0){let i=Ns(Ds.get(this)||this.topNode,t,e,!0);return Ds.set(this,i),i}resolveStack(t,e=0){return function(t,e,i){let n=t.resolveInner(e,i),r=null;for(let t=n instanceof Is?n:n.context.parent;t;t=t.parent)if(t.index<0){let s=t.parent;(r||(r=[n])).push(s.resolve(e,i)),t=s}else{let s=As.get(t.tree);if(s&&s.overlay&&s.overlay[0].from<=e&&s.overlay[s.overlay.length-1].to>=e){let o=new Is(s.tree,s.overlay[0].from+t.from,0,null);(r||(r=[n])).push(Ns(o,e,i,!1))}}return r?zs(r):n}(this,t,e)}iterate(t){let{enter:e,leave:i,from:n=0,to:r=this.length}=t,s=t.mode||0,o=(s&Ts.IncludeAnonymous)>0;for(let t=this.cursor(s|Ts.IncludeAnonymous);;){let s=!1;if(t.from<=r&&t.to>=n&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;s=!0}for(;s&&i&&(o||!t.type.isAnonymous)&&i(t),!t.nextSibling();){if(!t.parent())return;s=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Us(Cs.none,this.children,this.positions,0,this.children.length,0,this.length,(t,e,i)=>new Es(this.type,t,e,i,this.propValues),t.makeTree||((t,e,i)=>new Es(Cs.none,t,e,i)))}static build(t){return function(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:r=bs,reused:s=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Bs(i,i.length):i,h=n.types,a=0,c=0;function u(t,e,i,g,m){let{id:v,start:w,end:y,size:b}=l,x=c;for(;b<0;){if(l.next(),-1==b){let e=s[v];return i.push(e),void g.push(w-t)}if(-3==b)return void(a=v);if(-4==b)return void(c=v);throw new RangeError("Unrecognized record size: "+b)}let k,S,A=h[v],M=w-t;if(y-w<=r&&(S=function(t,e){let i=l.fork(),n=0,s=0,h=0,a=i.end-r,c={size:0,start:0,skip:0};t:for(let r=i.pos-t;i.pos>r;){let t=i.size;if(i.id==e&&t>=0){c.size=n,c.start=s,c.skip=h,h+=4,n+=4,i.next();continue}let l=i.pos-t;if(t<0||l=o?4:0,f=i.start;for(i.next();i.pos>l;){if(i.size<0){if(-3!=i.size)break t;u+=4}else i.id>=o&&(u+=4);i.next()}s=f,n+=t,h+=u}(e<0||n==t)&&(c.size=n,c.start=s,c.skip=h);return c.size>4?c:void 0}(l.pos-e,m))){let e=new Uint16Array(S.size-S.skip),i=l.pos-S.size,r=e.length;for(;l.pos>i;)r=p(S.start,e,r);k=new Rs(e,y-S.start,n),M=S.start-t}else{let t=l.pos-b;l.next();let e=[],i=[],n=v>=o?v:-1,s=0,h=y;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=h-r&&(f(e,i,w,s,l.end,h,n,x),s=e.length,h=l.end),l.next()):u(w,t,e,i,n);if(n>=0&&s>0&&s-1&&s>0){let t=function(t){return(e,i,n)=>{let r,s,o=0,l=e.length-1;if(l>=0&&(r=e[l])instanceof Es){if(!l&&r.type==t&&r.length==n)return r;(s=r.prop(Ss.lookAhead))&&(o=i[l]+r.length+s)}return d(t,e,i,n,o)}}(A);k=Us(A,e,i,0,e.length,0,y-w,t,t)}else k=d(A,e,i,y-w,x-y)}i.push(k),g.push(M)}function f(t,e,i,r,s,o,l,h){let a=[],c=[];for(;t.length>r;)a.push(t.pop()),c.push(e.pop()+i-s);t.push(d(n.types[l],a,c,o-s,h-o)),e.push(s-i)}function d(t,e,i,n,r=0,s){if(a){let t=[Ss.contextHash,a];s=s?[t].concat(s):[t]}if(r>25){let t=[Ss.lookAhead,r];s=s?[t].concat(s):[t]}return new Es(t,e,i,n,s)}function p(t,e,i){let{id:n,start:r,end:s,size:h}=l;if(l.next(),h>=0&&n4){let n=l.pos-(h-4);for(;l.pos>n;)i=p(t,e,i)}e[--i]=o,e[--i]=s-t,e[--i]=r-t,e[--i]=n}else-3==h?a=n:-4==h&&(c=n);return i}let g=[],m=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,g,m,-1);let v=null!==(e=t.length)&&void 0!==e?e:g.length?m[0]+g[0].length:0;return new Es(h[t.topID],g.reverse(),m.reverse(),v)}(t)}}Es.empty=new Es(Cs.none,[],[],0);class Bs{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Bs(this.buffer,this.index)}}class Rs{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Cs.none}toString(){let t=[];for(let e=0;e0));l=s[l+3]);return o}slice(t,e,i){let n=this.buffer,r=new Uint16Array(e-t),s=0;for(let o=t,l=0;o=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Ns(t,e,i,n){for(var r;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?o.length:-1;t!=h;t+=e){let h=o[t],a=l[t]+s.from;if(Ps(n,i,a,a+h.length))if(h instanceof Rs){if(r&Ts.ExcludeBuffers)continue;let o=h.findChild(0,h.buffer.length,e,i-a,n);if(o>-1)return new Fs(new Vs(s,h,t,a),null,o)}else if(r&Ts.IncludeAnonymous||!h.type.isAnonymous||js(h)){let o;if(!(r&Ts.IgnoreMounts)&&(o=As.get(h))&&!o.overlay)return new Is(o.tree,a,t,s);let l=new Is(h,a,t,s);return r&Ts.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?h.children.length-1:0,e,i,n)}}if(r&Ts.IncludeAnonymous||!s.type.isAnonymous)return null;if(t=s.index>=0?s.index+e:e<0?-1:s._parent._tree.children.length,s=s._parent,!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,i=0){let n;if(!(i&Ts.IgnoreOverlays)&&(n=As.get(this._tree))&&n.overlay){let i=t-this.from;for(let{from:t,to:r}of n.overlay)if((e>0?t<=i:t=i:r>i))return new Is(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Hs(t,e,i,n){let r=t.cursor(),s=[];if(!r.firstChild())return s;if(null!=i)for(;!r.type.is(i);)if(!r.nextSibling())return s;for(;;){if(null!=n&&r.type.is(n))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return null==n?s:[]}}function Ws(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class Vs{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class Fs extends Ls{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new Fs(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,i=0){if(i&Ts.ExcludeBuffers)return null;let{buffer:n}=this.context,r=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new Fs(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new Fs(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new Fs(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,r=i.buffer[this.index+3];if(r>n){let s=i.buffer[this.index+1];t.push(i.slice(n,r,s)),e.push(0)}return new Es(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function zs(t){if(!t.length)return null;if(1==t.length)return t[0];let e=0,i=t[0];for(let n=1;ni.from||r.to0){if(this.index-1)for(let n=e+t,r=t<0?-1:i._tree.children.length;n!=r;n+=t){let t=i._tree.children[n];if(this.mode&Ts.IncludeAnonymous||t instanceof Rs||!t.type.isAnonymous||js(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let s=t;s;s=s._parent)if(s.index==n){if(n==this.index)return s;e=s,i=r+1;break t}n=this.stack[--r]}for(let t=i;t=0;r--){if(r<0)return Ws(this.node,t,n);let s=i[e.buffer[this.stack[r]]];if(!s.isAnonymous){if(t[n]&&t[n]!=s.name)return!1;n--}}return!0}}function js(t){return t.children.some(t=>t instanceof Rs||!t.type.isAnonymous||js(t))}const $s=new WeakMap;function Ks(t,e){if(!t.isAnonymous||e instanceof Rs||e.type!=t)return 1;let i=$s.get(e);if(null==i){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof Es)){i=1;break}i+=Ks(t,n)}$s.set(e,i)}return i}function Us(t,e,i,n,r,s,o,l,h){let a=0;for(let i=n;i=c)break;p+=e}if(a==r+1){if(p>c){let t=i[r];e(t.children,t.positions,0,t.children.length,n[r]+l);continue}u.push(i[r])}else{let e=n[a-1]+i[a-1].length-d;u.push(Us(t,i,n,r,a,d,e,null,h))}f.push(d+l-s)}}(e,i,n,r,0),(l||h)(u,f,o)}class Gs{constructor(t,e,i,n,r=!1,s=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(r?1:0)|(s?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],i=!1){let n=[new Gs(0,t.length,t,0,!1,i)];for(let i of e)i.to>t.length&&n.push(i);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],r=1,s=t.length?t[0]:null;for(let o=0,l=0,h=0;;o++){let a=o=i)for(;s&&s.from=e.from||c<=e.to||h){let t=Math.max(e.from,l)-h,i=Math.min(e.to,c)-h;e=t>=i?null:new Gs(t,i,e.tree,e.offset+h,o>0,!!a)}if(e&&n.push(e),s.to>c)break;s=rnew ks(t.from,t.to)):[new ks(0,0)]:[new ks(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if(t)return t}}}class Ys{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new Ss({perNode:!0});let Xs=0;class Qs{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Xs++}static define(t){if(null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let e=new Qs([],null,[]);if(e.set.push(e),t)for(let i of t.set)e.set.push(i);return e}static defineModifier(){let t=new to;return e=>e.modified.indexOf(t)>-1?e:to.get(e.base||e,e.modified.concat(t).sort((t,e)=>t.id-e.id))}}let Zs=0;class to{constructor(){this.instances=[],this.id=Zs++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(i=>{return i.base==t&&(n=e,r=i.modified,n.length==r.length&&n.every((t,e)=>t==r[e]));var n,r});if(i)return i;let n=[],r=new Qs(n,t,e);for(let t of e)t.instances.push(r);let s=function(t){let e=[[]];for(let i=0;ie.length-t.length)}(e);for(let e of t.set)if(!e.modified.length)for(let t of s)n.push(to.get(e,t));return r}}function eo(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let t of i.split(" "))if(t){let i=[],r=2,s=t;for(let e=0;;){if("..."==s&&e>0&&e+3==t.length){r=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(s);if(!n)throw new RangeError("Invalid path: "+t);if(i.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){r=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);s=t.slice(e)}let o=i.length-1,l=i[o];if(!l)throw new RangeError("Invalid path: "+t);let h=new no(n,r,o>0?i.slice(0,o):null);e[l]=h.sort(e[l])}}return io.add(e)}const io=new Ss;class no{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth{let e=r;for(let n of t)for(let t of n.set){let n=i[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}no.empty=new no([],2,null);const so=Qs.define,oo=so(),lo=so(),ho=so(lo),ao=so(lo),co=so(),uo=so(co),fo=so(co),po=so(),go=so(po),mo=so(),vo=so(),wo=so(),yo=so(wo),bo=so(),xo={comment:oo,lineComment:so(oo),blockComment:so(oo),docComment:so(oo),name:lo,variableName:so(lo),typeName:ho,tagName:so(ho),propertyName:ao,attributeName:so(ao),className:so(lo),labelName:so(lo),namespace:so(lo),macroName:so(lo),literal:co,string:uo,docString:so(uo),character:so(uo),attributeValue:so(uo),number:fo,integer:so(fo),float:so(fo),bool:so(co),regexp:so(co),escape:so(co),color:so(co),url:so(co),keyword:mo,self:so(mo),null:so(mo),atom:so(mo),unit:so(mo),modifier:so(mo),operatorKeyword:so(mo),controlKeyword:so(mo),definitionKeyword:so(mo),moduleKeyword:so(mo),operator:vo,derefOperator:so(vo),arithmeticOperator:so(vo),logicOperator:so(vo),bitwiseOperator:so(vo),compareOperator:so(vo),updateOperator:so(vo),definitionOperator:so(vo),typeOperator:so(vo),controlOperator:so(vo),punctuation:wo,separator:so(wo),bracket:yo,angleBracket:so(yo),squareBracket:so(yo),paren:so(yo),brace:so(yo),content:po,heading:go,heading1:so(go),heading2:so(go),heading3:so(go),heading4:so(go),heading5:so(go),heading6:so(go),contentSeparator:so(po),list:so(po),quote:so(po),emphasis:so(po),strong:so(po),link:so(po),monospace:so(po),strikethrough:so(po),inserted:so(),deleted:so(),changed:so(),invalid:so(),meta:bo,documentMeta:so(bo),annotation:so(bo),processingInstruction:so(bo),definition:Qs.defineModifier(),constant:Qs.defineModifier(),function:Qs.defineModifier(),standard:Qs.defineModifier(),local:Qs.defineModifier(),special:Qs.defineModifier()};ro([{tag:xo.link,class:"tok-link"},{tag:xo.heading,class:"tok-heading"},{tag:xo.emphasis,class:"tok-emphasis"},{tag:xo.strong,class:"tok-strong"},{tag:xo.keyword,class:"tok-keyword"},{tag:xo.atom,class:"tok-atom"},{tag:xo.bool,class:"tok-bool"},{tag:xo.url,class:"tok-url"},{tag:xo.labelName,class:"tok-labelName"},{tag:xo.inserted,class:"tok-inserted"},{tag:xo.deleted,class:"tok-deleted"},{tag:xo.literal,class:"tok-literal"},{tag:xo.string,class:"tok-string"},{tag:xo.number,class:"tok-number"},{tag:[xo.regexp,xo.escape,xo.special(xo.string)],class:"tok-string2"},{tag:xo.variableName,class:"tok-variableName"},{tag:xo.local(xo.variableName),class:"tok-variableName tok-local"},{tag:xo.definition(xo.variableName),class:"tok-variableName tok-definition"},{tag:xo.special(xo.variableName),class:"tok-variableName2"},{tag:xo.definition(xo.propertyName),class:"tok-propertyName tok-definition"},{tag:xo.typeName,class:"tok-typeName"},{tag:xo.namespace,class:"tok-namespace"},{tag:xo.className,class:"tok-className"},{tag:xo.macroName,class:"tok-macroName"},{tag:xo.propertyName,class:"tok-propertyName"},{tag:xo.operator,class:"tok-operator"},{tag:xo.comment,class:"tok-comment"},{tag:xo.meta,class:"tok-meta"},{tag:xo.invalid,class:"tok-invalid"},{tag:xo.punctuation,class:"tok-punctuation"}]);var ko;const So=new Ss;const Ao=new Ss;class Mo{constructor(t,e,i=[],n=""){this.data=t,this.name=n,Mt.prototype.hasOwnProperty("tree")||Object.defineProperty(Mt.prototype,"tree",{get(){return Oo(this)}}),this.parser=e,this.extension=[Io.of(this),Mt.languageData.of((t,e,i)=>{let n=Co(t,e,i),r=n.type.prop(So);if(!r)return[];let s=t.facet(r),o=n.type.prop(Ao);if(o){let r=n.resolve(e-n.from,i);for(let e of o)if(e.test(r,t)){let i=t.facet(e.facet);return"replace"==e.type?i:i.concat(s)}}return s})].concat(i)}isActiveAt(t,e,i=-1){return Co(t,e,i).type.prop(So)==this.data}findRegions(t){let e=t.facet(Io);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(t,e)=>{if(t.prop(So)==this.data)return void i.push({from:e,to:e+t.length});let r=t.prop(Ss.mounted);if(r){if(r.tree.prop(So)==this.data){if(r.overlay)for(let t of r.overlay)i.push({from:t.from+e,to:t.to+e});else i.push({from:e,to:e+t.length});return}if(r.overlay){let t=i.length;if(n(r.tree,r.overlay[0].from+e),i.length>t)return}}for(let i=0;i=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let To=null;class Eo{constructor(t,e,i=[],n,r,s,o,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=r,this.viewport=s,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new Eo(t,e,[],Es.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Do(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=Es.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Gs.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=To;To=this;try{return t()}finally{To=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Bo(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:r,viewport:s,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,i,n,r)=>e.push({fromA:t,toA:i,fromB:n,toB:r})),i=Gs.applyChanges(i,e),n=Es.empty,r=0,s={from:t.mapPos(s.from,-1),to:t.mapPos(s.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let i=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);it.from&&(this.fragments=Bo(this.fragments,i,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e)&&(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Js{createParse(e,i,n){let r=n[0].from,s=n[n.length-1].to;return{parsedPos:r,advance(){let e=To;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=s,new Es(Cs.none,[],[],s-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return To}}function Bo(t,e,i){return Gs.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class Ro{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new Ro(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Eo.create(t.facet(Io).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new Ro(i)}}Mo.state=q.define({create:Ro.init,update(t,e){for(let t of e.effects)if(t.is(Mo.setState))return t.value;return e.startState.facet(Io)!=e.state.facet(Io)?Ro.init(e.state):t.apply(e)}});let Po=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(Po=t=>{let e=-1,i=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const No="undefined"!=typeof navigator&&(null===(ko=navigator.scheduling)||void 0===ko?void 0:ko.isInputPending)?()=>navigator.scheduling.isInputPending():null,Lo=Mi.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Mo.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Mo.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=Po(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEndn+1e3,l=r.context.work(()=>No&&No()||Date.now()>s,n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:Mo.setState.of(new Ro(r.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(t=>xi(this.view.state,t)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Io=I.define({combine:t=>t.length?t[0]:null,enables:t=>[Mo.state,Lo,Pr.contentAttributes.compute([t],e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}})]});const Ho=I.define(),Wo=I.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Vo(t){let e=t.facet(Wo);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Fo(t,e){let i="",n=t.tabSize,r=t.facet(Wo)[0];if("\t"==r){for(;e>=n;)i+="\t",e-=n;r=" "}for(let t=0;t=e?function(t,e,i){let n=e.resolveStack(i),r=n.node.enterUnfinishedNodesBefore(i);if(r!=n.node){let t=[];for(let e=r;e!=n.node;e=e.parent)t.push(e);for(let e=t.length-1;e>=0;e--)n={node:t[e],next:n}}return jo(n,t,i)}(t,i,e):null}class _o{constructor(t,e={}){this.state=t,this.options=e,this.unit=Vo(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:r}=this.options;return null!=n&&n>=i.from&&n<=i.to?r&&n==t?{text:"",from:t}:(e<0?n-1&&(r+=s-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return qt(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let t=r(n);if(t>-1)return t}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const qo=new Ss;function jo(t,e,i){for(let n=t;n;n=n.next){let t=$o(n.node);if(t)return t(Uo.create(e,i,n))}return 0}function $o(t){let e=t.type.prop(qo);if(e)return e;let i,n=t.firstChild;if(n&&(i=n.type.prop(Ss.closedBy))){let e=t.lastChild,n=e&&i.indexOf(e.name)>-1;return t=>Jo(t,!0,1,void 0,n&&!function(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}(t)?e.from:void 0)}return null==t.parent?Ko:null}function Ko(){return 0}class Uo extends _o{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new Uo(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(Go(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return jo(this.context.next,this.base,this.pos)}}function Go(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function Jo(t,e,i,n,r){let s=t.textAfter,o=s.match(/^\s*/)[0].length,l=n&&s.slice(o,o+n.length)==n||r==t.pos+o,h=e?function(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let r=t.options.simulateBreak,s=t.state.doc.lineAt(i.from),o=null==r||r<=s.from?s.to:Math.min(s.to,r);for(let t=i.to;;){let r=e.childAfter(t);if(!r||r==n)return null;if(!r.type.isSkipped)return r.fromt.prop(So)==s.data:s?t=>t==s:void 0,this.style=ro(t.map(t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))})),{all:r}).style,this.module=i?new Gt(i):null,this.themeType=e.themeType}static define(t,e){return new Yo(t,e||{})}}xo.meta,xo.link,xo.heading,xo.emphasis,xo.strong,xo.strikethrough,xo.keyword,xo.atom,xo.bool,xo.url,xo.contentSeparator,xo.labelName,xo.literal,xo.inserted,xo.string,xo.deleted,xo.regexp,xo.escape,xo.string,xo.variableName,xo.variableName,xo.typeName,xo.namespace,xo.className,xo.variableName,xo.macroName,xo.propertyName,xo.comment,xo.invalid;const Xo=new Ss;function Qo(t,e,i){let n=t.prop(e<0?Ss.openedBy:Ss.closedBy);if(n)return n;if(1==t.name.length){let n=i.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[i[n+e]]}return null}function Zo(t){let e=t.type.prop(Xo);return e?e(t.node):t}function tl(t,e,i,n={}){let r=n.maxScanDistance||1e4,s=n.brackets||"()[]{}",o=Oo(t),l=o.resolveInner(e,i);for(let n=l;n;n=n.parent){let r=Qo(n.type,i,s);if(r&&n.from0?e>=o.from&&eo.from&&e<=o.to))return el(t,e,i,n,o,r,s)}}return function(t,e,i,n,r,s,o){let l=i<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),h=o.indexOf(l);if(h<0||h%2==0!=i>0)return null;let a={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),u=0;for(let t=0;!c.next().done&&t<=s;){let s=c.value;i<0&&(t+=s.length);let l=e+t*i;for(let t=i>0?0:s.length-1,e=i>0?s.length:-1;t!=e;t+=i){let e=o.indexOf(s[t]);if(!(e<0||n.resolveInner(l+t,1).type!=r))if(e%2==0==i>0)u++;else{if(1==u)return{start:a,end:{from:l+t,to:l+t+1},matched:e>>1==h>>1};u--}}i>0&&(t+=s.length)}return c.done?{start:a,matched:!1}:null}(t,e,i,o,l.type,r,s)}function el(t,e,i,n,r,s,o){let l=n.parent,h={from:r.from,to:r.to},a=0,c=null==l?void 0:l.cursor();if(c&&(i<0?c.childBefore(n.from):c.childAfter(n.to)))do{if(i<0?c.to<=n.from:c.from>=n.to){if(0==a&&s.indexOf(c.type.name)>-1&&c.from-1||(rl.push(t),console.warn(e))}function ll(t,e){let i=null;for(let n of e.split(".")){let e=t[n]||xo[n];e?"function"==typeof e?i?i=e(i):ol(n,`Modifier ${n} used at start of tag`):i?ol(n,`Tag ${n} used as modifier`):i=e:ol(n,"Unknown highlighting tag "+n)}if(!i)return 0;let n=e.replace(/ /g,"_"),r=Cs.define({id:nl.length,name:n,props:[eo({[n]:i})]});return nl.push(r),r.id}function hl(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let r=t(e,i);return!!r&&(n(i.update(r)),!0)}}const al=hl(pl,0),cl=hl(dl,0),ul=hl((t,e)=>dl(t,e,function(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=i.to<=n.to?n:t.doc.lineAt(i.to),s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=r.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:r.to})}return e}(e)),0);function fl(t,e){let i=t.languageDataAt("commentTokens",e);return i.length?i[0]:{}}function dl(t,e,i=e.selection.ranges){let n=i.map(t=>fl(e,t.from).block);if(!n.every(t=>t))return null;let r=i.map((t,i)=>function(t,{open:e,close:i},n,r){let s,o,l=t.sliceDoc(n-50,n),h=t.sliceDoc(r,r+50),a=/\s*$/.exec(l)[0].length,c=/^\s*/.exec(h)[0].length,u=l.length-a;if(l.slice(u-e.length,u)==e&&h.slice(c,c+i.length)==i)return{open:{pos:n-a,margin:a&&1},close:{pos:r+c,margin:c&&1}};r-n<=100?s=o=t.sliceDoc(n,r):(s=t.sliceDoc(n,n+50),o=t.sliceDoc(r-50,r));let f=/^\s*/.exec(s)[0].length,d=/\s*$/.exec(o)[0].length,p=o.length-d-i.length;return s.slice(f,f+e.length)==e&&o.slice(p,p+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(s.charAt(f+e.length))?1:0},close:{pos:r-d-i.length,margin:/\s/.test(o.charAt(p-1))?1:0}}:null}(e,n[i],t.from,t.to));if(2!=t&&!r.every(t=>t))return{changes:e.changes(i.map((t,e)=>r[e]?[]:[{from:t.from,insert:n[e].open+" "},{from:t.to,insert:" "+n[e].close}]))};if(1!=t&&r.some(t=>t)){let t=[];for(let e,i=0;ir&&(t==s||s>h.from)){r=h.from;let t=/^\s*/.exec(h.text)[0].length,e=t==h.length,i=h.text.slice(t,t+l.length)==l?t:-1;tt.comment<0&&(!t.empty||t.single))){let t=[];for(let{line:e,token:i,indent:r,empty:s,single:o}of n)!o&&s||t.push({from:e.from+r,insert:i+" "});let i=e.changes(t);return{changes:i,selection:e.selection.map(i,1)}}if(1!=t&&n.some(t=>t.comment>=0)){let t=[];for(let{line:e,comment:i,token:r}of n)if(i>=0){let n=e.from+i,s=n+r.length;" "==e.text[s-e.from]&&s++,t.push({from:n,to:s})}return{changes:t}}return null}const gl=ct.define(),ml=ct.define(),vl=I.define(),wl=I.define({combine:t=>Ct(t,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,n)=>t(i,n)||e(i,n)})});const yl=q.define({create:()=>Ll.empty,update(t,e){let i=e.state.facet(wl),n=e.annotation(gl);if(n){let r=e.docChanged?P.single(function(t){let e=0;return t.iterChangedRanges((t,i)=>e=i),e}(e.changes)):void 0,s=Cl.fromTransaction(e,r),o=n.side,l=0==o?t.undone:t.done;return l=s?Ol(l,l.length,i.minDepth,s):El(l,e.startState.selection),new Ll(0==o?n.rest:l,0==o?l:n.rest)}let r=e.annotation(ml);if("full"!=r&&"before"!=r||(t=t.isolate()),!1===e.annotation(pt.addToHistory))return e.changes.empty?t:t.addMapping(e.changes.desc);let s=Cl.fromTransaction(e),o=e.annotation(pt.time),l=e.annotation(pt.userEvent);return s?t=t.addChanges(s,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),"full"!=r&&"after"!=r||(t=t.isolate()),t},toJSON:t=>({done:t.done.map(t=>t.toJSON()),undone:t.undone.map(t=>t.toJSON())}),fromJSON:t=>new Ll(t.done.map(Cl.fromJSON),t.undone.map(Cl.fromJSON))});function bl(t={}){return[yl,wl.of(t),Pr.domEventHandlers({beforeinput(t,e){let i="historyUndo"==t.inputType?kl:"historyRedo"==t.inputType?Sl:null;return!!i&&(t.preventDefault(),i(e))}})]}function xl(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let r=i.field(yl,!1);if(!r)return!1;let s=r.pop(t,i,e);return!!s&&(n(s),!0)}}const kl=xl(0,!1),Sl=xl(1,!1),Al=xl(0,!0),Ml=xl(1,!0);class Cl{constructor(t,e,i,n,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=r}setSelAfter(t){return new Cl(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?void 0:t.toJSON(),mapped:null===(e=this.mapped)||void 0===e?void 0:e.toJSON(),startSelection:null===(i=this.startSelection)||void 0===i?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(t=>t.toJSON())}}static fromJSON(t){return new Cl(t.changes&&M.fromJSON(t.changes),[],t.mapped&&A.fromJSON(t.mapped),t.startSelection&&P.fromJSON(t.startSelection),t.selectionsAfter.map(P.fromJSON))}static fromTransaction(t,e){let i=Tl;for(let e of t.startState.facet(vl)){let n=e(t);n.length&&(i=i.concat(n))}return!i.length&&t.changes.empty?null:new Cl(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,Tl)}static selection(t){return new Cl(void 0,Tl,void 0,void 0,t)}}function Ol(t,e,i,n){let r=e+1>i+20?e-i-1:0,s=t.slice(r,e);return s.push(n),s}function Dl(t,e){return t.length?e.length?t.concat(e):t:e}const Tl=[];function El(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-200));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),Ol(t,t.length-1,1e9,i.setSelAfter(n)))}return[Cl.selection([e])]}function Bl(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function Rl(t,e){if(!t.length)return t;let i=t.length,n=Tl;for(;i;){let r=Pl(t[i-1],e,n);if(r.changes&&!r.changes.empty||r.effects.length){let e=t.slice(0,i);return e[i-1]=r,e}e=r.mapped,i--,n=r.selectionsAfter}return n.length?[Cl.selection(n)]:Tl}function Pl(t,e,i){let n=Dl(t.selectionsAfter.length?t.selectionsAfter.map(t=>t.map(e)):Tl,i);if(!t.changes)return Cl.selection(n);let r=t.changes.map(e),s=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(s):s;return new Cl(r,dt.mapEffects(t.effects,e),o,t.startSelection.map(s),n)}const Nl=/^(input\.type|delete)($|\.)/;class Ll{constructor(t,e,i=0,n){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new Ll(this.done,this.undone):this}addChanges(t,e,i,n,r){let s=this.done,o=s[s.length-1];return s=o&&o.changes&&!o.changes.empty&&t.changes&&(!i||Nl.test(i))&&(!o.selectionsAfter.length&&e-this.prevTimei.push(t,e)),e.iterChangedRanges((t,e,r,s)=>{for(let t=0;t=e&&r<=o&&(n=!0)}}),n}(o.changes,t.changes))||"input.type.compose"==i)?Ol(s,s.length-1,n.minDepth,new Cl(t.changes.compose(o.changes),Dl(t.effects,o.effects),o.mapped,o.startSelection,Tl)):Ol(s,s.length,n.minDepth,t),new Ll(s,Tl,e,i)}addSelection(t,e,i,n){let r=this.done.length?this.done[this.done.length-1].selectionsAfter:Tl;return r.length>0&&e-this.prevTimet.empty!=o.ranges[e].empty).length)?this:new Ll(El(this.done,t),this.undone,e,i);var s,o}addMapping(t){return new Ll(Rl(this.done,t),Rl(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null;let r=n[n.length-1];if(i&&r.selectionsAfter.length)return e.update({selection:r.selectionsAfter[r.selectionsAfter.length-1],annotations:gl.of({side:t,rest:Bl(n)}),userEvent:0==t?"select.undo":"select.redo",scrollIntoView:!0});if(r.changes){let i=1==n.length?Tl:n.slice(0,n.length-1);return r.mapped&&(i=Rl(i,r.mapped)),e.update({changes:r.changes,selection:r.startSelection,effects:r.effects,annotations:gl.of({side:t,rest:i}),filter:!1,userEvent:0==t?"undo":"redo",scrollIntoView:!0})}return null}}Ll.empty=new Ll(Tl,Tl);const Il=[{key:"Mod-z",run:kl,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Sl,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Sl,preventDefault:!0},{key:"Mod-u",run:Al,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Ml,preventDefault:!0}];function Hl(t,e){return P.create(t.ranges.map(e),t.mainIndex)}function Wl(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Vl({state:t,dispatch:e},i){let n=Hl(t.selection,i);return!n.eq(t.selection)&&(e(Wl(t,n)),!0)}function Fl(t,e){return P.cursor(e?t.to:t.from)}function zl(t,e){return Vl(t,i=>i.empty?t.moveByChar(i,e):Fl(i,e))}function _l(t){return t.textDirectionAt(t.state.selection.main.head)==Wi.LTR}const ql=t=>zl(t,!_l(t)),jl=t=>zl(t,_l(t));function $l(t,e){return Vl(t,i=>i.empty?t.moveByGroup(i,e):Fl(i,e))}"undefined"!=typeof Intl&&Intl.Segmenter;function Kl(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Ul(t,e,i){let n,r,s=Oo(t).resolveInner(e.head),o=i?Ss.closedBy:Ss.openedBy;for(let n=e.head;;){let e=i?s.childAfter(n):s.childBefore(n);if(!e)break;Kl(t,e,o)?s=e:n=i?e.to:e.from}return r=s.type.prop(o)&&(n=i?tl(t,s.from,1):tl(t,s.to,-1))&&n.matched?i?n.end.to:n.end.from:i?s.to:s.from,P.cursor(r,i?-1:1)}function Gl(t,e){return Vl(t,i=>{if(!i.empty)return Fl(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)})}const Jl=t=>Gl(t,!1),Yl=t=>Gl(t,!0);function Xl(t){let e,i=t.scrollDOM.clientHeighti.empty?t.moveVertically(i,e,n.height):Fl(i,e));if(s.eq(r.selection))return!1;if(n.selfScroll){let e=t.coordsAtPos(r.selection.main.head),o=t.scrollDOM.getBoundingClientRect(),l=o.top+n.marginTop,h=o.bottom-n.marginBottom;e&&e.top>l&&e.bottomQl(t,!1),th=t=>Ql(t,!0);function eh(t,e,i){let n=t.lineBlockAt(e.head),r=t.moveToLineBoundary(e,i);if(r.head==e.head&&r.head!=(i?n.to:n.from)&&(r=t.moveToLineBoundary(e,i,!1)),!i&&r.head==n.from&&n.length){let i=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(r=P.cursor(n.from+i))}return r}function ih(t,e,i){let n=!1,r=Hl(t.selection,e=>{let r=tl(t,e.head,-1)||tl(t,e.head,1)||e.head>0&&tl(t,e.head-1,1)||e.head{let i=e(t);return P.range(t.anchor,i.head,i.goalColumn,i.bidiLevel||void 0)});return!i.eq(t.state.selection)&&(t.dispatch(Wl(t.state,i)),!0)}function rh(t,e){return nh(t,i=>t.moveByChar(i,e))}const sh=t=>rh(t,!_l(t)),oh=t=>rh(t,_l(t));function lh(t,e){return nh(t,i=>t.moveByGroup(i,e))}function hh(t,e){return nh(t,i=>t.moveVertically(i,e))}const ah=t=>hh(t,!1),ch=t=>hh(t,!0);function uh(t,e){return nh(t,i=>t.moveVertically(i,e,Xl(t).height))}const fh=t=>uh(t,!1),dh=t=>uh(t,!0),ph=({state:t,dispatch:e})=>(e(Wl(t,{anchor:0})),!0),gh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.doc.length})),!0),mh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.selection.main.anchor,head:0})),!0),vh=({state:t,dispatch:e})=>(e(Wl(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0);function wh(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,r=n.changeByRange(n=>{let{from:r,to:s}=n;if(r==s){let n=e(r);nr&&(i="delete.forward",n=yh(t,n,!0)),r=Math.min(r,n),s=Math.max(s,n)}else r=yh(t,r,!1),s=yh(t,s,!0);return r==s?{range:n}:{changes:{from:r,to:s},range:P.cursor(r)}});return!r.changes.empty&&(t.dispatch(n.update(r,{scrollIntoView:!0,userEvent:i,effects:"delete.selection"==i?Pr.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function yh(t,e,i){if(t instanceof Pr)for(let n of t.state.facet(Pr.atomicRanges).map(e=>e(t)))n.between(e,e,(t,n)=>{te&&(e=i?n:t)});return e}const bh=(t,e)=>wh(t,i=>{let n,r,{state:s}=t,o=s.doc.lineAt(i);if(!e&&i>o.from&&ibh(t,!1),kh=t=>bh(t,!0),Sh=(t,e)=>wh(t,i=>{let n=i,{state:r}=t,s=r.doc.lineAt(n),o=r.charCategorizer(n);for(let t=null;;){if(n==(e?s.to:s.from)){n==i&&s.number!=(e?r.doc.lines:1)&&(n+=e?1:-1);break}let l=g(s.text,n-s.from,e)+s.from,h=s.text.slice(Math.min(n,l)-s.from,Math.max(n,l)-s.from),a=o(h);if(null!=t&&a!=t)break;" "==h&&n==i||(t=a),n=l}return n}),Ah=t=>Sh(t,!1),Mh=t=>wh(t,e=>{let i=t.lineBlockAt(e).to;return e=r.number){let t=e[e.length-1];t.to=s.to,t.ranges.push(n)}else e.push({from:r.from,to:s.to,ranges:[n]});i=s.number+1}return e}function Oh(t,e,i){if(t.readOnly)return!1;let n=[],r=[];for(let e of Ch(t)){if(i?e.to==t.doc.length:0==e.from)continue;let s=t.doc.lineAt(i?e.to+1:e.from-1),o=s.length+1;if(i){n.push({from:e.to,to:s.to},{from:e.from,insert:s.text+t.lineBreak});for(let i of e.ranges)r.push(P.range(Math.min(t.doc.length,i.anchor+o),Math.min(t.doc.length,i.head+o)))}else{n.push({from:s.from,to:e.from},{from:e.to,insert:t.lineBreak+s.text});for(let t of e.ranges)r.push(P.range(t.anchor-o,t.head-o))}}return!!n.length&&(e(t.update({changes:n,scrollIntoView:!0,selection:P.create(r,t.selection.mainIndex),userEvent:"move.line"})),!0)}function Dh(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of Ch(t))i?n.push({from:e.from,insert:t.doc.slice(e.from,e.to)+t.lineBreak}):n.push({from:e.to,insert:t.lineBreak+t.doc.slice(e.from,e.to)});return e(t.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Th=Eh(!1);function Eh(t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let r=e.changeByRange(i=>{let{from:r,to:s}=i,o=e.doc.lineAt(r),l=!t&&r==s&&function(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i,n=Oo(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e);return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(Ss.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}(e,r);t&&(r=s=(s<=o.to?o:e.doc.lineAt(s)).to);let h=new _o(e,{simulateBreak:r,simulateDoubleBreak:!!l}),a=zo(h,r);for(null==a&&(a=qt(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));so.from&&r{let r=[];for(let s=n.from;s<=n.to;){let o=t.doc.lineAt(s);o.number>i&&(n.empty||n.to>o.from)&&(e(o,r,n),i=o.number),s=o.to+1}let s=t.changes(r);return{changes:r,range:P.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}const Rh=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(Bh(t,(e,i)=>{i.push({from:e.from,insert:t.facet(Wo)})}),{userEvent:"input.indent"})),!0),Ph=({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(Bh(t,(e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let r=qt(n,t.tabSize),s=0,o=Fo(t,Math.max(0,r-Vo(t)));for(;sVl(t,e=>Ul(t.state,e,!_l(t))),shift:t=>nh(t,e=>Ul(t.state,e,!_l(t)))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:t=>Vl(t,e=>Ul(t.state,e,_l(t))),shift:t=>nh(t,e=>Ul(t.state,e,_l(t)))},{key:"Alt-ArrowUp",run:({state:t,dispatch:e})=>Oh(t,e,!1)},{key:"Shift-Alt-ArrowUp",run:({state:t,dispatch:e})=>Dh(t,e,!1)},{key:"Alt-ArrowDown",run:({state:t,dispatch:e})=>Oh(t,e,!0)},{key:"Shift-Alt-ArrowDown",run:({state:t,dispatch:e})=>Dh(t,e,!0)},{key:"Escape",run:({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=P.create([i.main]):i.main.empty||(n=P.create([P.cursor(i.main.head)])),!!n&&(e(Wl(t,n)),!0)}},{key:"Mod-Enter",run:Eh(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:t,dispatch:e})=>{let i=Ch(t).map(({from:e,to:i})=>P.range(e,Math.min(i+1,t.doc.length)));return e(t.update({selection:P.create(i),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:t,dispatch:e})=>{let i=Hl(t.selection,e=>{var i;let n=Oo(t).resolveInner(e.head,1);for(;!(n.from=e.to||n.to>e.to&&n.from<=e.from)&&(null===(i=n.parent)||void 0===i?void 0:i.parent);)n=n.parent;return P.range(n.to,n.from)});return e(Wl(t,i)),!0},preventDefault:!0},{key:"Mod-[",run:Ph},{key:"Mod-]",run:Rh},{key:"Mod-Alt-\\",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new _o(t,{overrideIndentation:t=>{let e=i[t];return null==e?-1:e}}),r=Bh(t,(e,r,s)=>{let o=zo(n,e.from);if(null==o)return;/\S/.test(e.text)||(o=0);let l=/^\s*/.exec(e.text)[0],h=Fo(t,o);(l!=h||s.from{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(Ch(e).map(({from:t,to:i})=>(t>0?t--:it.moveVertically(e,!0)).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:t,dispatch:e})=>ih(t,e,!1)},{key:"Mod-/",run:t=>{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=fl(t.state,i.from);return n.line?al(t):!!n.block&&ul(t)}},{key:"Alt-A",run:cl}].concat([{key:"ArrowLeft",run:ql,shift:sh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:t=>$l(t,!_l(t)),shift:t=>lh(t,!_l(t)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:t=>Vl(t,e=>eh(t,e,!_l(t))),shift:t=>nh(t,e=>eh(t,e,!_l(t))),preventDefault:!0},{key:"ArrowRight",run:jl,shift:oh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:t=>$l(t,_l(t)),shift:t=>lh(t,_l(t)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:t=>Vl(t,e=>eh(t,e,_l(t))),shift:t=>nh(t,e=>eh(t,e,_l(t))),preventDefault:!0},{key:"ArrowUp",run:Jl,shift:ah,preventDefault:!0},{mac:"Cmd-ArrowUp",run:ph,shift:mh},{mac:"Ctrl-ArrowUp",run:Zl,shift:fh},{key:"ArrowDown",run:Yl,shift:ch,preventDefault:!0},{mac:"Cmd-ArrowDown",run:gh,shift:vh},{mac:"Ctrl-ArrowDown",run:th,shift:dh},{key:"PageUp",run:Zl,shift:fh},{key:"PageDown",run:th,shift:dh},{key:"Home",run:t=>Vl(t,e=>eh(t,e,!1)),shift:t=>nh(t,e=>eh(t,e,!1)),preventDefault:!0},{key:"Mod-Home",run:ph,shift:mh},{key:"End",run:t=>Vl(t,e=>eh(t,e,!0)),shift:t=>nh(t,e=>eh(t,e,!0)),preventDefault:!0},{key:"Mod-End",run:gh,shift:vh},{key:"Enter",run:Th},{key:"Mod-a",run:({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:xh,shift:xh},{key:"Delete",run:kh},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Ah},{key:"Mod-Delete",mac:"Alt-Delete",run:t=>Sh(t,!0)},{mac:"Mod-Backspace",run:t=>wh(t,e=>{let i=t.lineBlockAt(e).from;return e>i?i:Math.max(0,e-1)})},{mac:"Mod-Delete",run:Mh}].concat([{key:"Ctrl-b",run:ql,shift:sh,preventDefault:!0},{key:"Ctrl-f",run:jl,shift:oh},{key:"Ctrl-p",run:Jl,shift:ah},{key:"Ctrl-n",run:Yl,shift:ch},{key:"Ctrl-a",run:t=>Vl(t,e=>P.cursor(t.lineBlockAt(e.head).from,1)),shift:t=>nh(t,e=>P.cursor(t.lineBlockAt(e.head).from))},{key:"Ctrl-e",run:t=>Vl(t,e=>P.cursor(t.lineBlockAt(e.head).to,-1)),shift:t=>nh(t,e=>P.cursor(t.lineBlockAt(e.head).to))},{key:"Ctrl-d",run:kh},{key:"Ctrl-h",run:xh},{key:"Ctrl-k",run:Mh},{key:"Ctrl-Alt-h",run:Ah},{key:"Ctrl-o",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:n.of(["",""])},range:P.cursor(t.from)}));return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(e=>{if(!e.empty||0==e.from||e.from==t.doc.length)return{range:e};let i=e.from,n=t.doc.lineAt(i),r=i==n.from?i-1:g(n.text,i-n.from,!1)+n.from,s=i==n.to?i+1:g(n.text,i-n.from,!0)+n.from;return{changes:{from:r,to:s,insert:t.doc.slice(i,s).append(t.doc.slice(r,i))},range:P.cursor(s)}});return!i.changes.empty&&(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:th}].map(t=>({mac:t.key,run:t.run,shift:t.shift}))));function Lh(){var t=arguments[0];"string"==typeof t&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var r=i[n];"string"==typeof r?t.setAttribute(n,r):null!=r&&(t[n]=r)}e++}for(;et.normalize("NFKD"):t=>t;class Wh{constructor(t,e,i=0,n=t.length,r,s){this.test=s,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=r?t=>r(Hh(t)):Hh,this.query=this.normalize(e)}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 b(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 i=(t=e)<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))),n=this.bufferStart+this.bufferPos;this.bufferPos+=x(e);let r=this.normalize(i);for(let t=0,e=n;;t++){let s=r.charCodeAt(t),o=this.match(s,e);if(t==r.length-1){if(o)return this.value=o,this;break}e==n&&tthis.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 t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let e=this.matchPos<=this.to&&this.re.exec(this.curLine);if(e){let i=this.curLineStart+e.index,n=i+e[0].length;if(this.matchPos=$h(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,match:e},this;t=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length=i||n.to<=e){let n=new qh(e,t.sliceString(e,i));return _h.set(t,n),n}if(n.from==e&&n.to==i)return n;let{text:r,from:s}=n;return s>e&&(r=t.sliceString(e,s)+r,s=e),n.to=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=t+1,e=this.re.exec(this.flat.text)),e){let t=this.flat.from+e.index,i=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this.matchPos=$h(this.text,i+(t==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=qh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function $h(t,e){if(e>=t.length)return e;let i,n=t.lineAt(e);for(;e=56320&&i<57344;)e++;return e}function Kh(t){let e=Lh("input",{class:"cm-textfield",name:"line",value:String(t.state.doc.lineAt(t.state.selection.main.head).number)});function i(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!i)return;let{state:n}=t,r=n.doc.lineAt(n.selection.main.head),[,s,o,l,h]=i,a=l?+l.slice(1):0,c=o?+o:r.number;if(o&&h){let t=c/100;s&&(t=t*("-"==s?-1:1)+r.number/n.doc.lines),c=Math.round(n.doc.lines*t)}else o&&s&&(c=c*("-"==s?-1:1)+r.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,c))),f=P.cursor(u.from+Math.max(0,Math.min(a,u.length)));t.dispatch({effects:[Uh.of(!1),Pr.scrollIntoView(f.from,{y:"center"})],selection:f}),t.focus()}return{dom:Lh("form",{class:"cm-gotoLine",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),t.dispatch({effects:Uh.of(!1)}),t.focus()):13==e.keyCode&&(e.preventDefault(),i())},onsubmit:t=>{t.preventDefault(),i()}},Lh("label",t.state.phrase("Go to line"),": ",e)," ",Lh("button",{class:"cm-button",type:"submit"},t.state.phrase("go")))}}"undefined"!=typeof Symbol&&(zh.prototype[Symbol.iterator]=jh.prototype[Symbol.iterator]=function(){return this});const Uh=dt.define(),Gh=q.define({create:()=>!0,update(t,e){for(let i of e.effects)i.is(Uh)&&(t=i.value);return t},provide:t=>Zr.from(t,t=>t?Kh:null)}),Jh=Pr.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}});const Yh=I.define({combine:t=>Ct(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new Ma(t),scrollToMatch:t=>Pr.scrollIntoView(t)})});class Xh{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||function(t){try{return new RegExp(t,Fh),!0}catch(t){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,(t,e)=>"n"==e?"\n":"r"==e?"\r":"t"==e?"\t":"\\")}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord}create(){return this.regexp?new ra(this):new ta(this)}getCursor(t,e=0,i){let n=t.doc?t:Mt.create({doc:t});return null==i&&(i=n.doc.length),this.regexp?ea(this,n,e,i):Zh(this,n,e,i)}}class Qh{constructor(t){this.spec=t}}function Zh(t,e,i,n){return new Wh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:t=>t.toLowerCase(),t.wholeWord?(r=e.doc,s=e.charCategorizer(e.selection.main.head),(t,e,i,n)=>((n>t||n+i.length=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=Zh(this.spec,t,Math.max(0,e-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}function ea(t,e,i,n){return new zh(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?(r=e.charCategorizer(e.selection.main.head),(t,e,i)=>!i[0].length||(r(ia(i.input,i.index))!=xt.Word||r(na(i.input,i.index))!=xt.Word)&&(r(na(i.input,i.index+i[0].length))!=xt.Word||r(ia(i.input,i.index+i[0].length))!=xt.Word)):void 0},i,n);var r}function ia(t,e){return t.slice(g(t,e,!1),e)}function na(t,e){return t.slice(e,g(t,e))}class ra extends Qh{nextMatch(t,e,i){let n=ea(this.spec,t,i,t.doc.length).next();return n.done&&(n=ea(this.spec,t,0,e).next()),n.done?null:n.value}prevMatchInRange(t,e,i){for(let n=1;;n++){let r=Math.max(e,i-1e4*n),s=ea(this.spec,t,r,i),o=null;for(;!s.next().done;)o=s.value;if(o&&(r==e||o.from>r+10))return o;if(r==e)return null}}prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchInRange(t,i,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace.replace(/\$([$&\d+])/g,(e,i)=>"$"==i?"$":"&"==i?t.match[0]:"0"!=i&&+i=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let r=ea(this.spec,t,Math.max(0,e-250),Math.min(i+250,t.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}const sa=dt.define(),oa=dt.define(),la=q.define({create:t=>new ha(ya(t).create(),null),update(t,e){for(let i of e.effects)i.is(sa)?t=new ha(i.value.create(),t.panel):i.is(oa)&&(t=new ha(t.query,i.value?wa:null));return t},provide:t=>Zr.from(t,t=>t.panel)});class ha{constructor(t,e){this.query=t,this.panel=e}}const aa=Ze.mark({class:"cm-searchMatch"}),ca=Ze.mark({class:"cm-searchMatch cm-searchMatch-selected"}),ua=Mi.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(la))}update(t){let e=t.state.field(la);(e!=t.startState.field(la)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ze.none;let{view:i}=this,n=new Rt;for(let e=0,r=i.visibleRanges,s=r.length;er[e+1].from-500;)l=r[++e].to;t.highlight(i.state,o,l,(t,e)=>{let r=i.state.selection.ranges.some(i=>i.from==t&&i.to==e);n.add(t,e,r?ca:aa)})}return n.finish()}},{decorations:t=>t.decorations});function fa(t){return e=>{let i=e.state.field(la,!1);return i&&i.query.spec.valid?t(e,i):ka(e)}}const da=fa((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let r=P.single(n.from,n.to),s=t.state.facet(Yh);return t.dispatch({selection:r,effects:[Da(t,n),s.scrollToMatch(r.main,t)],userEvent:"select.search"}),xa(t),!0}),pa=fa((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,r=e.prevMatch(i,n,n);if(!r)return!1;let s=P.single(r.from,r.to),o=t.state.facet(Yh);return t.dispatch({selection:s,effects:[Da(t,r),o.scrollToMatch(s.main,t)],userEvent:"select.search"}),xa(t),!0}),ga=fa((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!(!i||!i.length)&&(t.dispatch({selection:P.create(i.map(t=>P.range(t.from,t.to))),userEvent:"select.search.matches"}),!0)}),ma=fa((t,{query:e})=>{let{state:i}=t,{from:n,to:r}=i.selection.main;if(i.readOnly)return!1;let s=e.nextMatch(i,n,n);if(!s)return!1;let o,l,h=[],a=[];if(s.from==n&&s.to==r&&(l=i.toText(e.getReplacement(s)),h.push({from:s.from,to:s.to,insert:l}),s=e.nextMatch(i,s.from,s.to),a.push(Pr.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+"."))),s){let e=0==h.length||h[0].from>=s.to?0:s.to-s.from-l.length;o=P.single(s.from-e,s.to-e),a.push(Da(t,s)),a.push(i.facet(Yh).scrollToMatch(o.main,t))}return t.dispatch({changes:h,selection:o,effects:a,userEvent:"input.replace"}),!0}),va=fa((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map(t=>{let{from:i,to:n}=t;return{from:i,to:n,insert:e.getReplacement(t)}});if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:Pr.announce.of(n),userEvent:"input.replace.all"}),!0});function wa(t){return t.state.facet(Yh).createPanel(t)}function ya(t,e){var i,n,r,s,o;let l=t.selection.main,h=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!h)return e;let a=t.facet(Yh);return new Xh({search:(null!==(i=null==e?void 0:e.literal)&&void 0!==i?i:a.literal)?h:h.replace(/\n/g,"\\n"),caseSensitive:null!==(n=null==e?void 0:e.caseSensitive)&&void 0!==n?n:a.caseSensitive,literal:null!==(r=null==e?void 0:e.literal)&&void 0!==r?r:a.literal,regexp:null!==(s=null==e?void 0:e.regexp)&&void 0!==s?s:a.regexp,wholeWord:null!==(o=null==e?void 0:e.wholeWord)&&void 0!==o?o:a.wholeWord})}function ba(t){let e=Jr(t,wa);return e&&e.dom.querySelector("[main-field]")}function xa(t){let e=ba(t);e&&e==t.root.activeElement&&e.select()}const ka=t=>{let e=t.state.field(la,!1);if(e&&e.panel){let i=ba(t);if(i&&i!=t.root.activeElement){let n=ya(t.state,e.query.spec);n.valid&&t.dispatch({effects:sa.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[oa.of(!0),e?sa.of(ya(t.state,e.query.spec)):dt.appendConfig.of(Ea)]});return!0},Sa=t=>{let e=t.state.field(la,!1);if(!e||!e.panel)return!1;let i=Jr(t,wa);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:oa.of(!1)}),!0},Aa=[{key:"Mod-f",run:ka,scope:"editor search-panel"},{key:"F3",run:da,shift:pa,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:da,shift:pa,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Sa,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:r}=i.main,s=[],o=0;for(let e=new Wh(t.doc,t.sliceDoc(n,r));!e.next().done;){if(s.length>1e3)return!1;e.value.from==n&&(o=s.length),s.push(P.range(e.value.from,e.value.to))}return e(t.update({selection:P.create(s,o),userEvent:"select.search.matches"})),!0}},{key:"Alt-g",run:t=>{let e=Jr(t,Kh);if(!e){let i=[Uh.of(!0)];null==t.state.field(Gh,!1)&&i.push(dt.appendConfig.of([Gh,Jh])),t.dispatch({effects:i}),e=Jr(t,Kh)}return e&&e.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some(t=>t.from===t.to))return(({state:t,dispatch:e})=>{let{selection:i}=t,n=P.create(i.ranges.map(e=>t.wordAt(e.head)||P.cursor(e.head)),i.mainIndex);return!n.eq(i)&&(e(t.update({selection:n})),!0)})({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some(e=>t.sliceDoc(e.from,e.to)!=n))return!1;let r=function(t,e){let{main:i,ranges:n}=t.selection,r=t.wordAt(i.head),s=r&&r.from==i.from&&r.to==i.to;for(let i=!1,r=new Wh(t.doc,e,n[n.length-1].to);;){if(r.next(),!r.done){if(i&&n.some(t=>t.from==r.value.from))continue;if(s){let e=t.wordAt(r.value.from);if(!e||e.from!=r.value.from||e.to!=r.value.to)continue}return r.value}if(i)return null;r=new Wh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}}(t,n);return!!r&&(e(t.update({selection:t.selection.addRange(P.range(r.from,r.to),!1),effects:Pr.scrollIntoView(r.to)})),!0)},preventDefault:!0}];class Ma{constructor(t){this.view=t;let e=this.query=t.state.field(la).query.spec;function i(t,e,i){return Lh("button",{class:"cm-button",name:t,onclick:e,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=Lh("input",{value:e.search,placeholder:Ca(t,"Find"),"aria-label":Ca(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Lh("input",{value:e.replace,placeholder:Ca(t,"Replace"),"aria-label":Ca(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Lh("input",{type:"checkbox",name:"case",form:"",checked:e.caseSensitive,onchange:this.commit}),this.reField=Lh("input",{type:"checkbox",name:"re",form:"",checked:e.regexp,onchange:this.commit}),this.wordField=Lh("input",{type:"checkbox",name:"word",form:"",checked:e.wholeWord,onchange:this.commit}),this.dom=Lh("div",{onkeydown:t=>this.keydown(t),class:"cm-search"},[this.searchField,i("next",()=>da(t),[Ca(t,"next")]),i("prev",()=>pa(t),[Ca(t,"previous")]),i("select",()=>ga(t),[Ca(t,"all")]),Lh("label",null,[this.caseField,Ca(t,"match case")]),Lh("label",null,[this.reField,Ca(t,"regexp")]),Lh("label",null,[this.wordField,Ca(t,"by word")]),...t.state.readOnly?[]:[Lh("br"),this.replaceField,i("replace",()=>ma(t),[Ca(t,"replace")]),i("replaceAll",()=>va(t),[Ca(t,"replace all")])],Lh("button",{name:"close",onclick:()=>Sa(t),"aria-label":Ca(t,"close"),type:"button"},["×"])])}commit(){let t=new Xh({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:sa.of(t)}))}keydown(t){var e,i,n;e=this.view,i=t,n="search-panel",$r(qr(e.state),i,e,n)?t.preventDefault():13==t.keyCode&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?pa:da)(this.view)):13==t.keyCode&&t.target==this.replaceField&&(t.preventDefault(),ma(this.view))}update(t){for(let e of t.transactions)for(let t of e.effects)t.is(sa)&&!t.value.eq(this.query)&&this.setQuery(t.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Yh).top}}function Ca(t,e){return t.state.phrase(e)}const Oa=/[\s\.,:;?!]/;function Da(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),r=t.state.doc.lineAt(i).to,s=Math.max(n.from,e-30),o=Math.min(r,i+30),l=t.state.sliceDoc(s,o);if(s!=n.from)for(let t=0;t<30;t++)if(!Oa.test(l[t+1])&&Oa.test(l[t])){l=l.slice(t);break}if(o!=r)for(let t=l.length-1;t>l.length-30;t--)if(!Oa.test(l[t-1])&&Oa.test(l[t])){l=l.slice(0,t);break}return Pr.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const Ta=Pr.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"}}),Ea=[la,Y.low(ua),Ta];function Ba(t){return(Ba="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Ra(t){return function(t){if(Array.isArray(t))return Pa(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Pa(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return Pa(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pa(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i0,e.editRecoveryHandler=null,e}return e=s,(i=[{key:"setCodeMirrorPreference",value:function(t){this.useCodeMirror=t,La(Fa(s.prototype),"setCodeMirrorPreference",this).call(this,t)}},{key:"enableCodeMirror",value:function(){var t=this;if(!(this.view||mw.user.options.get("gadget-wikEd")>0)){var e=this.$textarea.prop("selectionStart"),i=this.$textarea.prop("selectionEnd"),n=this.$textarea.scrollTop(),r=this.$textarea.is(":focus"),s=[].concat(Ra(this.defaultExtensions),[bl(),Pr.contentAttributes.of({spellcheck:"true",accesskey:this.$textarea.attr("accesskey")}),Pr.domEventHandlers({blur:function(){return t.$textarea.triggerHandler("blur")},focus:function(){return t.$textarea.triggerHandler("focus")}}),Pr.updateListener.of((function(e){e.docChanged&&"function"==typeof t.editRecoveryHandler&&t.editRecoveryHandler()})),Pr.lineWrapping,zr.of([].concat(Ra(Nh),Ra(Aa),Ra(Il)))]);mw.hook("editRecovery.loadEnd").add((function(e){t.editRecoveryHandler=e.fieldChangeHandler})),this.initialize(s),this.view.scrollDOM.scrollTop=n,this.view.dispatch({selection:P.create([P.range(e,i)])}),r&&this.view.focus(),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}}},{key:"addCodeMirrorToWikiEditor",value:function(){var t=this,e=this.$textarea.data("wikiEditor-context"),i=e&&e.modules&&e.modules.toolbar;i&&(this.$textarea.wikiEditor("addToToolbar",{section:"main",groups:{codemirror:{tools:{CodeMirror:{label:mw.msg("codemirror-toggle-label"),type:"toggle",oouiIcon:"highlight",action:{type:"callback",execute:function(){return t.switchCodeMirror()}}}}}}}),i.$toolbar.find(".tool[rel=CodeMirror]").attr("id","mw-editbutton-codemirror"),this.useCodeMirror&&this.enableCodeMirror(),this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!1,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0}))}},{key:"updateToolbarButton",value:function(){var t=$("#mw-editbutton-codemirror");t.toggleClass("mw-editbutton-codemirror-active",this.useCodeMirror),t.data("setActive")&&t.data("setActive")(this.useCodeMirror)}},{key:"switchCodeMirror",value:function(){if(this.view){this.setCodeMirrorPreference(!1);var t=this.view.scrollDOM.scrollTop,e=this.view.hasFocus,i=this.view.state.selection.ranges[0],n=i.from,r=i.to;$(this.view.dom).textSelection("unregister"),this.$textarea.textSelection("unregister"),this.view.destroy(),this.view=null,this.$textarea.show(),e&&this.$textarea.trigger("focus"),this.$textarea.prop("selectionStart",Math.min(n,r)).prop("selectionEnd",Math.max(r,n)),this.$textarea.scrollTop(t),mw.hook("ext.CodeMirror.switch").fire(!1,this.$textarea)}else this.enableCodeMirror(),this.setCodeMirrorPreference(!0);this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!0,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0})}}])&&Na(e.prototype,i),n&&Na(e,n),Object.defineProperty(e,"prototype",{writable:!1}),s}(ys);mw.loader.getState("ext.wikiEditor")&&mw.hook("wikiEditor.toolbarReady").add((function(t){new za(t).addCodeMirrorToWikiEditor()}))}}); //# sourceMappingURL=main.js.map.json \ No newline at end of file diff --git a/resources/dist/main.js.map.json b/resources/dist/main.js.map.json index 8fa968bb..475e6398 100644 --- a/resources/dist/main.js.map.json +++ b/resources/dist/main.js.map.json @@ -1 +1 @@ -{"version":3,"sources":["/w/extensions/CodeMirror/webpack/bootstrap","/w/extensions/CodeMirror/./node_modules/@codemirror/state/dist/index.js","/w/extensions/CodeMirror/./node_modules/style-mod/src/style-mod.js","/w/extensions/CodeMirror/./node_modules/w3c-keyname/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/view/dist/index.js","/w/extensions/CodeMirror/./src/codemirror.js","/w/extensions/CodeMirror/./node_modules/@lezer/common/dist/index.js","/w/extensions/CodeMirror/./node_modules/@lezer/highlight/dist/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/language/dist/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/commands/dist/index.js","/w/extensions/CodeMirror/./node_modules/crelt/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/search/dist/index.js","/w/extensions/CodeMirror/./src/codemirror.wikieditor.js","/w/extensions/CodeMirror/./src/codemirror.wikieditor.init.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Text","pos","this","length","RangeError","lineInner","lines","from","to","text","parts","decompose","TextNode","other","replace","start","scanIdentical","end","a","RawTextCursor","b","skip","next","lineBreak","done","dir","PartialTextCursor","inner","iter","line","iterRange","Math","max","LineCursor","sliceString","flatten","TextLeaf","split","empty","textLength","super","target","isLine","offset","string","Line","open","sliceText","min","prev","pop","joined","appendText","slice","push","mid","newLen","lineSep","result","part","len","children","child","endLine","childOpen","updated","totalLines","copy","iA","iB","eA","eB","chA","chB","reduce","ch","flat","chunk","maxChunk","minChunk","chunked","currentLines","currentLen","currentChunk","add","last","node","flush","concat","first","nodes","offsets","top","offsetValue","size","nextInner","cursor","limit","afterBreak","iterator","number","map","parseInt","isExtendingChar","code","isRegionalIndicator","findClusterBreak","str","forward","includeExtending","nextClusterBreak","prevClusterBreak","surrogateLow","charCodeAt","surrogateHigh","codePointAt","codePointSize","countBefore","found","code0","code1","DefaultSplit","MapMode","ChangeDesc","sections","ins","f","posA","posB","individual","iterChanges","composeSets","before","mapSet","assoc","Simple","endA","TrackDel","TrackBefore","TrackAfter","json","Array","isArray","some","ChangeSet","inserted","doc","fromA","toA","fromB","_toB","index","ranges","resultSections","resultInserted","filteredSections","SectionIter","addSection","off","addInsert","changes","filtered","toJSON","total","force","set","compose","process","spec","sub","insert","insText","of","insLen","e","forceJoin","values","append","desc","endB","setA","setB","mkSet","piece","createSet","Error","left","len2","sectionLen","insB","textBit","forward2","undefined","SelectionRange","flags","level","change","mapPos","anchor","EditorSelection","range","head","abs","mainIndex","eq","main","which","fromJSON","normalized","bidiLevel","goalColumn","sort","indexOf","splice","checkSelection","selection","docLength","nextID","Facet","combine","compareInput","compare","isStatic","enables","id","default","extensions","config","sameArray","static","FacetProvider","deps","field","x","compute","state","every","dependencies","facet","type","addresses","_a","idx","multi","depDoc","depSel","depAddrs","dep","tr","docChanged","ensureAll","newVal","compareArray","reconfigure","oldState","oldAddr","address","oldVal","getAddr","StateField","addrs","changed","addr","ensureAddr","dynamicFacetSlot","providers","providerAddrs","providerTypes","dynamic","filter","val","depChanged","oldProviders","facets","oldValue","initField","define","createF","updateF","compareF","provides","update","provide","init","find","Prec_","prec","ext","PrecExtension","Prec","highest","high","low","lowest","Compartment","CompartmentInstance","content","compartment","extension","compartments","Configuration","base","dynamicSlots","staticValues","statusTemplate","fields","newCompartments","Map","seen","known","delete","has","slot","oldFacets","dynamicSlot","status","computeSlot","languageData","allowMultipleSelections","v","lineSeparator","changeFilter","transactionFilter","transactionExtender","readOnly","Annotation","AnnotationType","StateEffectType","StateEffect","mapping","mapped","effects","effect","appendConfig","Transaction","startState","annotations","scrollIntoView","_doc","_state","newLength","time","Date","now","apply","applyTransaction","ann","event","annotation","userEvent","joinRanges","mergeTransaction","sequential","mapForA","mapForB","mapDesc","mapEffects","resolveTransactionInner","docSize","sel","asArray","single","resolveTransaction","specs","seq","extenders","keys","extendTransaction","back","invertedDesc","filters","filterTransaction","addToHistory","remote","none","CharCategory","nonASCIISingleCaseWordChar","wordChar","RegExp","_","makeCategorizer","wordChars","char","test","Space","toUpperCase","toLowerCase","hasWordChar","Word","Other","EditorState","require","startValues","conf","is","forEach","resolve","newDoc","newSelection","toText","changeByRange","result1","newChanges","newMapped","j","mapBy","sliceDoc","prop","fieldInit","configuration","staticFacet","asSingle","tabSize","phrase","phrases","side","provider","at","languageDataAt","join","lineAt","cat","charCategorizer","combineConfig","configs","defaults","current","kA","kB","k","RangeValue","Range","startSide","endSide","point","mapMode","cmpRange","Chunk","maxPoint","startAt","arr","lo","hi","diff","findIndex","newPos","newFrom","newTo","curFrom","curTo","RangeSet","chunkPos","nextLayer","chunkEnd","isEmpty","updateSpec","filterFrom","filterTo","cur","LayerCursor","goto","spill","builder","RangeSetBuilder","addInner","rangeIndex","chunkIndex","addChunk","nextChunk","finishInner","chunks","touch","touchesRange","between","HeapCursor","sets","oldSets","newSets","textDiff","comparator","minPointSize","sharedChunks","findSharedChunks","sideA","SpanCursor","sideB","iterGaps","sameValues","active","openRanges","openStart","activeForPoint","openCount","pointFrom","pointRank","openEnd","span","build","lazySort","finish","newArrays","chunkStart","setMaxPoint","lastFrom","lastTo","finishChunk","inA","shared","Set","layer","minPoint","rank","gotoInner","setRangeIndex","heap","heapBubble","childIndex","activeTo","activeRank","minActive","removeActive","remove","findMinIndex","trackOpen","wasPoint","nextVal","addActive","reverse","startA","startB","dPos","clipEnd","comparePoint","compareRange","array","foundPos","countColumn","findColumn","col","strict","COUNT","for","SET","floor","random","globalThis","window","StyleModule","options","rules","splitSelector","selector","render","selectors","isKeyframes","local","isAt","exec","keyframes","toString","root","nonce","setNonce","StyleSet","mount","adoptedSet","ownerDocument","win","defaultView","adoptedStyleSheets","CSSStyleSheet","adopted","sheet","styleTag","createElement","setAttribute","insertBefore","firstChild","mod","insertRule","getRules","textContent","getAttribute","8","9","10","12","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","106","107","108","109","110","111","144","145","160","161","162","163","164","165","173","186","187","188","189","190","191","192","219","220","221","222","shift","48","49","50","51","52","53","54","55","56","57","mac","navigator","platform","ie","userAgent","String","fromCharCode","getSelection","nodeType","contains","dom","parentNode","hasSelection","anchorNode","clientRectsFor","textRange","nodeValue","getClientRects","isEquivalentPosition","targetNode","targetOff","scanFor","domIndex","previousSibling","maxOffset","nodeName","parent","childNodes","contentEditable","flattenRect","rect","right","bottom","windowRect","innerWidth","innerHeight","DOMSelectionState","anchorOffset","focusNode","focusOffset","domSel","scratchRange","preventScrollSupported","focusPreventScroll","setActive","focus","stack","scrollTop","scrollLeft","preventScroll","elt","document","createRange","setEnd","setStart","dispatchKey","keyCode","cancelable","down","KeyboardEvent","synthetic","dispatchEvent","up","defaultPrevented","clearAttributes","attributes","removeAttributeNode","isScrolledToBottom","scrollHeight","clientHeight","DOMPos","precise","noChildren","ContentView","posBefore","posAtStart","view","breakAfter","track","nextSibling","contentView","canReuseDOM","reuseDOM","sync","written","rm$1","_dom","after","bias","lastChild","fromI","fromStart","toI","toEnd","prevEnd","domBoundsAround","startDOM","endDOM","andParent","markParentsDirty","childList","cmView","markDirty","destroy","setParent","_rec","_event","ChildCursor","childCursor","findPos","constructor","source","hasStart","removeChild","replaceRange","fromOff","toOff","breakAtStart","breakAtEnd","merge","become","replaceChildren","mergeChildrenInto","dLen","nav","vendor","documentElement","style","ie_edge","ie_upto10","ie_11up","gecko","chrome","webkit","safari","ios","maxTouchPoints","browser","windows","linux","ie_version","documentMode","gecko_version","chrome_version","android","webkit_version","TextView","textDOM","setDOM","createTextNode","createDOM","_from","_to","rects","width","textCoords","MarkView","mark","class","className","attrs","tagName","setAttrs","_hasStart","detachFrom","inlineDOMAtPos","coordsInChildren","widget","prevWidget","updateDOM","toDOM","ignoreEvent","custom","coordsAt","fromBack","isHidden","getBoundingClientRect","getSide","domAtPos","beforePos","afterPos","scan","fallbackRect","combineAttrs","noAttrs","attrsEq","ignore","keysA","keysB","updateAttrs","cssText","removeAttribute","getAttrs","attr","WidgetType","BlockType","MarkDecoration","block","inlineOrder","isBlockGap","getInclusive","LineDecoration","estimatedHeight","_b","isReplace","WidgetRange","WidgetBefore","WidgetAfter","lineBreaks","inclusiveStart","inclusiveEnd","inclusive","addRange","margin","LineView","arguments","prevAttrs","transferDOM","setDeco","childPos","joinInlineInto","deco","cls","classList","isEditable","hack","cmIgnore","appendChild","textHeight","totalWidth","height","lineHeight","charWidth","heightOracle","viewState","dist","_other","docView","_takeDeco","posAtEnd","disallowBlockEffectsFor","curLine","pendingBuffer","bufferMarks","atCursorPos","textOff","wrapMarks","flushBuffer","posCovered","getLine","take","buildText","addBlockWidget","NullWidget","cursorBefore","cursorAfter","addLineDeco","decorations","dynamicDecorationMap","spans","tag","clickAddsSelectionRange","dragMovesSelection$1","mouseSelectionStyle","exceptionSink","updateListener","inputHandler","focusChangeEffect","perLineTextDirection","nativeSelectionHidden","ScrollTarget","y","yMargin","xMargin","logException","exception","context","handler","onerror","console","error","editable","nextPluginID","viewPlugin","ViewPlugin","domEventHandlers","buildExtensions","eventHandlers","plugin","pluginInst","PluginInstance","mustUpdate","deactivate","editorAttributes","contentAttributes","atomicRanges","bidiIsolatedRanges","getIsolatedRanges","isolates","Function","iso","bidiIsolate","direction","scrollMargins","getScrollMargins","styleModule","ChangedRange","toB","me","dI","rI","addToSet","transactions","changedRanges","iterChangedRanges","Direction","LTR","RTL","dec","LowTypes","ArabicTypes","Brackets","BracketStack","BidiRE","BidiSpan","order","maybe","isolatesEq","types","computeSectionOrder","baseLevel","outerType","rFrom","rTo","iI","prevType","prevStrong","computeCharTypes","oppositeType","sI","br","sJ","embed","processBracketPairs","beforeL","jI","fromJ","processNeutrals","emitSpans","ourType","iCh","sameDir","isNum","recurse","localLevel","iScan","run","upto","computeOrder","trivialOrder","movedOver","moveVisually","startIndex","spanI","indexForward","nextIndex","nextSpan","domChanged","hasComposition","markedForComposition","minWidth","minWidthFrom","minWidthTo","impreciseAnchor","impreciseHead","forceSelection","lastUpdate","contentDOM","updateDeco","updateInner","readCompositionAt","inputState","composing","newSel","composition","touched","touchesComposition","selectionSet","headPos","findCompositionNode","textNode","inv","marks","parentView","findCompositionRange","clear","decoDiff","comp","findChangedDeco","extendWithRanges","oldLength","mustMeasureContent","updateChildren","observer","contentHeight","scaleY","flexBasis","selectionRange","cView","gaps","viewport","BlockGapWidget","updateGaps","compLine","compositionView","fixCompositionDOM","fix","mustRead","fromPointer","readSelectionRange","activeElt","activeElement","focused","selectionNotFocus","moveToLine","dummy","inside","assignedSlot","inUneditable","blur","rawSel","nextTo","nearbyTextNode","collapse","caretBidiLevel","extend","removeAllRanges","setSelectionRange","modify","lineStart","newRange","posFromDOM","domView","rootView","nearest","localPosFromDOM","childOff","contentWidth","clientWidth","isWider","scrollDOM","widest","ltr","textDirection","childRect","getComputedStyle","measure","measureTextSize","position","vs","viewports","lineBlockAt","allDeco","computeBlockGapDeco","lineGapDeco","margins","targetRect","stop","bounding","body","scaleX","scrollWidth","offsetWidth","offsetHeight","moveX","moveY","rectHeight","boundingHeight","scrollBy","movedX","movedY","host","scrollRectIntoView","startNode","startOffset","getdx","getdy","yOverlap","upTop","upBot","domPosInText","closestOffset","closestDY","generalSide","dy","posAtCoords","coords","docTop","paddingTop","docHeight","yOffset","halfLine","bounced","elementAtHeight","posAtCoordsImprecise","elementFromPoint","element","caretPositionFromPoint","offsetNode","caretRangeFromPoint","startContainer","isSuspiciousSafariCaretResult","isSuspiciousChromeCaretResult","domPosAtCoords","closest","closestRect","closestX","closestY","above","below","aboveRect","belowRect","closestOverlap","dx","clipX","isWidget","contentRect","into","round","defaultCharacterWidth","lineWrapping","defaultLineHeight","lineLength","blockAt","moveByChar","by","bidiSpans","textDirectionAt","check","skipAtomicRanges","atoms","moved","skipAtoms","oldPos","InputState","origin","lastSelectionOrigin","lastSelectionTime","lastKeyCode","lastKeyTime","lastTouchTime","lastFocusTime","lastScrollTop","lastScrollLeft","chromeScrollHack","pendingIOSKey","lastEscPress","lastContextMenu","scrollHandlers","registeredEvents","customHandlers","compositionFirstChange","compositionEndedAt","compositionPendingKey","compositionPendingChange","mouseSelection","handleEvent","ignoreDuringComposition","keydown","mustFlushObserver","forceFlush","runCustomHandlers","preventDefault","handlers","addEventListener","eventBelongsToEditor","handlerOptions","clientY","mousedown","button","minHeight","setTimeout","drop","pointerEvents","clearTimeout","passive","notifiedFocused","hasFocus","appliedFirefoxHack","plugins","scroll","modifierCodes","delayAndroidKey","pending","altKey","metaKey","PendingKeys","ctrlKey","EmacsyPendingKeys","shiftKey","flushIOSKey","inputType","dragScrollSpeed","startEvent","mustSelect","scrollSpeed","scrolling","lastEvent","scrollParent","scrollableParent","move","multiple","addsSelectionRange","dragging","rangeCount","getRangeAt","clientX","isInPrimarySelection","getClickType","select","buttons","sx","sy","setScrollSpeed","removeEventListener","setInterval","clearInterval","dispatch","bubbles","brokenClipboardAPI","doPaste","input","byLine","lastLinewiseCopy","lastLine","replaceSelection","rangeForClick","categorize","linePos","groupAt","visual","setSelectionOrigin","touchstart","touchmove","makeStyle","queryPos","startSel","removed","startRange","removeRangeAround","basicMouseSelection","mustFocus","startMouseSelection","insideY","findPositionSide","BadMouseDetail","lastMouseDown","lastMouseDownCount","lastMouseDownTime","detail","lastTime","dropText","direct","dropPos","del","dragMovesSelection","dragstart","dataTransfer","setData","effectAllowed","files","read","finishFile","reader","FileReader","onload","readAsText","getData","paste","data","clipboardData","capturePaste","cut","linewise","copiedRange","clearData","selectionEnd","selectionStart","captureCopy","isFocusChange","focusChangeTransaction","getEffect","updateForFocusChange","clearSelectionRange","compositionstart","compositionupdate","compositionend","pendingRecords","flushSoon","Promise","then","contextmenu","beforeinput","startViewHeight","visualViewport","wrappingWhiteSpace","heightSamples","heightChanged","ceil","whiteSpace","lineHeights","newHeight","h","knownHeights","MeasuredHeights","heights","BlockInfo","_content","QueryType","HeightMap","oracle","oldDoc","ByPosNoHeight","setDoc","updateHeight","HeightMapText","break","brk","HeightMapBranch","HeightMapBlock","_height","_oracle","_value","_type","_force","measured","more","setHeight","outdated","collapsed","widgetHeight","breaks","HeightMapGap","heightForLine","perLine","firstLine","perChar","totalPerLine","heightMetrics","guess","lineTop","ByHeight","linesAbove","unshift","singleHeight","heightForGap","rightTop","rightOffset","subQuery","ByPos","forEachLine","rightStart","balanced","decomposeLeft","mergeGaps","decomposeRight","rebalance","around","lineEnd","covering","writtenTo","isCovered","heightRelevant","addBlock","blankContent","gap","enterLine","ensureLine","DecorationComparator","visiblePixelRange","overflow","parentRect","offsetParent","fullPixelRange","LineGap","gA","gB","wrapping","LineGapWidget","vertical","display","pixelViewport","inView","paddingBottom","contentDOMWidth","contentDOMHeight","editorHeight","editorWidth","scrolledToBottom","scrollAnchorPos","scrollAnchorHeight","scaler","IdScaler","scrollTarget","printing","defaultTextDirection","visibleRanges","mustEnforceCursorAssoc","guessWrapping","stateDeco","heightMap","applyChanges","getViewport","updateViewportLines","updateForViewport","lineGaps","ensureLineGaps","draw","computeVisibleRanges","Viewport","BigScaler","viewportLines","scale","scaleBlock","prevDeco","contentChanges","heightChanges","heightRelevantDecoChanges","prevHeight","scrollAnchor","scrollAnchorAt","mapViewport","viewportIsAppropriate","updateLines","updateLineGaps","mapLineGaps","refresh","mustRefreshForWrapping","domRect","measureContent","dTop","dBottom","measureVisibleLineHeights","mustRefreshForHeights","vp","viewportChange","enforceCursorAssoc","fromDOM","marginTop","visibleTop","visibleBottom","topPos","viewHeight","mayMeasure","halfMargin","doubleMargin","addGap","structure","avoid","moveToLineBoundary","gapSize","lineStructure","viewFrom","viewTo","bot","marginHeight","targetFrac","findFraction","spaceFrac","findPosition","marginWidth","fraction","same","lineBlockAtHeight","ratio","counted","vpHeight","domBase","domTop","domBottom","obj","bTop","bBottom","theme","strs","darkTheme","baseThemeID","newName","baseLightID","baseDarkID","lightDarkIDs","buildTheme","scopes","baseTheme$1","boxSizing","outline","flexDirection","alignItems","fontFamily","overflowX","zIndex","flexGrow","flexShrink","wordWrap","padding","WebkitUserModify","whiteSpace_fallback","wordBreak","overflowWrap","caretColor","contain","background","animation","opacity","borderLeft","marginLeft","borderLeftColor","backgroundColor","color","insetInlineStart","borderRight","textAlign","borderBottom","borderTop","verticalAlign","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","fontSize","borderRadius","border","points","findPointBefore","oldLen","readNode","nextView","isBlockElement","re","nextBreak","breakSize","fromView","overrideDOMText","findPointInside","readTextNode","readRange","maxLen","DOMPoint","typeOver","bounds","iHead","iAnchor","selPoints","selectionPoints","selectionFromPoints","applyDOMChange","domChange","lastKey","preferredPos","preferredSide","minLen","adjust","findDiff","LineBreakPlaceholder","defaultTr","defaultInsert","mainSel","compositionRange","replaced","rangeChanges","selOff","applyDefaultInsert","observeOptions","characterData","subtree","characterDataOldValue","useCharData","DOMObserver","selectionChanged","delayedFlush","resizeTimeout","queue","delayedAndroidKey","flushingAndroidKey","lastChange","scrollTargets","intersection","resizeScroll","resizeContent","intersecting","gapIntersection","parentCheck","MutationObserver","mutations","mut","removedNodes","onCharData","prevValue","onSelectionChange","onResize","onPrint","onScroll","ResizeObserver","observe","requestMeasure","addWindowListeners","IntersectionObserver","entries","listenForScroll","intersectionRatio","onScrollChanged","createEvent","threshold","runScrollHandlers","g","disconnect","wasChanged","shadowRoot","deepActiveElement","stopImmediatePropagation","getTargetRanges","execCommand","endContainer","endOffset","curAnchor","safariSelectionRangeHack","atElementStart","updateSelection","setRange","processRecords","clearDelayedAndroidKey","requestAnimationFrame","cancelAnimationFrame","takeRecords","records","record","readMutation","readSelection","readChange","handled","rec","ignoreMutation","childBefore","findChild","childAfter","posAfter","removeWindowListeners","_c","_d","curView","_root","pluginMap","editorAttrs","contentAttrs","bidiCache","destroyed","updateState","measureScheduled","measureRequests","tabIndex","announceDOM","dispatchTransactions","trs","getRoot","ensureHandlers","mountStyles","redrawn","attrsChanged","focusFlag","dispatchFocus","pendingKey","setState","CachedOrder","updatePlugins","styleModules","showAnnouncements","isUserEvent","listener","newState","hadFocus","prevSpecs","newPlugins","sDOM","warn","measuring","BadMeasure","write","viewportChanged","attrsFromFacet","themeClasses","spellcheck","autocorrect","autocapitalize","translate","contenteditable","role","changedContent","changedEditor","announce","cspNonce","request","readMeasured","initial","nextCat","byGroup","includeWrap","widgetLineBreaks","coordsAtPos","editorRect","distance","startPos","startY","goal","startCoords","documentTop","resolvedGoal","extra","curY","moveVertically","coordsForChar","MaxBidiLine","entry","fresh","setWindow","prefix","dark","querySelector","cache","lastDir","sources","currentPlatform","modifiers","handleKeyEvents","runHandlers","getKeymap","keymap","Keymaps","WeakMap","bindings","bound","isPrefix","checkPrefix","scope","command","stopPropagation","scopeObj","alt","ctrl","meta","normalizeKeyName","ourObj","storedPrefix","full","binding","_any","any","buildKeymap","keyName","isChar","prevented","baseName","shiftName","ran","runFor","cmd","CanHidePrimary","themeSpec","panelConfig","topContainer","bottomContainer","getPanel","panel","panelPlugin","panels","fromClass","showPanel","PanelGroup","container","syncClasses","scrollMargin","classes","syncDOM","curDOM","rm","elementClass","gutterLineClass","activeGutters","unfixGutters","gutters","gutterView","fixed","prevViewport","gutter","syncGutters","updateGutters","vpA","vpB","vpOverlap","geometryChanged","detach","lineClasses","classSet","contexts","documentPadding","viewportLineBlocks","advanceCursor","cx","collect","markers","elements","newElt","GutterElement","extraMarkers","localMarkers","forLine","lineMarker","renderEmptyElements","addElement","marker","widgetMarker","spacer","initialSpacer","prevMarkers","updateSpacer","lineMarkerChange","sameMarkers","setMarkers","domPos","iNew","iOld","skipTo","matched","lineNumberMarkers","lineNumberConfig","formatNumber","assign","exists","NumberMarker","lineNumberGutter","others","maxLineNumber","CodeMirror","$textarea","_classCallCheck","namespaces","mw","includes","lineNumbers","_this","defaultExtensions","textSelection","EditorView","hide","form","$","cmTextSelection","hook","fire","session_token","user","sessionId","user_id","getId","editCountBucket","user_edit_count_bucket","prefValue","isNamed","Api","saveOption","_this2","$cmDom","getContents","setContents","setSelection","getCaretPosition","startAndEnd","scrollToCaretPosition","DefaultBufferLength","nextPropID","NodeProp","perNode","deserialize","match","NodeType","closedBy","openedBy","group","contextHash","lookAhead","mounted","MountedTree","tree","overlay","parser","props","noProps","skipped","src","groups","CachedNode","CachedInnerNode","IterMode","Tree","positions","isError","JSON","stringify","TreeCursor","topNode","moveTo","_tree","TreeNode","resolveNode","resolveInner","layers","iterStack","stackIterator","enter","leave","anon","IncludeAnonymous","entered","isAnonymous","balanceRange","propValues","makeTree","buffer","nodeSet","maxBufferLength","reused","minRepeatType","FlatBufferCursor","takeNode","parentStart","minPos","inRepeat","lookAheadAtStart","maxSize","fork","minStart","nodeSize","localSkipped","nodeStart","findBufferSize","Uint16Array","endPos","copyToBuffer","TreeBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","make","lookAheadProp","lastI","makeBalanced","pair","bufferStart","topID","buildTree","childString","endIndex","pick","checkSide","startI","endI","overlays","IgnoreOverlays","BaseNode","getChildren","matchNodeContext","prevSibling","_parent","ExcludeBuffers","BufferNode","BufferContext","hasChild","IgnoreMounts","nextChild","rPos","nextSignificantParent","externalSibling","heads","picked","newHeads","StackIterator","bufferNode","yieldNode","yieldBuf","yield","enterChild","sibling","atLastNode","depth","mustLeave","nodeSizeCache","balanceType","mkTop","mkTree","maxChild","divide","groupFrom","groupStart","groupSize","nextSize","only","TreeFragment","fragments","partial","minGap","fI","nextF","cI","nextC","nextPos","fFrom","fTo","Parser","StringInput","createParse","parse","startParse","advance","nextTagID","Tag","modified","Modifier","nextModifierID","instances","mods","powerSet","styleTags","byName","tags","pieces","rest","rule","Rule","ruleNodeProp","tagHighlighter","all","tagClass","comment","typeName","propertyName","literal","heading","keyword","operator","punctuation","lineComment","blockComment","docComment","variableName","attributeName","labelName","namespace","macroName","docString","character","attributeValue","integer","float","bool","regexp","escape","url","self","null","atom","unit","modifier","operatorKeyword","controlKeyword","definitionKeyword","moduleKeyword","derefOperator","arithmeticOperator","logicOperator","bitwiseOperator","compareOperator","updateOperator","definitionOperator","typeOperator","controlOperator","separator","bracket","angleBracket","squareBracket","paren","brace","heading1","heading2","heading3","heading4","heading5","heading6","contentSeparator","list","quote","emphasis","strong","link","monospace","strikethrough","deleted","invalid","documentMeta","processingInstruction","definition","defineModifier","constant","function","standard","special","languageDataProp","sublanguageProp","extraExtensions","syntaxTree","topNodeAt","innerNode","sublang","lang","allowsNesting","explore","topLang","isTop","DocInput","cursorPos","syncTo","stringStart","currentContext","treeLen","scheduleOn","tempSkipped","until","isDone","takeTree","withContext","endTime","stoppedAt","stopAt","withoutTempSkipped","addTree","parsedPos","cutFragments","startLen","reset","frags","LanguageState","newCx","work","vpTo","parseState","requestIdle","callback","timeout","requestIdleCallback","idle","cancelIdleCallback","isInputPending","scheduling","parseWorker","working","workScheduled","chunkBudget","scheduleWork","updateViewport","checkAsyncSchedule","deadline","timeRemaining","viewportFirst","catch","err","languages","language","indentService","indentUnit","getIndentUnit","indentString","cols","ts","getIndentation","service","ast","resolveStack","enterUnfinishedNodesBefore","indentFor","syntaxIndentation","simulateBreak","simulateDoubleBreak","override","overrideIndentation","search","overriden","indentNodeProp","strategy","indentStrategy","TreeIndentContext","close","closed","delimitedStrategy","ignoreClosed","topIndent","textAfterPos","baseIndentFor","atBreak","isParent","lineIndent","align","units","closing","closedAt","textAfter","space","aligned","openToken","sim","openLine","isSkipped","bracketedAligned","column","baseIndent","modSpec","def","scopeOpt","themeType","bracketMatchingHandle","matchingNodes","brackets","byProp","findHandle","hasHandle","matchBrackets","maxScanDistance","matches","handle","matchMarkedBrackets","tokenType","startCh","startToken","basePos","matchPlainBrackets","_pos","token","matching","firstToken","endHandle","noTokens","typeArray","warned","defaultTable","legacyName","createTokenType","warnForPart","msg","tagStr","option","toggleLineComment","changeLineComment","toggleBlockComment","changeBlockComment","toggleBlockCommentByLine","fromLine","toLine","selectedLineRanges","getConfig","tokens","comments","startText","endText","textBefore","spaceBefore","spaceAfter","beforeOff","startSpace","endSpace","endOff","charAt","findBlockComment","prevLine","minIndent","indent","changeSet","fromHistory","isolateHistory","invertedEffects","historyConfig","minDepth","newGroupDelay","joinToEvent","_t","isAdjacent","adj","historyField_","HistoryState","fromHist","changeEnd","item","fromTransaction","undone","updateBranch","addSelection","isolate","addMapping","addChanges","undo","redo","historyState","undoSelection","redoSelection","startSelection","selectionsAfter","invert","selections","branch","newEvent","newBranch","conc","sels","setSelAfter","popSelection","addMappingToBranch","mapEvent","extraSelections","mappedChanges","fullMapping","composeDesc","joinableUserEvent","prevTime","prevUserEvent","_f","historyKeymap","updateSel","setSel","moveSel","how","rangeEnd","cursorByChar","ltrAtCursor","cursorCharLeft","cursorCharRight","cursorByGroup","moveByGroup","Intl","Segmenter","interestingNode","bracketProp","moveBySyntax","cursorByLine","cursorLineUp","cursorLineDown","pageInfo","selfScroll","marginBottom","cursorByPage","page","scrollRect","scrollBottom","cursorPageUp","cursorPageDown","moveByLineBoundary","toMatchingBracket","extendSel","selectByChar","selectCharLeft","selectCharRight","selectByGroup","selectByLine","selectLineUp","selectLineDown","selectByPage","selectPageUp","selectPageDown","cursorDocStart","cursorDocEnd","selectDocStart","selectDocEnd","deleteBy","towards","skipAtomic","deleteByChar","targetPos","deleteCharBackward","deleteCharForward","deleteByGroup","nextChar","deleteGroupBackward","deleteToLineEnd","selectedLineBlocks","blocks","startLine","moveLine","nextLine","copyLine","insertNewlineAndIndent","newlineAndIndent","atEof","explode","isBetweenBrackets","changeBySelectedLine","atLine","indentMore","indentLess","keep","defaultKeymap","norm","crelt","basicNormalize","normalize","query","bufferPos","nextOverlapping","peek","baseFlags","unicode","RegExpCursor","MultilineRegExpCursor","ignoreCase","curLineStart","matchPos","toCharEnd","lastIndex","flattened","FlattenedDoc","cached","cachedFrom","createLineDialog","go","sign","ln","cl","percent","pc","docLine","dialogEffect","onkeydown","onsubmit","dialogField","baseTheme","searchConfigFacet","caseSensitive","wholeWord","createPanel","scrollToMatch","valid","validRegExp","unquoted","unquote","RegExpQuery","StringQuery","st","regexpCursor","stringCursor","categorizer","buf","bufPos","charBefore","charAfter","prevMatchInRange","_result","setSearchQuery","togglePanel","searchState","SearchState","defaultQuery","createSearchPanel","matchMark","selectedMatchMark","searchHighlighter","highlight","selected","searchCommand","openSearchPanel","findNext","nextMatch","announceMatch","selectSearchInput","findPrevious","prevMatch","selectMatches","matchAll","replaceNext","replacement","getReplacement","replaceAll","announceText","fallback","_e","selText","getSearchInput","searchInput","searchExtensions","closeSearchPanel","searchKeymap","wordAt","selectWord","searchedText","word","fullWord","cycled","findNextOccurrence","onclick","commit","searchField","placeholder","onchange","onkeyup","replaceField","caseField","checked","reField","wordField","setQuery","Break","font","marginRight","CodeMirrorWikiEditor","_CodeMirror","_inherits","_super","_createSuper","realtimePreviewHandler","useCodeMirror","editRecoveryHandler","_get","_getPrototypeOf","_toConsumableArray","history","accesskey","triggerHandler","fieldChangeHandler","initialize","_this3","toolbar","wikiEditor","section","codemirror","tools","label","oouiIcon","action","execute","switchCodeMirror","$toolbar","enableCodeMirror","updateToolbarButton","logUsage","editor","enabled","toggled","edit_start_ts_ms","$button","toggleClass","setCodeMirrorPreference","_this$view$state$sele","show","trigger","loader","getState","addCodeMirrorToWikiEditor"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/codemirror.wikieditor.init.js\");\n","/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n Return the document as a string, using newline characters to\n separate lines.\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n @internal\n */\n constructor() { }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\n\n// Compressed representation of the Grapheme_Cluster_Break=Extend\n// information from\n// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n// Each pair of elements represents a range, as an offet from the\n// previous range and a length. Numbers are in base-36, with the empty\n// string being a shorthand for 1.\nlet extend = /*@__PURE__*/\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1);\n// Convert offsets into absolute values\nfor (let i = 1; i < extend.length; i++)\n extend[i] += extend[i - 1];\nfunction isExtendingChar(code) {\n for (let i = 1; i < extend.length; i += 2)\n if (extend[i] > code)\n return extend[i - 1] <= code;\n return false;\n}\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF;\n}\nconst ZWJ = 0x200d;\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending);\n}\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length)\n return pos;\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1)))\n pos--;\n let prev = codePointAt(str, pos);\n pos += codePointSize(prev);\n while (pos < str.length) {\n let next = codePointAt(str, pos);\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next);\n prev = next;\n }\n else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2;\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) {\n countBefore++;\n i -= 2;\n }\n if (countBefore % 2 == 0)\n break;\n else\n pos += 2;\n }\n else {\n break;\n }\n }\n return pos;\n}\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 0) {\n let found = nextClusterBreak(str, pos - 2, includeExtending);\n if (found < pos)\n return found;\n pos--;\n }\n return 0;\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `other` happened before the ones in `this`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 4 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 8 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 3 /* RangeFlag.BidiLevelMask */;\n return level == 3 ? null : level;\n }\n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n get goalColumn() {\n let value = this.flags >> 5 /* RangeFlag.GoalColumnOffset */;\n return value == 33554431 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head);\n }\n /**\n Compare this range to another range.\n */\n eq(other) {\n return this.anchor == other.anchor && this.head == other.head;\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags) {\n return new SelectionRange(from, to, flags);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection.\n */\n eq(other) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i]))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 4 /* RangeFlag.AssocBefore */ : 8 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 3 : Math.min(2, bidiLevel)) |\n ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */));\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn, bidiLevel) {\n let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */) |\n (bidiLevel == null ? 3 : Math.min(2, bidiLevel));\n return head < anchor ? SelectionRange.create(head, anchor, 16 /* RangeFlag.Inverted */ | 8 /* RangeFlag.AssocAfter */ | flags)\n : SelectionRange.create(anchor, head, (head > anchor ? 4 /* RangeFlag.AssocBefore */ : 0) | flags);\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal, oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n else {\n newVal = getter(state);\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds. It should be a type that\n doesn't include `undefined`, since that is used in\n [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n removed.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n new EditorState(conf, tr.newDoc, tr.newSelection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n \n Examples of language data fields are...\n \n - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n comment syntax.\n - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n for providing language-specific completion sources.\n - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n characters that should be considered part of words in this\n language.\n - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n bracket closing behavior.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return this.to[this.to.length - 1]; }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet`\n from being a subtype of `RangeSet` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let { mapped, pos } = chunk.map(start, changes);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */ - 1;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let openRanges = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n let active = cursor.activeForPoint(cursor.to);\n let openCount = cursor.pointFrom < from ? active.length + 1 : Math.min(active.length, openRanges);\n iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n openRanges = Math.min(cursor.openEnd(curTo), active.length);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, openRanges);\n openRanges = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n pos = cursor.to;\n cursor.next();\n }\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) {\n if (!this.addInner(from, to, value))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n }\n /**\n @internal\n */\n addInner(from, to, value) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n // The amount of open active ranges at the start of the iterator.\n // Not including points.\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n while (i < this.activeRank.length && this.activeRank[i] <= rank)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n this.openStart = 0;\n for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n this.openStart++;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n for (;;) {\n let diff = (a.to + dPos) - b.to || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n if (a.point || b.point) {\n if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n }\n else {\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !a[i].eq(b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object