=0?o[i]:null;if(!e)break;let t,l,a,s,{fromA:c,toA:u,fromB:d,toB:p}=e;if(n&&n.range.fromBd){let e=y5.build(this.view.state.doc,d,n.range.fromB,this.decorations,this.dynamicDecorationMap),o=y5.build(this.view.state.doc,n.range.toB,p,this.decorations,this.dynamicDecorationMap);l=e.breakAtStart,a=e.openStart,s=o.openEnd;let r=this.compositionView(n);o.breakAtStart?r.breakAfter=1:o.content.length&&r.merge(r.length,r.length,o.content[0],!1,o.openStart,0)&&(r.breakAfter=o.content[0].breakAfter,o.content.shift()),e.content.length&&r.merge(0,0,e.content[e.content.length-1],!0,0,e.openEnd)&&e.content.pop(),t=e.content.concat(r).concat(o.content)}else({content:t,breakAtStart:l,openStart:a,openEnd:s}=y5.build(this.view.state.doc,d,p,this.decorations,this.dynamicDecorationMap));let{i:h,off:f}=r.findPos(u,1),{i:g,off:m}=r.findPos(c,-1);N8(this,g,m,h,f,t,l,a,s)}n&&this.fixCompositionDOM(n)}compositionView(e){let t=new U8(e.text.nodeValue);t.flags|=8;for(let{deco:o}of e.marks)t=new q8(o,[t],t.length);let n=new c5;return n.append(t,0),n}fixCompositionDOM(e){let t=(e,t)=>{t.flags|=8|(t.children.some((e=>7&e.flags))?1:0),this.markedForComposition.add(t);let n=D8.get(e);n&&n!=t&&(n.dom=null),t.setDOM(e)},n=this.childPos(e.range.fromB,1),o=this.children[n.i];t(e.line,o);for(let r=e.marks.length-1;r>=-1;r--)n=o.childPos(n.off,1),o=o.children[n.i],t(r>=0?e.marks[r].node:e.text,o)}updateSelection(e=!1,t=!1){!e&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let n=this.view.root.activeElement,o=n==this.dom,r=!o&&g8(this.dom,this.view.observer.selectionRange)&&!(n&&this.dom.contains(n));if(!(o||t||r))return;let i=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.moveToLine(this.domAtPos(l.anchor)),s=l.empty?a:this.moveToLine(this.domAtPos(l.head));if(G8.gecko&&l.empty&&!this.hasComposition&&1==(c=a).node.nodeType&&c.node.firstChild&&(0==c.offset||"false"==c.node.childNodes[c.offset-1].contentEditable)&&(c.offset==c.node.childNodes.length||"false"==c.node.childNodes[c.offset].contentEditable)){let e=document.createTextNode("");this.view.observer.ignore((()=>a.node.insertBefore(e,a.node.childNodes[a.offset]||null))),a=s=new A8(e,0),i=!0}var c;let u=this.view.observer.selectionRange;!i&&u.focusNode&&(v8(a.node,a.offset,u.anchorNode,u.anchorOffset)&&v8(s.node,s.offset,u.focusNode,u.focusOffset)||this.suppressWidgetCursorChange(u,l))||(this.view.observer.ignore((()=>{G8.android&&G8.chrome&&this.dom.contains(u.focusNode)&&function(e,t){for(let n=e;n&&n!=t;n=n.assignedSlot||n.parentNode)if(1==n.nodeType&&"false"==n.contentEditable)return!0;return!1}(u.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let e=h8(this.view.root);if(e)if(l.empty){if(G8.gecko){let e=(t=a.node,o=a.offset,1!=t.nodeType?0:(o&&"false"==t.childNodes[o-1].contentEditable?1:0)|(ol.head&&([a,s]=[s,a]),t.setEnd(s.node,s.offset),t.setStart(a.node,a.offset),e.removeAllRanges(),e.addRange(t)}var t,o;r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),n&&n.focus())})),this.view.observer.setSelectionRange(a,s)),this.impreciseAnchor=a.precise?null:new A8(u.anchorNode,u.anchorOffset),this.impreciseHead=s.precise?null:new A8(u.focusNode,u.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&v8(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=h8(e.root),{anchorNode:o,anchorOffset:r}=e.observer.selectionRange;if(!(n&&t.empty&&t.assoc&&n.modify))return;let i=c5.find(this,t.head);if(!i)return;let l=i.posAtStart;if(t.head==l||t.head==l+i.length)return;let a=this.coordsAt(t.head,-1),s=this.coordsAt(t.head,1);if(!a||!s||a.bottom>s.top)return;let c=this.domAtPos(t.head+t.assoc);n.collapse(c.node,c.offset),n.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let u=e.observer.selectionRange;e.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=t.from&&n.collapse(o,r)}moveToLine(e){let t,n=this.dom;if(e.node!=n)return e;for(let o=e.offset;!t&&o=0;o--){let e=D8.get(n.childNodes[o]);e instanceof c5&&(t=e.domAtPos(e.length))}return t?new A8(t.node,t.offset,!0):e}nearest(e){for(let t=e;t;){let e=D8.get(t);if(e&&e.rootView==this)return e;t=t.parentNode}return null}posFromDOM(e,t){let n=this.nearest(e);if(!n)throw new RangeError("Trying to find position for a DOM position outside of the document");return n.localPosFromDOM(e,t)+n.posAtStart}domAtPos(e){let{i:t,off:n}=this.childCursor().findPos(e,-1);for(;t=0;i--){let l=this.children[i],a=r-l.breakAfter,s=a-l.length;if(ae||l.covers(1))&&(!n||l instanceof c5&&!(n instanceof c5&&t>=0))&&(n=l,o=s),r=s}return n?n.coordsAt(e-o,t):null}coordsForChar(e){let{i:t,off:n}=this.childPos(e,1),o=this.children[t];if(!(o instanceof c5))return null;for(;o.children.length;){let{i:e,off:t}=o.childPos(n,1);for(;;e++){if(e==o.children.length)return null;if((o=o.children[e]).length)break}n=t}if(!(o instanceof U8))return null;let r=C3(o.text,n);if(r==n)return null;let i=M8(o.dom,n,r).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==x5.LTR;for(let s=0,c=0;co)break;if(s>=n){let n=e.dom.getBoundingClientRect();if(t.push(n.height),i){let t=e.dom.lastChild,o=t?m8(t):[];if(o.length){let e=o[o.length-1],t=a?e.right-n.left:n.right-e.left;t>l&&(l=t,this.minWidth=r,this.minWidthFrom=s,this.minWidthTo=u)}}}s=u+e.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return"rtl"==getComputedStyle(this.children[t].dom).direction?x5.RTL:x5.LTR}measureTextSize(){for(let r of this.children)if(r instanceof c5){let e=r.measureTextSize();if(e)return e}let e,t,n,o=document.createElement("div");return o.className="cm-line",o.style.width="99999px",o.style.position="absolute",o.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore((()=>{this.dom.appendChild(o);let r=m8(o.firstChild)[0];e=o.getBoundingClientRect().height,t=r?r.width/27:7,n=r?r.height:e,o.remove()})),{lineHeight:e,charWidth:t,textHeight:n}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new B8(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,o=0;;o++){let r=o==t.viewports.length?null:t.viewports[o],i=r?r.from-1:this.length;if(i>n){let o=(t.lineBlockAt(i).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(h5.replace({widget:new v6(o),block:!0,inclusive:!0,isBlockGap:!0}).range(n,i))}if(!r)break;n=r.to+1}return h5.set(e)}updateDeco(){let e=this.view.state.facet(l6).map(((e,t)=>(this.dynamicDecorationMap[t]="function"==typeof e)?e(this.view):e)),t=!1,n=this.view.state.facet(a6).map(((e,n)=>{let o="function"==typeof e;return o&&(t=!0),o?e(this.view):e}));n.length&&(this.dynamicDecorationMap[e.length]=t,e.push(Q4.join(n)));for(let o=e.length;on.anchor?-1:1);if(!o)return;!n.empty&&(t=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(o={left:Math.min(o.left,t.left),top:Math.min(o.top,t.top),right:Math.max(o.right,t.right),bottom:Math.max(o.bottom,t.bottom)});let r=p6(this.view),i={left:o.left-r.left,top:o.top-r.top,right:o.right+r.right,bottom:o.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;!function(e,t,n,o,r,i,l,a){let s=e.ownerDocument,c=s.defaultView||window;for(let u=e,d=!1;u&&!d;)if(1==u.nodeType){let e,p=u==s.body,h=1,f=1;if(p)e=x8(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(d=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let t=u.getBoundingClientRect();({scaleX:h,scaleY:f}=$8(u,t)),e={left:t.left,right:t.left+u.clientWidth*h,top:t.top,bottom:t.top+u.clientHeight*f}}let g=0,m=0;if("nearest"==r)t.top0&&t.bottom>e.bottom+m&&(m=t.bottom-e.bottom+m+l)):t.bottom>e.bottom&&(m=t.bottom-e.bottom+l,n<0&&t.top-m0&&t.right>e.right+g&&(g=t.right-e.right+g+i)):t.right>e.right&&(g=t.right-e.right+i,n<0&&t.left0))break;o=o.childNodes[r-1],r=O8(o)}if(n>=0)for(let o=e,r=t;;){if(3==o.nodeType)return{node:o,offset:r};if(!(1==o.nodeType&&r=0))break;o=o.childNodes[r],r=0}return null}let O6=class{constructor(){this.changes=[]}compareRange(e,t){b5(e,t,this.changes)}comparePoint(e,t){b5(e,t,this.changes)}};function w6(e,t){return t.left>e?t.left-e:Math.max(0,e-t.right)}function x6(e,t){return t.top>e?t.top-e:Math.max(0,e-t.bottom)}function $6(e,t){return e.topt.top+1}function S6(e,t){return te.bottom?{top:e.top,left:e.left,right:e.right,bottom:t}:e}function k6(e,t,n){let o,r,i,l,a,s,c,u,d=!1;for(let h=e.firstChild;h;h=h.nextSibling){let e=m8(h);for(let p=0;pm||l==m&&i>g){o=h,r=f,i=g,l=m;let a=m?n0?p0)}0==g?n>f.bottom&&(!c||c.bottomf.top)&&(s=h,u=f):c&&$6(c,f)?c=C6(c,f.bottom):u&&$6(u,f)&&(u=S6(u,f.top))}}if(c&&c.bottom>=n?(o=a,r=c):u&&u.top<=n&&(o=s,r=u),!o)return{node:e,offset:0};let p=Math.max(r.left,Math.min(r.right,t));return 3==o.nodeType?P6(o,p,n):d&&"false"!=o.contentEditable?k6(o,p,n):{node:e,offset:Array.prototype.indexOf.call(e.childNodes,o)+(t>=(r.left+r.right)/2?1:0)}}function P6(e,t,n){let o=e.nodeValue.length,r=-1,i=1e9,l=0;for(let a=0;an?c.top-n:n-c.bottom)-1;if(c.left-1<=t&&c.right+1>=t&&u=(c.left+c.right)/2,o=n;if((G8.chrome||G8.gecko)&&M8(e,a).getBoundingClientRect().left==c.right&&(o=!n),u<=0)return{node:e,offset:a+(o?1:0)};r=a+(o?1:0),i=u}}}return{node:e,offset:r>-1?r:l>0?e.nodeValue.length:0}}function M6(e,t,n,o=-1){var r,i;let l,a=e.contentDOM.getBoundingClientRect(),s=a.top+e.viewState.paddingTop,{docHeight:c}=e.viewState,{x:u,y:d}=t,p=d-s;if(p<0)return 0;if(p>c)return e.state.doc.length;for(let O=e.viewState.heightOracle.textHeight/2,w=!1;l=e.elementAtHeight(p),l.type!=p5.Text;)for(;p=o>0?l.bottom+O:l.top-O,!(p>=0&&p<=c);){if(w)return n?null:0;w=!0,o=-o}d=s+p;let h=l.from;if(he.viewport.to)return e.viewport.to==e.state.doc.length?e.state.doc.length:n?null:T6(e,a,l,u,d);let f=e.dom.ownerDocument,g=e.root.elementFromPoint?e.root:f,m=g.elementFromPoint(u,d);m&&!e.contentDOM.contains(m)&&(m=null),m||(u=Math.max(a.left+1,Math.min(a.right-1,u)),m=g.elementFromPoint(u,d),m&&!e.contentDOM.contains(m)&&(m=null));let v,b=-1;if(m&&0!=(null===(r=e.docView.nearest(m))||void 0===r?void 0:r.isEditable))if(f.caretPositionFromPoint){let e=f.caretPositionFromPoint(u,d);e&&({offsetNode:v,offset:b}=e)}else if(f.caretRangeFromPoint){let t=f.caretRangeFromPoint(u,d);t&&(({startContainer:v,startOffset:b}=t),(!e.contentDOM.contains(v)||G8.safari&&function(e,t,n){let o;if(3!=e.nodeType||t!=(o=e.nodeValue.length))return!1;for(let r=e.nextSibling;r;r=r.nextSibling)if(1!=r.nodeType||"BR"!=r.nodeName)return!1;return M8(e,o-1,o).getBoundingClientRect().left>n}(v,b,u)||G8.chrome&&function(e,t,n){if(0!=t)return!1;for(let r=e;;){let e=r.parentNode;if(!e||1!=e.nodeType||e.firstChild!=r)return!1;if(e.classList.contains("cm-line"))break;r=e}let o=1==e.nodeType?e.getBoundingClientRect():M8(e,0,Math.max(e.nodeValue.length,1)).getBoundingClientRect();return n-o.left>5}(v,b,u))&&(v=void 0))}if(!v||!e.docView.dom.contains(v)){let t=c5.find(e.docView,h);if(!t)return p>l.top+l.height/2?l.to:l.from;({node:v,offset:b}=k6(t.dom,u,d))}let y=e.docView.nearest(v);if(!y)return null;if(y.isWidget&&1==(null===(i=y.dom)||void 0===i?void 0:i.nodeType)){let e=y.dom.getBoundingClientRect();return t.y1.5*e.defaultLineHeight){let t=e.viewState.heightOracle.textHeight;i+=Math.floor((r-n.top-.5*(e.defaultLineHeight-t))/t)*e.viewState.heightOracle.lineLength}let l=e.state.sliceDoc(n.from,n.to);return n.from+e8(l,i,e.state.tabSize)}function I6(e,t){let n=e.lineBlockAt(t);if(Array.isArray(n.type))for(let o of n.type)if(o.to>t||o.to==t&&(o.to==n.to||o.type==p5.Text))return o;return n}function E6(e,t,n,o){let r=e.state.doc.lineAt(t.head),i=e.bidiSpans(r),l=e.textDirectionAt(r.from);for(let a=t,s=null;;){let t=_5(r,i,l,a,n),c=z5;if(!t){if(r.number==(n?e.state.doc.lines:1))return a;c="\n",r=e.state.doc.line(r.number+(n?1:-1)),i=e.bidiSpans(r),t=e.visualLineSide(r,!n)}if(s){if(!s(c))return a}else{if(!o)return t;s=o(c)}a=t}}function A6(e,t,n){for(;;){let o=0;for(let r of e)r.between(t-1,t+1,((e,r,i)=>{if(t>e&&tt(e))),n.from,t.head>n.from?-1:1);return o==n.from?n:W3.cursor(o,onull)),G8.gecko&&(t=e.contentDOM.ownerDocument,l7.has(t)||(l7.add(t),t.addEventListener("copy",(()=>{})),t.addEventListener("cut",(()=>{}))))}handleEvent(e){(function(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n,o=t.target;o!=e.contentDOM;o=o.parentNode)if(!o||11==o.nodeType||(n=D8.get(o))&&n.ignoreEvent(t))return!1;return!0})(this.view,e)&&!this.ignoreDuringComposition(e)&&("keydown"==e.type&&this.keydown(e)||this.runHandlers(e.type,e))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let e of n.observers)e(this.view,t);for(let e of n.handlers){if(t.defaultPrevented)break;if(e(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=function(e){let t=Object.create(null);function n(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(let o of e){let e=o.spec;if(e&&e.domEventHandlers)for(let t in e.domEventHandlers){let r=e.domEventHandlers[t];r&&n(t).handlers.push(j6(o.value,r))}if(e&&e.domEventObservers)for(let t in e.domEventObservers){let r=e.domEventObservers[t];r&&n(t).observers.push(j6(o.value,r))}}for(let o in Q6)n(o).handlers.push(Q6[o]);for(let o in H6)n(o).observers.push(H6[o]);return t}(e),n=this.handlers,o=this.view.contentDOM;for(let r in t)if("scroll"!=r){let e=!t[r].handlers.length,i=n[r];i&&e!=!i.handlers.length&&(o.removeEventListener(r,this.handleEvent),i=null),i||o.addEventListener(r,this.handleEvent,{passive:e})}for(let r in n)"scroll"==r||t[r]||o.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()t.keyCode==e.keyCode)))&&!e.ctrlKey||N6.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(229!=e.keyCode&&this.view.observer.forceFlush(),!1):(this.pendingIOSKey=t||e,setTimeout((()=>this.flushIOSKey()),250),!0)}flushIOSKey(){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,T8(this.view.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(e){return!!/^key/.test(e.type)&&(this.composing>0||!!(G8.safari&&!G8.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function j6(e,t){return(n,o)=>{try{return t.call(e,o,n)}catch(Lpe){q5(n.state,Lpe)}}}const B6=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],N6="dthko",z6=[16,17,18,20,91,92,224,225];function _6(e){return.7*Math.max(0,e)+8}class L6{constructor(e,t,n,o){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=o,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParent=function(e){let t=e.ownerDocument;for(let n=e.parentNode;n&&n!=t.body;)if(1==n.nodeType){if(n.scrollHeight>n.clientHeight||n.scrollWidth>n.clientWidth)return n;n=n.assignedSlot||n.parentNode}else{if(11!=n.nodeType)break;n=n.host}return null}(e.contentDOM),this.atoms=e.state.facet(s6).map((t=>t(e)));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(j4.allowMultipleSelections)&&function(e,t){let n=e.state.facet(Q5);return n.length?n[0](t):G8.mac?t.metaKey:t.ctrlKey}(e,t),this.dragging=!(!function(e,t){let{main:n}=e.state.selection;if(n.empty)return!1;let o=h8(e.root);if(!o||0==o.rangeCount)return!0;let r=o.getRangeAt(0).getClientRects();for(let i=0;i=t.clientX&&e.top<=t.clientY&&e.bottom>=t.clientY)return!0}return!1}(e,t)||1!=e7(t))&&null}start(e){!1===this.dragging&&this.select(e)}move(e){var t,n,o;if(0==e.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(n=this.startEvent,o=e,Math.max(Math.abs(n.clientX-o.clientX),Math.abs(n.clientY-o.clientY))<10))return;this.select(this.lastEvent=e);let r=0,i=0,l=(null===(t=this.scrollParent)||void 0===t?void 0:t.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},a=p6(this.view);e.clientX-a.left<=l.left+6?r=-_6(l.left-e.clientX):e.clientX+a.right>=l.right-6&&(r=_6(e.clientX-l.right)),e.clientY-a.top<=l.top+6?i=-_6(l.top-e.clientY):e.clientY+a.bottom>=l.bottom-6&&(i=_6(e.clientY-l.bottom)),this.setScrollSpeed(r,i)}up(e){null==this.dragging&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?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(e){let t=null;for(let n=0;nthis.select(this.lastEvent)),20)}}const Q6=Object.create(null),H6=Object.create(null),F6=G8.ie&&G8.ie_version<15||G8.ios&&G8.webkit_version<604;function W6(e,t){let n,{state:o}=e,r=1,i=o.toText(t),l=i.lines==o.selection.ranges.length;if(null!=n7&&o.selection.ranges.every((e=>e.empty))&&n7==i.toString()){let e=-1;n=o.changeByRange((n=>{let a=o.doc.lineAt(n.from);if(a.from==e)return{range:n};e=a.from;let s=o.toText((l?i.line(r++).text:t)+o.lineBreak);return{changes:{from:a.from,insert:s},range:W3.cursor(n.from+s.length)}}))}else n=l?o.changeByRange((e=>{let t=i.line(r++);return{changes:{from:e.from,to:e.to,insert:t.text},range:W3.cursor(e.from+t.length)}})):o.replaceSelection(i);e.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}function Z6(e,t,n,o){if(1==o)return W3.cursor(t,n);if(2==o)return function(e,t,n=1){let o=e.charCategorizer(t),r=e.doc.lineAt(t),i=t-r.from;if(0==r.length)return W3.cursor(t);0==i?n=1:i==r.length&&(n=-1);let l=i,a=i;n<0?l=C3(r.text,i,!1):a=C3(r.text,i);let s=o(r.text.slice(l,a));for(;l>0;){let e=C3(r.text,l,!1);if(o(r.text.slice(e,l))!=s)break;l=e}for(;a{e.inputState.lastScrollTop=e.scrollDOM.scrollTop,e.inputState.lastScrollLeft=e.scrollDOM.scrollLeft},Q6.keydown=(e,t)=>(e.inputState.setSelectionOrigin("select"),27==t.keyCode&&(e.inputState.lastEscPress=Date.now()),!1),H6.touchstart=(e,t)=>{e.inputState.lastTouchTime=Date.now(),e.inputState.setSelectionOrigin("select.pointer")},H6.touchmove=e=>{e.inputState.setSelectionOrigin("select.pointer")},Q6.mousedown=(e,t)=>{if(e.observer.flush(),e.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let o of e.state.facet(F5))if(n=o(e,t),n)break;if(n||0!=t.button||(n=function(e,t){let n=K6(e,t),o=e7(t),r=e.state.selection;return{update(e){e.docChanged&&(n.pos=e.changes.mapPos(n.pos),r=r.map(e.changes))},get(t,i,l){let a,s=K6(e,t),c=Z6(e,s.pos,s.bias,o);if(n.pos!=s.pos&&!i){let t=Z6(e,n.pos,n.bias,o),r=Math.min(t.from,c.from),i=Math.max(t.to,c.to);c=r1&&(a=function(e,t){for(let n=0;n=t)return W3.create(e.ranges.slice(0,n).concat(e.ranges.slice(n+1)),e.mainIndex==n?0:e.mainIndex-(e.mainIndex>n?1:0))}return null}(r,s.pos))?a:l?r.addRange(c):W3.create([c])}}}(e,t)),n){let o=!e.hasFocus;e.inputState.startMouseSelection(new L6(e,t,n,o)),o&&e.observer.ignore((()=>P8(e.contentDOM)));let r=e.inputState.mouseSelection;if(r)return r.start(t),!1===r.dragging}return!1};let V6=(e,t)=>e>=t.top&&e<=t.bottom,X6=(e,t,n)=>V6(t,n)&&e>=n.left&&e<=n.right;function Y6(e,t,n,o){let r=c5.find(e.docView,t);if(!r)return 1;let i=t-r.posAtStart;if(0==i)return 1;if(i==r.length)return-1;let l=r.coordsAt(i,-1);if(l&&X6(n,o,l))return-1;let a=r.coordsAt(i,1);return a&&X6(n,o,a)?1:l&&V6(o,l)?-1:1}function K6(e,t){let n=e.posAtCoords({x:t.clientX,y:t.clientY},!1);return{pos:n,bias:Y6(e,n,t.clientX,t.clientY)}}const G6=G8.ie&&G8.ie_version<=11;let U6=null,q6=0,J6=0;function e7(e){if(!G6)return e.detail;let t=U6,n=J6;return U6=e,J6=Date.now(),q6=!t||n>Date.now()-400&&Math.abs(t.clientX-e.clientX)<2&&Math.abs(t.clientY-e.clientY)<2?(q6+1)%3:1}function t7(e,t,n,o){if(!n)return;let r=e.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:i}=e.inputState,l=o&&i&&function(e,t){let n=e.state.facet(H5);return n.length?n[0](t):G8.mac?!t.altKey:!t.ctrlKey}(e,t)?{from:i.from,to:i.to}:null,a={from:r,insert:n},s=e.state.changes(l?[l,a]:a);e.focus(),e.dispatch({changes:s,selection:{anchor:s.mapPos(r,-1),head:s.mapPos(r,1)},userEvent:l?"move.drop":"input.drop"}),e.inputState.draggedContent=null}Q6.dragstart=(e,t)=>{let{selection:{main:n}}=e.state;if(t.target.draggable){let o=e.docView.nearest(t.target);if(o&&o.isWidget){let e=o.posAtStart,t=e+o.length;(e>=n.to||t<=n.from)&&(n=W3.range(e,t))}}let{inputState:o}=e;return o.mouseSelection&&(o.mouseSelection.dragging=!0),o.draggedContent=n,t.dataTransfer&&(t.dataTransfer.setData("Text",e.state.sliceDoc(n.from,n.to)),t.dataTransfer.effectAllowed="copyMove"),!1},Q6.dragend=e=>(e.inputState.draggedContent=null,!1),Q6.drop=(e,t)=>{if(!t.dataTransfer)return!1;if(e.state.readOnly)return!0;let n=t.dataTransfer.files;if(n&&n.length){let o=Array(n.length),r=0,i=()=>{++r==n.length&&t7(e,t,o.filter((e=>null!=e)).join(e.state.lineBreak),!1)};for(let e=0;e{/[\x00-\x08\x0e-\x1f]{2}/.test(t.result)||(o[e]=t.result),i()},t.readAsText(n[e])}return!0}{let n=t.dataTransfer.getData("Text");if(n)return t7(e,t,n,!0),!0}return!1},Q6.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();let n=F6?null:t.clipboardData;return n?(W6(e,n.getData("text/plain")||n.getData("text/uri-text")),!0):(function(e){let t=e.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout((()=>{e.focus(),n.remove(),W6(e,n.value)}),50)}(e),!1)};let n7=null;Q6.copy=Q6.cut=(e,t)=>{let{text:n,ranges:o,linewise:r}=function(e){let t=[],n=[],o=!1;for(let r of e.selection.ranges)r.empty||(t.push(e.sliceDoc(r.from,r.to)),n.push(r));if(!t.length){let r=-1;for(let{from:o}of e.selection.ranges){let i=e.doc.lineAt(o);i.number>r&&(t.push(i.text),n.push({from:i.from,to:Math.min(e.doc.length,i.to+1)})),r=i.number}o=!0}return{text:t.join(e.lineBreak),ranges:n,linewise:o}}(e.state);if(!n&&!r)return!1;n7=r?n:null,"cut"!=t.type||e.state.readOnly||e.dispatch({changes:o,scrollIntoView:!0,userEvent:"delete.cut"});let i=F6?null:t.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(function(e,t){let n=e.dom.parentNode;if(!n)return;let o=n.appendChild(document.createElement("textarea"));o.style.cssText="position: fixed; left: -10000px; top: 10px",o.value=t,o.focus(),o.selectionEnd=t.length,o.selectionStart=0,setTimeout((()=>{o.remove(),e.focus()}),50)}(e,n),!1)};const o7=O4.define();function r7(e,t){let n=[];for(let o of e.facet(X5)){let r=o(e,t);r&&n.push(r)}return n?e.update({effects:n,annotations:o7.of(!0)}):null}function i7(e){setTimeout((()=>{let t=e.hasFocus;if(t!=e.inputState.notifiedFocused){let n=r7(e.state,t);n?e.dispatch(n):e.update([])}}),10)}H6.focus=e=>{e.inputState.lastFocusTime=Date.now(),e.scrollDOM.scrollTop||!e.inputState.lastScrollTop&&!e.inputState.lastScrollLeft||(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),i7(e)},H6.blur=e=>{e.observer.clearSelectionRange(),i7(e)},H6.compositionstart=H6.compositionupdate=e=>{null==e.inputState.compositionFirstChange&&(e.inputState.compositionFirstChange=!0),e.inputState.composing<0&&(e.inputState.composing=0)},H6.compositionend=e=>{e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=e.observer.pendingRecords().length>0,e.inputState.compositionFirstChange=null,G8.chrome&&G8.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then((()=>e.observer.flush())):setTimeout((()=>{e.inputState.composing<0&&e.docView.hasComposition&&e.update([])}),50)},H6.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},Q6.beforeinput=(e,t)=>{var n;let o;if(G8.chrome&&G8.android&&(o=B6.find((e=>e.inputType==t.inputType)))&&(e.observer.delayAndroidKey(o.key,o.keyCode),"Backspace"==o.key||"Delete"==o.key)){let t=(null===(n=window.visualViewport)||void 0===n?void 0:n.height)||0;setTimeout((()=>{var n;((null===(n=window.visualViewport)||void 0===n?void 0:n.height)||0)>t+10&&e.hasFocus&&(e.contentDOM.blur(),e.focus())}),100)}return!1};const l7=new Set,a7=["pre-wrap","normal","pre-line","break-spaces"];class s7{constructor(e){this.lineWrapping=e,this.doc=p3.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return a7.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=n,this.textHeight=o,this.lineLength=r,a){this.heightSamples={};for(let e=0;e0}set outdated(e){this.flags=(e?2:0)|-3&this.flags}setHeight(e,t){this.height!=t&&(Math.abs(this.height-t)>p7&&(e.heightChanged=!0),this.height=t)}replace(e,t,n){return h7.of(n)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,o){let r=this,i=n.doc;for(let l=o.length-1;l>=0;l--){let{fromA:a,toA:s,fromB:c,toB:u}=o[l],d=r.lineAt(a,d7.ByPosNoHeight,n.setDoc(t),0,0),p=d.to>=s?d:r.lineAt(s,d7.ByPosNoHeight,n,0,0);for(u+=p.to-s,s=p.to;l>0&&d.from<=o[l-1].toA;)a=o[l-1].fromA,c=o[l-1].fromB,l--,a2*r){let r=e[t-1];r.break?e.splice(--t,1,r.left,null,r.right):e.splice(--t,1,r.left,r.right),n+=1+r.break,o-=r.size}else{if(!(r>2*o))break;{let t=e[n];t.break?e.splice(n,1,t.left,null,t.right):e.splice(n,1,t.left,t.right),n+=2+t.break,r-=t.size}}else if(o=r&&i(this.blockAt(0,n,o,r))}updateHeight(e,t=0,n=!1,o){return o&&o.from<=t&&o.more&&this.setHeight(e,o.heights[o.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class g7 extends f7{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,n,o){return new u7(o,this.length,n,this.height,this.breaks)}replace(e,t,n){let o=n[0];return 1==n.length&&(o instanceof g7||o instanceof m7&&4&o.flags)&&Math.abs(this.length-o.length)<10?(o instanceof m7?o=new g7(o.length,this.height):o.height=this.height,this.outdated||(o.outdated=!1),o):h7.of(n)}updateHeight(e,t=0,n=!1,o){return o&&o.from<=t&&o.more?this.setHeight(e,o.heights[o.index++]):(n||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class m7 extends h7{constructor(e){super(e,0)}heightMetrics(e,t){let n,o=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,i=r-o+1,l=0;if(e.lineWrapping){let t=Math.min(this.height,e.lineHeight*i);n=t/i,this.length>i+1&&(l=(this.height-t)/(this.length-i-1))}else n=this.height/i;return{firstLine:o,lastLine:r,perLine:n,perChar:l}}blockAt(e,t,n,o){let{firstLine:r,lastLine:i,perLine:l,perChar:a}=this.heightMetrics(t,o);if(t.lineWrapping){let r=o+Math.round(Math.max(0,Math.min(1,(e-n)/this.height))*this.length),i=t.doc.lineAt(r),s=l+i.length*a,c=Math.max(n,e-s/2);return new u7(i.from,i.length,c,s,0)}{let o=Math.max(0,Math.min(i-r,Math.floor((e-n)/l))),{from:a,length:s}=t.doc.line(r+o);return new u7(a,s,n+l*o,l,0)}}lineAt(e,t,n,o,r){if(t==d7.ByHeight)return this.blockAt(e,n,o,r);if(t==d7.ByPosNoHeight){let{from:t,to:o}=n.doc.lineAt(e);return new u7(t,o-t,0,0,0)}let{firstLine:i,perLine:l,perChar:a}=this.heightMetrics(n,r),s=n.doc.lineAt(e),c=l+s.length*a,u=s.number-i,d=o+l*u+a*(s.from-r-u);return new u7(s.from,s.length,Math.max(o,Math.min(d,o+this.height-c)),c,0)}forEachLine(e,t,n,o,r,i){e=Math.max(e,r),t=Math.min(t,r+this.length);let{firstLine:l,perLine:a,perChar:s}=this.heightMetrics(n,r);for(let c=e,u=o;c<=t;){let t=n.doc.lineAt(c);if(c==e){let n=t.number-l;u+=a*n+s*(e-r-n)}let o=a+s*t.length;i(new u7(t.from,t.length,u,o,0)),u+=o,c=t.to+1}}replace(e,t,n){let o=this.length-t;if(o>0){let e=n[n.length-1];e instanceof m7?n[n.length-1]=new m7(e.length+o):n.push(null,new m7(o-1))}if(e>0){let t=n[0];t instanceof m7?n[0]=new m7(e+t.length):n.unshift(new m7(e-1),null)}return h7.of(n)}decomposeLeft(e,t){t.push(new m7(e-1),null)}decomposeRight(e,t){t.push(null,new m7(this.length-e-1))}updateHeight(e,t=0,n=!1,o){let r=t+this.length;if(o&&o.from<=t+this.length&&o.more){let n=[],i=Math.max(t,o.from),l=-1;for(o.from>t&&n.push(new m7(o.from-t-1).updateHeight(e,t));i<=r&&o.more;){let t=e.doc.lineAt(i).length;n.length&&n.push(null);let r=o.heights[o.index++];-1==l?l=r:Math.abs(r-l)>=p7&&(l=-2);let a=new g7(t,r);a.outdated=!1,n.push(a),i+=t+1}i<=r&&n.push(null,new m7(r-i).updateHeight(e,i));let a=h7.of(n);return(l<0||Math.abs(a.height-this.height)>=p7||Math.abs(l-this.heightMetrics(e,t).perLine)>=p7)&&(e.heightChanged=!0),a}return(n||this.outdated)&&(this.setHeight(e,e.heightForGap(t,t+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class v7 extends h7{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return 1&this.flags}blockAt(e,t,n,o){let r=n+this.left.height;return el))return s;let c=t==d7.ByPosNoHeight?d7.ByPosNoHeight:d7.ByPos;return a?s.join(this.right.lineAt(l,c,n,i,l)):this.left.lineAt(l,c,n,o,r).join(s)}forEachLine(e,t,n,o,r,i){let l=o+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,n,l,a,i);else{let s=this.lineAt(a,d7.ByPos,n,o,r);e=e&&s.from<=t&&i(s),t>s.to&&this.right.forEachLine(s.to+1,t,n,l,a,i)}}replace(e,t,n){let o=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-o,t-o,n));let r=[];e>0&&this.decomposeLeft(e,r);let i=r.length;for(let l of n)r.push(l);if(e>0&&b7(r,i-1),t=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,o=n+this.break;if(e>=o)return this.right.decomposeRight(e-o,t);e2*t.size||t.size>2*e.size?h7.of(this.break?[e,null,t]:[e,t]):(this.left=e,this.right=t,this.height=e.height+t.height,this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,o){let{left:r,right:i}=this,l=t+r.length+this.break,a=null;return o&&o.from<=t+r.length&&o.more?a=r=r.updateHeight(e,t,n,o):r.updateHeight(e,t,n),o&&o.from<=l+i.length&&o.more?a=i=i.updateHeight(e,l,n,o):i.updateHeight(e,l,n),a?this.balanced(r,i):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function b7(e,t){let n,o;null==e[t]&&(n=e[t-1])instanceof m7&&(o=e[t+1])instanceof m7&&e.splice(t-1,3,new m7(n.length+1+o.length))}class y7{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let e=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof g7?n.length+=e-this.pos:(e>this.pos||!this.isCovered)&&this.nodes.push(new g7(e-this.pos,-1)),this.writtenTo=e,t>e&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e=5)&&this.addLineDeco(o,r,i)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new g7(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let n=new m7(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof g7)return e;let t=new g7(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let o=this.ensureLine();o.length+=n,o.collapsed+=n,o.widgetHeight=Math.max(o.widgetHeight,e),o.breaks+=t,this.writtenTo=this.pos=this.pos+n}finish(e){let t=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||t instanceof g7||this.isCovered?(this.writtenTot.clientHeight||t.scrollWidth>t.clientWidth)&&"visible"!=n.overflow){let n=t.getBoundingClientRect();i=Math.max(i,n.left),l=Math.min(l,n.right),a=Math.max(a,n.top),s=c==e.parentNode?n.bottom:Math.min(s,n.bottom)}c="absolute"==n.position||"fixed"==n.position?t.offsetParent:t.parentNode}else{if(11!=c.nodeType)break;c=c.host}return{left:i-n.left,right:Math.max(i,l)-n.left,top:a-(n.top+t),bottom:Math.max(a,s)-(n.top+t)}}function x7(e,t){let n=e.getBoundingClientRect();return{left:0,right:n.right-n.left,top:t,bottom:n.bottom-(n.top+t)}}class $7{constructor(e,t,n){this.from=e,this.to=t,this.size=n}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n"function"!=typeof e&&"cm-lineWrapping"==e.class));this.heightOracle=new s7(t),this.stateDeco=e.facet(l6).filter((e=>"function"!=typeof e)),this.heightMap=h7.empty().applyChanges(this.stateDeco,p3.empty,this.heightOracle.setDoc(e.doc),[new f6(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=h5.set(this.lineGaps.map((e=>e.draw(this,!1)))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let o=n?t.head:t.anchor;if(!e.some((({from:e,to:t})=>o>=e&&o<=t))){let{from:t,to:n}=this.lineBlockAt(o);e.push(new k7(t,n))}}this.viewports=e.sort(((e,t)=>e.from-t.from)),this.scaler=this.heightMap.height<=7e6?I7:new E7(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,(e=>{this.viewportLines.push(1==this.scaler.scale?e:A7(e,this.scaler))}))}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=this.state.facet(l6).filter((e=>"function"!=typeof e));let o=e.changedRanges,r=f6.extendWithRanges(o,function(e,t,n){let o=new O7;return Q4.compare(e,t,n,o,0),o.changes}(n,this.stateDeco,e?e.changes:B3.empty(this.state.doc.length))),i=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=i&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let s=!e.changes.empty||2&e.flags||a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,this.updateForViewport(),s&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(K5)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,n=window.getComputedStyle(t),o=this.heightOracle,r=n.whiteSpace;this.defaultTextDirection="rtl"==n.direction?x5.RTL:x5.LTR;let i=this.heightOracle.mustRefreshForWrapping(r),l=t.getBoundingClientRect(),a=i||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let s=0,c=0;if(l.width&&l.height){let{scaleX:e,scaleY:n}=$8(t,l);this.scaleX==e&&this.scaleY==n||(this.scaleX=e,this.scaleY=n,s|=8,i=a=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,d=(parseInt(n.paddingBottom)||0)*this.scaleY;this.paddingTop==u&&this.paddingBottom==d||(this.paddingTop=u,this.paddingBottom=d,s|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(o.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,s|=8);let p=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=p&&(this.scrollAnchorHeight=-1,this.scrollTop=p),this.scrolledToBottom=E8(e.scrollDOM);let h=(this.printing?x7:w7)(t,this.paddingTop),f=h.top-this.pixelViewport.top,g=h.bottom-this.pixelViewport.bottom;this.pixelViewport=h;let m=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(m!=this.inView&&(this.inView=m,m&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let v=l.width;if(this.contentDOMWidth==v&&this.editorHeight==e.scrollDOM.clientHeight||(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,s|=8),a){let t=e.docView.measureVisibleLineHeights(this.viewport);if(o.mustRefreshForHeights(t)&&(i=!0),i||o.lineWrapping&&Math.abs(v-this.contentDOMWidth)>o.charWidth){let{lineHeight:n,charWidth:l,textHeight:a}=e.docView.measureTextSize();i=n>0&&o.refresh(r,n,l,a,v/l,t),i&&(e.docView.minWidth=0,s|=8)}f>0&&g>0?c=Math.max(f,g):f<0&&g<0&&(c=Math.min(f,g)),o.heightChanged=!1;for(let n of this.viewports){let r=n.from==this.viewport.from?t:e.docView.measureVisibleLineHeights(n);this.heightMap=(i?h7.empty().applyChanges(this.stateDeco,p3.empty,this.heightOracle,[new f6(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(o,0,i,new c7(n.from,r))}o.heightChanged&&(s|=2)}let b=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return b&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&s||b)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(i?[]:this.lineGaps,e)),s|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),s}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),o=this.heightMap,r=this.heightOracle,{visibleTop:i,visibleBottom:l}=this,a=new k7(o.lineAt(i-1e3*n,d7.ByHeight,r,0,0).from,o.lineAt(l+1e3*(1-n),d7.ByHeight,r,0,0).to);if(t){let{head:e}=t.range;if(ea.to){let n,i=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),l=o.lineAt(e,d7.ByPos,r,0,0);n="center"==t.y?(l.top+l.bottom)/2-i/2:"start"==t.y||"nearest"==t.y&&e=l+Math.max(10,Math.min(n,250)))&&o>i-2e3&&r>1,i=o<<1;if(this.defaultTextDirection!=x5.LTR&&!n)return[];let l=[],a=(o,i,s,c)=>{if(i-oo&&ee.from>=s.from&&e.to<=s.to&&Math.abs(e.from-o)e.fromt))));if(!p){if(ie.from<=i&&e.to>=i))){let e=t.moveToLineBoundary(W3.cursor(i),!1,!0).head;e>o&&(i=e)}p=new $7(o,i,this.gapSize(s,o,i,c))}l.push(p)};for(let s of this.viewportLines){if(s.lengths.from&&a(s.from,t,s,e),re.draw(this,this.heightOracle.lineWrapping)))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let t=[];Q4.spans(e,this.viewport.from,this.viewport.to,{span(e,n){t.push({from:e,to:n})},point(){}},20);let n=t.length!=this.visibleRanges.length||this.visibleRanges.some(((e,n)=>e.from!=t[n].from||e.to!=t[n].to));return this.visibleRanges=t,n?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find((t=>t.from<=e&&t.to>=e))||A7(this.heightMap.lineAt(e,d7.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return A7(this.heightMap.lineAt(this.scaler.fromDOM(e),d7.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return A7(this.heightMap.blockAt(this.scaler.fromDOM(e),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 k7{constructor(e,t){this.from=e,this.to=t}}function P7(e,t,n){let o=[],r=e,i=0;return Q4.spans(n,e,t,{span(){},point(e,t){e>r&&(o.push({from:r,to:e}),i+=e-r),r=t}},20),r=1)return t[t.length-1].to;let o=Math.floor(e*n);for(let r=0;;r++){let{from:e,to:n}=t[r],i=n-e;if(o<=i)return e+o;o-=i}}function T7(e,t){let n=0;for(let{from:o,to:r}of e.ranges){if(t<=r){n+=t-o;break}n+=r-o}return n/e.total}const I7={toDOM:e=>e,fromDOM:e=>e,scale:1};class E7{constructor(e,t,n){let o=0,r=0,i=0;this.viewports=n.map((({from:n,to:r})=>{let i=t.lineAt(n,d7.ByPos,e,0,0).top,l=t.lineAt(r,d7.ByPos,e,0,0).bottom;return o+=l-i,{from:n,to:r,top:i,bottom:l,domTop:0,domBottom:0}})),this.scale=(7e6-o)/(t.height-o);for(let l of this.viewports)l.domTop=i+(l.top-r)*this.scale,i=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,n=0,o=0;;t++){let r=tA7(e,t))):e._content)}const R7=X3.define({combine:e=>e.join(" ")}),D7=X3.define({combine:e=>e.indexOf(!0)>-1}),j7=r8.newName(),B7=r8.newName(),N7=r8.newName(),z7={"&light":"."+B7,"&dark":"."+N7};function _7(e,t,n){return new r8(t,{finish:t=>/&/.test(t)?t.replace(/&\w*/,(t=>{if("&"==t)return e;if(!n||!n[t])throw new RangeError(`Unsupported selector: ${t}`);return n[t]})):e+" "+t})}const L7=_7("."+j7,{"&":{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",minHeight:"100%",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"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&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"}},z7),Q7="";class H7{constructor(e,t){this.points=e,this.text="",this.lineSeparator=t.facet(j4.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Q7}readRange(e,t){if(!e)return this;let n=e.parentNode;for(let o=e;;){this.findPointBefore(n,o);let e=this.text.length;this.readNode(o);let r=o.nextSibling;if(r==t)break;let i=D8.get(o),l=D8.get(r);(i&&l?i.breakAfter:(i?i.breakAfter:W7(o))||W7(r)&&("BR"!=o.nodeName||o.cmIgnore)&&this.text.length>e)&&this.lineBreak(),o=r}return this.findPointBefore(n,t),this}readTextNode(e){let t=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,t.length));for(let n=0,o=this.lineSeparator?null:/\r\n?|\n/g;;){let r,i=-1,l=1;if(this.lineSeparator?(i=t.indexOf(this.lineSeparator,n),l=this.lineSeparator.length):(r=o.exec(t))&&(i=r.index,l=r[0].length),this.append(t.slice(n,i<0?t.length:i)),i<0)break;if(this.lineBreak(),l>1)for(let t of this.points)t.node==e&&t.pos>this.text.length&&(t.pos-=l-1);n=i+l}}readNode(e){if(e.cmIgnore)return;let t=D8.get(e),n=t&&t.overrideDOMText;if(null!=n){this.findPointInside(e,n.length);for(let e=n.iter();!e.next().done;)e.lineBreak?this.lineBreak():this.append(e.value)}else 3==e.nodeType?this.readTextNode(e):"BR"==e.nodeName?e.nextSibling&&this.lineBreak():1==e.nodeType&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==t&&(n.pos=this.text.length)}findPointInside(e,t){for(let n of this.points)(3==e.nodeType?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(F7(e,n.node,n.offset)?t:0))}}function F7(e,t,n){for(;;){if(!t||n-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,n,0))){let t=r||i?[]:function(e){let t=[];if(e.root.activeElement!=e.contentDOM)return t;let{anchorNode:n,anchorOffset:o,focusNode:r,focusOffset:i}=e.observer.selectionRange;return n&&(t.push(new Z7(n,o)),r==n&&i==o||t.push(new Z7(r,i))),t}(e),n=new H7(t,e.state);n.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=n.text,this.newSel=function(e,t){if(0==e.length)return null;let n=e[0].pos,o=2==e.length?e[1].pos:n;return n>-1&&o>-1?W3.single(n+t,o+t):null}(t,this.bounds.from)}else{let t=e.observer.selectionRange,n=r&&r.node==t.focusNode&&r.offset==t.focusOffset||!f8(e.contentDOM,t.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(t.focusNode,t.focusOffset),o=i&&i.node==t.anchorNode&&i.offset==t.anchorOffset||!f8(e.contentDOM,t.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(t.anchorNode,t.anchorOffset),l=e.viewport;if(G8.ios&&e.state.selection.main.empty&&n!=o&&(l.from>0||l.toDate.now()-100?e.inputState.lastKeyCode:-1;if(t.bounds){let{from:o,to:l}=t.bounds,a=r.from,s=null;(8===i||G8.android&&t.text.length0&&a>0&&e.charCodeAt(l-1)==t.charCodeAt(a-1);)l--,a--;return"end"==o&&(n-=l+Math.max(0,i-Math.min(l,a))-i),l=l?i-n:0,a=i+(a-l),l=i):a=a?i-n:0,l=i+(l-a),a=i),{from:i,toA:l,toB:a}}(e.state.doc.sliceString(o,l,Q7),t.text,a-o,s);c&&(G8.chrome&&13==i&&c.toB==c.from+2&&t.text.slice(c.from,c.toB)==Q7+Q7&&c.toB--,n={from:o+c.from,to:o+c.toA,insert:p3.of(t.text.slice(c.from,c.toB).split(Q7))})}else o&&(!e.hasFocus&&e.state.facet(J5)||o.main.eq(r))&&(o=null);if(!n&&!o)return!1;if(!n&&t.typeOver&&!r.empty&&o&&o.main.empty?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,r.to)}:n&&n.from>=r.from&&n.to<=r.to&&(n.from!=r.from||n.to!=r.to)&&r.to-r.from-(n.to-n.from)<=4?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,n.from).append(n.insert).append(e.state.doc.slice(n.to,r.to))}:(G8.mac||G8.android)&&n&&n.from==n.to&&n.from==r.head-1&&/^\. ?$/.test(n.insert.toString())&&"off"==e.contentDOM.getAttribute("autocorrect")?(o&&2==n.insert.length&&(o=W3.single(o.main.anchor-1,o.main.head-1)),n={from:r.from,to:r.to,insert:p3.of([" "])}):G8.chrome&&n&&n.from==n.to&&n.from==r.head&&"\n "==n.insert.toString()&&e.lineWrapping&&(o&&(o=W3.single(o.main.anchor-1,o.main.head-1)),n={from:r.from,to:r.to,insert:p3.of([" "])}),n){if(G8.ios&&e.inputState.flushIOSKey())return!0;if(G8.android&&(n.from==r.from&&n.to==r.to&&1==n.insert.length&&2==n.insert.lines&&T8(e.contentDOM,"Enter",13)||(n.from==r.from-1&&n.to==r.to&&0==n.insert.length||8==i&&n.insert.lengthr.head)&&T8(e.contentDOM,"Backspace",8)||n.from==r.from&&n.to==r.to+1&&0==n.insert.length&&T8(e.contentDOM,"Delete",46)))return!0;let t,l=n.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let a=()=>t||(t=function(e,t,n){let o,r=e.state,i=r.selection.main;if(t.from>=i.from&&t.to<=i.to&&t.to-t.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==t.from+t.insert.length)&&e.inputState.composing<0){let n=i.fromt.to?r.sliceDoc(t.to,i.to):"";o=r.replaceSelection(e.state.toText(n+t.insert.sliceString(0,void 0,e.state.lineBreak)+l))}else{let l=r.changes(t),a=n&&n.main.to<=l.newLength?n.main:void 0;if(r.selection.ranges.length>1&&e.inputState.composing>=0&&t.to<=i.to&&t.to>=i.to-10){let s,c=e.state.sliceDoc(t.from,t.to),u=n&&b6(e,n.main.head);if(u){let e=t.insert.length-(t.to-t.from);s={from:u.from,to:u.to-e}}else s=e.state.doc.lineAt(i.head);let d=i.to-t.to,p=i.to-i.from;o=r.changeByRange((n=>{if(n.from==i.from&&n.to==i.to)return{changes:l,range:a||n.map(l)};let o=n.to-d,u=o-c.length;if(n.to-n.from!=p||e.state.sliceDoc(u,o)!=c||n.to>=s.from&&n.from<=s.to)return{range:n};let h=r.changes({from:u,to:o,insert:t.insert}),f=n.to-i.to;return{changes:h,range:a?W3.range(Math.max(0,a.anchor+f),Math.max(0,a.head+f)):n.map(h)}}))}else o={changes:l,selection:a&&r.selection.replaceRange(a)}}let l="input.type";return(e.composing||e.inputState.compositionPendingChange&&e.inputState.compositionEndedAt>Date.now()-50)&&(e.inputState.compositionPendingChange=!1,l+=".compose",e.inputState.compositionFirstChange&&(l+=".start",e.inputState.compositionFirstChange=!1)),r.update(o,{userEvent:l,scrollIntoView:!0})}(e,n,o));return e.state.facet(V5).some((t=>t(e,n.from,n.to,l,a)))||e.dispatch(a()),!0}if(o&&!o.main.eq(r)){let t=!1,n="select";return e.inputState.lastSelectionTime>Date.now()-50&&("select"==e.inputState.lastSelectionOrigin&&(t=!0),n=e.inputState.lastSelectionOrigin),e.dispatch({selection:o,scrollIntoView:t,userEvent:n}),!0}return!1}const Y7={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},K7=G8.ie&&G8.ie_version<=11;class G7{constructor(e){this.view=e,this.active=!1,this.selectionRange=new S8,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.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver((t=>{for(let e of t)this.queue.push(e);(G8.ie&&G8.ie_version<=11||G8.ios&&e.composing)&&t.some((e=>"childList"==e.type&&e.removedNodes.length||"characterData"==e.type&&e.oldValue.length>e.target.nodeValue.length))?this.flushSoon():this.flush()})),K7&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.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 e;(null===(e=this.view.docView)||void 0===e?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.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((e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))}),{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}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(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some(((t,n)=>t!=e[n])))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,o=this.selectionRange;if(n.state.facet(J5)?n.root.activeElement!=this.dom:!g8(n.dom,o))return;let r=o.anchorNode&&n.docView.nearest(o.anchorNode);r&&r.ignoreEvent(e)?t||(this.selectionChanged=!1):(G8.ie&&G8.ie_version<=11||G8.android&&G8.chrome)&&!n.state.selection.main.empty&&o.focusNode&&v8(o.focusNode,o.focusOffset,o.anchorNode,o.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=G8.safari&&11==e.root.nodeType&&function(e){let t=e.activeElement;for(;t&&t.shadowRoot;)t=t.shadowRoot.activeElement;return t}(this.dom.ownerDocument)==this.dom&&function(e){let t=null;function n(e){e.preventDefault(),e.stopImmediatePropagation(),t=e.getTargetRanges()[0]}if(e.contentDOM.addEventListener("beforeinput",n,!0),e.dom.ownerDocument.execCommand("indent"),e.contentDOM.removeEventListener("beforeinput",n,!0),!t)return null;let o=t.startContainer,r=t.startOffset,i=t.endContainer,l=t.endOffset,a=e.docView.domAtPos(e.state.selection.main.anchor);return v8(a.node,a.offset,i,l)&&([o,r,i,l]=[i,l,o,r]),{anchorNode:o,anchorOffset:r,focusNode:i,focusOffset:l}}(this.view)||h8(e.root);if(!t||this.selectionRange.eq(t))return!1;let n=g8(this.dom,t);return n&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&e.force&&T8(this.dom,e.key,e.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(e)}this.delayedAndroidKey&&"Enter"!=e||(this.delayedAndroidKey={key:e,keyCode:t,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 e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,o=!1;for(let r of e){let e=this.readMutation(r);e&&(e.typeOver&&(o=!0),-1==t?({from:t,to:n}=e):(t=Math.min(e.from,t),n=Math.max(e.to,n)))}return{from:t,to:n,typeOver:o}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),o=this.selectionChanged&&g8(this.dom,this.selectionRange);if(e<0&&!o)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new V7(this.view,e,t,n);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,o=X7(this.view,t);return this.view.state==n&&this.view.update([]),o}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty("attributes"==e.type),"attributes"==e.type&&(t.flags|=4),"childList"==e.type){let n=U7(t,e.previousSibling||e.target.previousSibling,-1),o=U7(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:o?t.posBefore(o):t.posAtEnd,typeOver:!1}}return"characterData"==e.type?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var e,t,n;this.stop(),null===(e=this.intersection)||void 0===e||e.disconnect(),null===(t=this.gapIntersection)||void 0===t||t.disconnect(),null===(n=this.resizeScroll)||void 0===n||n.disconnect();for(let o of this.scrollTargets)o.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 U7(e,t,n){for(;t;){let o=D8.get(t);if(o&&o.parent==e)return o;let r=t.parentNode;t=r!=e.dom?r:n>0?t.nextSibling:t.previousSibling}return null}class q7{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(e={}){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.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:t}=e;this.dispatchTransactions=e.dispatchTransactions||t&&(e=>e.forEach((e=>t(e,this))))||(e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||function(e){for(;e;){if(e&&(9==e.nodeType||11==e.nodeType&&e.host))return e;e=e.assignedSlot||e.parentNode}return null}(e.parent)||document,this.viewState=new C7(e.state||j4.create(e)),e.scrollTo&&e.scrollTo.is(U5)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(t6).map((e=>new o6(e)));for(let n of this.plugins)n.update(this);this.observer=new G7(this),this.inputState=new D6(this),this.inputState.ensureHandlers(this.plugins),this.docView=new m6(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(...e){let t=1==e.length&&e[0]instanceof S4?e:1==e.length&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t,n=!1,o=!1,r=this.state;for(let d of e){if(d.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=d.state}if(this.destroyed)return void(this.viewState.state=r);let i=this.hasFocus,l=0,a=null;e.some((e=>e.annotation(o7)))?(this.inputState.notifiedFocused=i,l=1):i!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=i,a=r7(r,i),a||(l=1));let s=this.observer.delayedAndroidKey,c=null;if(s?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(c=null)):this.observer.clear(),r.facet(j4.phrases)!=this.state.facet(j4.phrases))return this.setState(r);t=g6.create(this,r,e),t.flags|=l;let u=this.viewState.scrollTarget;try{this.updateState=2;for(let t of e){if(u&&(u=u.map(t.changes)),t.scrollIntoView){let{main:e}=t.state.selection;u=new G5(e.empty?e:W3.cursor(e.head,e.head>e.anchor?-1:1))}for(let e of t.effects)e.is(U5)&&(u=e.value.clip(this.state))}this.viewState.update(t,u),this.bidiCache=t9.update(this.bidiCache,t.changes),t.empty||(this.updatePlugins(t),this.inputState.update(t)),n=this.docView.update(t),this.state.facet(h6)!=this.styleModules&&this.mountStyles(),o=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some((e=>e.isUserEvent("select.pointer"))))}finally{this.updateState=0}if(t.startState.facet(R7)!=t.state.facet(R7)&&(this.viewState.mustMeasureContent=!0),(n||o||u||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!t.empty)for(let d of this.state.facet(Z5))try{d(t)}catch(Lpe){q5(this.state,Lpe,"update listener")}(a||c)&&Promise.resolve().then((()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!X7(this,c)&&s.force&&T8(this.contentDOM,s.key,s.keyCode)}))}setState(e){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=e);this.updateState=2;let t=this.hasFocus;try{for(let e of this.plugins)e.destroy(this);this.viewState=new C7(e),this.plugins=e.facet(t6).map((e=>new o6(e))),this.pluginMap.clear();for(let e of this.plugins)e.update(this);this.docView.destroy(),this.docView=new m6(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(t6),n=e.state.facet(t6);if(t!=n){let o=[];for(let r of n){let n=t.indexOf(r);if(n<0)o.push(new o6(r));else{let t=this.plugins[n];t.mustUpdate=e,o.push(t)}}for(let t of this.plugins)t.mustUpdate!=e&&t.destroy(this);this.plugins=o,this.pluginMap.clear()}else for(let o of this.plugins)o.mustUpdate=e;for(let o=0;o-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.scrollDOM,o=n.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:i}=this.viewState;Math.abs(o-this.viewState.scrollTop)>1&&(i=-1),this.viewState.scrollAnchorHeight=-1;try{for(let e=0;;e++){if(i<0)if(E8(n))r=-1,i=this.viewState.heightMap.height;else{let e=this.viewState.scrollAnchorAt(o);r=e.from,i=e.top}this.updateState=1;let l=this.viewState.measure(this);if(!l&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(e>5)break;let a=[];4&l||([this.measureRequests,a]=[a,this.measureRequests]);let s=a.map((e=>{try{return e.read(this)}catch(Lpe){return q5(this.state,Lpe),e9}})),c=g6.create(this,this.state,[]),u=!1;c.flags|=l,t?t.flags|=l:t=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c));for(let e=0;e1||e<-1){o+=e,n.scrollTop=o/this.scaleY,i=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Z5))l(t)}get themeClasses(){return j7+" "+(this.state.facet(D7)?N7:B7)+" "+this.state.facet(R7)}updateAttrs(){let e=n9(this,r6,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(J5)?"true":"false",class:"cm-content",style:`${G8.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),n9(this,i6,t);let n=this.observer.ignore((()=>{let n=a5(this.contentDOM,this.contentAttrs,t),o=a5(this.dom,this.editorAttrs,e);return n||o}));return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(e){let t=!0;for(let n of e)for(let e of n.effects)e.is(q7.announce)&&(t&&(this.announceDOM.textContent=""),t=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=e.value)}mountStyles(){this.styleModules=this.state.facet(h6);let e=this.state.facet(q7.cspNonce);r8.mount(this.root,this.styleModules.concat(L7).reverse(),e?{nonce:e}: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(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame((()=>this.measure()))),e){if(this.measureRequests.indexOf(e)>-1)return;if(null!=e.key)for(let t=0;tt.spec==e))||null),t&&t.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(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return R6(this,e,E6(this,e,t,n))}moveByGroup(e,t){return R6(this,e,E6(this,e,t,(t=>function(e,t,n){let o=e.state.charCategorizer(t),r=o(n);return e=>{let t=o(e);return r==E4.Space&&(r=t),r==t}}(this,e.head,t))))}visualLineSide(e,t){let n=this.bidiSpans(e),o=this.textDirectionAt(e.from),r=n[t?n.length-1:0];return W3.cursor(r.side(t,o)+e.from,r.forward(!t,o)?1:-1)}moveToLineBoundary(e,t,n=!0){return function(e,t,n,o){let r=I6(e,t.head),i=o&&r.type==p5.Text&&(e.lineWrapping||r.widgetLineBreaks)?e.coordsAtPos(t.assoc<0&&t.head>r.from?t.head-1:t.head):null;if(i){let t=e.dom.getBoundingClientRect(),o=e.textDirectionAt(r.from),l=e.posAtCoords({x:n==(o==x5.LTR)?t.right-1:t.left+1,y:(i.top+i.bottom)/2});if(null!=l)return W3.cursor(l,n?-1:1)}return W3.cursor(n?r.to:r.from,n?-1:1)}(this,e,t,n)}moveVertically(e,t,n){return R6(this,e,function(e,t,n,o){let r=t.head,i=n?1:-1;if(r==(n?e.state.doc.length:0))return W3.cursor(r,t.assoc);let l,a=t.goalColumn,s=e.contentDOM.getBoundingClientRect(),c=e.coordsAtPos(r,t.assoc||-1),u=e.documentTop;if(c)null==a&&(a=c.left-s.left),l=i<0?c.top:c.bottom;else{let t=e.viewState.lineBlockAt(r);null==a&&(a=Math.min(s.right-s.left,e.defaultCharacterWidth*(r-t.from))),l=(i<0?t.top:t.bottom)+u}let d=s.left+a,p=null!=o?o:e.viewState.heightOracle.textHeight>>1;for(let h=0;;h+=10){let t=l+(p+h)*i,n=M6(e,{x:d,y:t},!1,i);if(ts.bottom||(i<0?nr)){let o=e.docView.coordsForChar(n),r=!o||t0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Y5)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>J7)return N5(e.length);let t,n=this.textDirectionAt(e.from);for(let r of this.bidiCache)if(r.from==e.from&&r.dir==n&&(r.fresh||R5(r.isolates,t=u6(this,e))))return r.order;t||(t=u6(this,e));let o=function(e,t,n){if(!e)return[new A5(0,0,t==S5?1:0)];if(t==$5&&!n.length&&!E5.test(e))return N5(e.length);if(n.length)for(;e.length>D5.length;)D5[D5.length]=256;let o=[],r=t==$5?0:1;return B5(e,r,r,n,0,e.length,o),o}(e.text,n,t);return this.bidiCache.push(new t9(e.from,e.to,n,t,!0,o)),o}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||G8.safari&&(null===(e=this.inputState)||void 0===e?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore((()=>{P8(this.contentDOM),this.docView.updateSelection()}))}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((9==e.nodeType?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return U5.of(new G5("number"==typeof e?W3.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return U5.of(new G5(W3.cursor(n.from),"start","start",n.top-e,t,!0))}static domEventHandlers(e){return n6.define((()=>({})),{eventHandlers:e})}static domEventObservers(e){return n6.define((()=>({})),{eventObservers:e})}static theme(e,t){let n=r8.newName(),o=[R7.of(n),h6.of(_7(`.${n}`,e))];return t&&t.dark&&o.push(D7.of(!0)),o}static baseTheme(e){return l4.lowest(h6.of(_7("."+j7,e,z7)))}static findFromDOM(e){var t;let n=e.querySelector(".cm-content"),o=n&&D8.get(n)||D8.get(e);return(null===(t=null==o?void 0:o.rootView)||void 0===t?void 0:t.view)||null}}q7.styleModule=h6,q7.inputHandler=V5,q7.focusChangeEffect=X5,q7.perLineTextDirection=Y5,q7.exceptionSink=W5,q7.updateListener=Z5,q7.editable=J5,q7.mouseSelectionStyle=F5,q7.dragMovesSelection=H5,q7.clickAddsSelectionRange=Q5,q7.decorations=l6,q7.outerDecorations=a6,q7.atomicRanges=s6,q7.bidiIsolatedRanges=c6,q7.scrollMargins=d6,q7.darkTheme=D7,q7.cspNonce=X3.define({combine:e=>e.length?e[0]:""}),q7.contentAttributes=i6,q7.editorAttributes=r6,q7.lineWrapping=q7.contentAttributes.of({class:"cm-lineWrapping"}),q7.announce=$4.define();const J7=4096,e9={};class t9{constructor(e,t,n,o,r,i){this.from=e,this.to=t,this.dir=n,this.isolates=o,this.fresh=r,this.order=i}static update(e,t){if(t.empty&&!e.some((e=>e.fresh)))return e;let n=[],o=e.length?e[e.length-1].dir:x5.LTR;for(let r=Math.max(0,e.length-10);r=0;r--){let t=o[r],i="function"==typeof t?t(e):t;i&&r5(i,n)}return n}const o9=G8.mac?"mac":G8.windows?"win":G8.linux?"linux":"key";function r9(e,t,n){return t.altKey&&(e="Alt-"+e),t.ctrlKey&&(e="Ctrl-"+e),t.metaKey&&(e="Meta-"+e),!1!==n&&t.shiftKey&&(e="Shift-"+e),e}const i9=l4.default(q7.domEventHandlers({keydown:(e,t)=>u9(s9(t.state),e,t,"editor")})),l9=X3.define({enables:i9}),a9=new WeakMap;function s9(e){let t=e.facet(l9),n=a9.get(t);return n||a9.set(t,n=function(e,t=o9){let n=Object.create(null),o=Object.create(null),r=(e,t)=>{let n=o[e];if(null==n)o[e]=t;else if(n!=t)throw new Error("Key binding "+e+" is used both as a regular binding and as a multi-stroke prefix")},i=(e,o,i,l,a)=>{var s,c;let u=n[e]||(n[e]=Object.create(null)),d=o.split(/ (?!$)/).map((e=>function(e,t){const n=e.split(/-(?!$)/);let o,r,i,l,a=n[n.length-1];"Space"==a&&(a=" ");for(let s=0;s{let o=c9={view:t,prefix:n,scope:e};return setTimeout((()=>{c9==o&&(c9=null)}),4e3),!0}]})}let p=d.join(" ");r(p,!1);let h=u[p]||(u[p]={preventDefault:!1,stopPropagation:!1,run:(null===(c=null===(s=u._any)||void 0===s?void 0:s.run)||void 0===c?void 0:c.slice())||[]});i&&h.run.push(i),l&&(h.preventDefault=!0),a&&(h.stopPropagation=!0)};for(let l of e){let e=l.scope?l.scope.split(" "):["editor"];if(l.any)for(let t of e){let e=n[t]||(n[t]=Object.create(null));e._any||(e._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let t in e)e[t].run.push(l.any)}let o=l[t]||l.key;if(o)for(let t of e)i(t,o,l.run,l.preventDefault,l.stopPropagation),l.shift&&i(t,"Shift-"+o,l.shift,l.preventDefault,l.stopPropagation)}return n}(t.reduce(((e,t)=>e.concat(t)),[]))),n}let c9=null;function u9(e,t,n,o){let r=function(e){var t=!(c8&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||u8&&e.shiftKey&&e.key&&1==e.key.length||"Unidentified"==e.key)&&e.key||(e.shiftKey?s8:a8)[e.keyCode]||e.key||"Unidentified";return"Esc"==t&&(t="Escape"),"Del"==t&&(t="Delete"),"Left"==t&&(t="ArrowLeft"),"Up"==t&&(t="ArrowUp"),"Right"==t&&(t="ArrowRight"),"Down"==t&&(t="ArrowDown"),t}(t),i=A3(I3(r,0))==r.length&&" "!=r,l="",a=!1,s=!1,c=!1;c9&&c9.view==n&&c9.scope==o&&(l=c9.prefix+" ",z6.indexOf(t.keyCode)<0&&(s=!0,c9=null));let u,d,p=new Set,h=e=>{if(e){for(let o of e.run)if(!p.has(o)&&(p.add(o),o(n,t)))return e.stopPropagation&&(c=!0),!0;e.preventDefault&&(e.stopPropagation&&(c=!0),s=!0)}return!1},f=e[o];return f&&(h(f[l+r9(r,t,!i)])?a=!0:i&&(t.altKey||t.metaKey||t.ctrlKey)&&!(G8.windows&&t.ctrlKey&&t.altKey)&&(u=a8[t.keyCode])&&u!=r?(h(f[l+r9(u,t,!0)])||t.shiftKey&&(d=s8[t.keyCode])!=r&&d!=u&&h(f[l+r9(d,t,!1)]))&&(a=!0):i&&t.shiftKey&&h(f[l+r9(r,t,!0)])&&(a=!0),!a&&h(f._any)&&(a=!0)),s&&(a=!0),a&&c&&t.stopPropagation(),a}class d9{constructor(e,t,n,o,r){this.className=e,this.left=t,this.top=n,this.width=o,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className==this.className&&(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",null!=this.width&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,n){if(n.empty){let o=e.coordsAtPos(n.head,n.assoc||1);if(!o)return[];let r=p9(e);return[new d9(t,o.left-r.left,o.top-r.top,null,o.bottom-o.top)]}return function(e,t,n){if(n.to<=e.viewport.from||n.from>=e.viewport.to)return[];let o=Math.max(n.from,e.viewport.from),r=Math.min(n.to,e.viewport.to),i=e.textDirection==x5.LTR,l=e.contentDOM,a=l.getBoundingClientRect(),s=p9(e),c=l.querySelector(".cm-line"),u=c&&window.getComputedStyle(c),d=a.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),p=a.right-(u?parseInt(u.paddingRight):0),h=I6(e,o),f=I6(e,r),g=h.type==p5.Text?h:null,m=f.type==p5.Text?f:null;if(g&&(e.lineWrapping||h.widgetLineBreaks)&&(g=h9(e,o,g)),m&&(e.lineWrapping||f.widgetLineBreaks)&&(m=h9(e,r,m)),g&&m&&g.from==m.from)return b(y(n.from,n.to,g));{let t=g?y(n.from,null,g):O(h,!1),o=m?y(null,n.to,m):O(f,!0),r=[];return(g||h).to<(m||f).from-(g&&m?1:0)||h.widgetLineBreaks>1&&t.bottom+e.defaultLineHeight/2c&&i.from=r)break;a>o&&s(Math.max(e,o),null==t&&e<=c,Math.min(a,r),null==n&&a>=u,l.dir)}if(o=i.to+1,o>=r)break}return 0==a.length&&s(c,null==t,u,null==n,e.textDirection),{top:r,bottom:l,horizontal:a}}function O(e,t){let n=a.top+(t?e.top:e.bottom);return{top:n,bottom:n,horizontal:[]}}}(e,t,n)}}function p9(e){let t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==x5.LTR?t.left:t.right-e.scrollDOM.clientWidth*e.scaleX)-e.scrollDOM.scrollLeft*e.scaleX,top:t.top-e.scrollDOM.scrollTop*e.scaleY}}function h9(e,t,n){let o=W3.cursor(t);return{from:Math.max(n.from,e.moveToLineBoundary(o,!1,!0).from),to:Math.min(n.to,e.moveToLineBoundary(o,!0,!0).from),type:p5.Text}}class f9{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(g9)!=e.state.facet(g9)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}setOrder(e){let t=0,n=e.facet(g9);for(;t{return n=e,o=this.drawn[t],!(n.constructor==o.constructor&&n.eq(o));var n,o}))){let t=this.dom.firstChild,n=0;for(let o of e)o.update&&t&&o.constructor&&this.drawn[n].constructor&&o.update(t,this.drawn[n])?(t=t.nextSibling,n++):this.dom.insertBefore(o.draw(),t);for(;t;){let e=t.nextSibling;t.remove(),t=e}this.drawn=e}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const g9=X3.define();function m9(e){return[n6.define((t=>new f9(t,e))),g9.of(e)]}const v9=!G8.ios,b9=X3.define({combine:e=>B4(e,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})});function y9(e={}){return[b9.of(e),w9,$9,C9,K5.of(!0)]}function O9(e){return e.startState.facet(b9)!=e.state.facet(b9)}const w9=m9({above:!0,markers(e){let{state:t}=e,n=t.facet(b9),o=[];for(let r of t.selection.ranges){let i=r==t.selection.main;if(r.empty?!i||v9:n.drawRangeCursor){let t=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",n=r.empty?r:W3.cursor(r.head,r.head>r.anchor?-1:1);for(let r of d9.forRange(e,t,n))o.push(r)}}return o},update(e,t){e.transactions.some((e=>e.selection))&&(t.style.animationName="cm-blink"==t.style.animationName?"cm-blink2":"cm-blink");let n=O9(e);return n&&x9(e.state,t),e.docChanged||e.selectionSet||n},mount(e,t){x9(t.state,e)},class:"cm-cursorLayer"});function x9(e,t){t.style.animationDuration=e.facet(b9).cursorBlinkRate+"ms"}const $9=m9({above:!1,markers:e=>e.state.selection.ranges.map((t=>t.empty?[]:d9.forRange(e,"cm-selectionBackground",t))).reduce(((e,t)=>e.concat(t))),update:(e,t)=>e.docChanged||e.selectionSet||e.viewportChanged||O9(e),class:"cm-selectionLayer"}),S9={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};v9&&(S9[".cm-line"].caretColor="transparent !important",S9[".cm-content"]={caretColor:"transparent !important"});const C9=l4.highest(q7.theme(S9)),k9=$4.define({map:(e,t)=>null==e?null:t.mapPos(e)}),P9=e4.define({create:()=>null,update:(e,t)=>(null!=e&&(e=t.changes.mapPos(e)),t.effects.reduce(((e,t)=>t.is(k9)?t.value:e),e))}),M9=n6.fromClass(class{constructor(e){this.view=e,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(e){var t;let n=e.state.field(P9);null==n?null!=this.cursor&&(null===(t=this.cursor)||void 0===t||t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(e.startState.field(P9)!=n||e.docChanged||e.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:e}=this,t=e.state.field(P9),n=null!=t&&e.coordsAtPos(t);if(!n)return null;let o=e.scrollDOM.getBoundingClientRect();return{left:n.left-o.left+e.scrollDOM.scrollLeft*e.scaleX,top:n.top-o.top+e.scrollDOM.scrollTop*e.scaleY,height:n.bottom-n.top}}drawCursor(e){if(this.cursor){let{scaleX:t,scaleY:n}=this.view;e?(this.cursor.style.left=e.left/t+"px",this.cursor.style.top=e.top/n+"px",this.cursor.style.height=e.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(e){this.view.state.field(P9)!=e&&this.view.dispatch({effects:k9.of(e)})}},{eventObservers:{dragover(e){this.setDropPos(this.view.posAtCoords({x:e.clientX,y:e.clientY}))},dragleave(e){e.target!=this.view.contentDOM&&this.view.contentDOM.contains(e.relatedTarget)||this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function T9(e,t,n,o,r){t.lastIndex=0;for(let i,l=e.iterRange(n,o),a=n;!l.next().done;a+=l.value.length)if(!l.lineBreak)for(;i=t.exec(l.value);)r(a+i.index,i)}class I9{constructor(e){const{regexp:t,decoration:n,decorate:o,boundary:r,maxLength:i=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,o)this.addMatch=(e,t,n,r)=>o(r,n,n+e[0].length,e,t);else if("function"==typeof n)this.addMatch=(e,t,o,r)=>{let i=n(e,t,o);i&&r(o,o+e[0].length,i)};else{if(!n)throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.addMatch=(e,t,o,r)=>r(o,o+e[0].length,n)}this.boundary=r,this.maxLength=i}createDeco(e){let t=new H4,n=t.add.bind(t);for(let{from:o,to:r}of function(e,t){let n=e.visibleRanges;if(1==n.length&&n[0].from==e.viewport.from&&n[0].to==e.viewport.to)return n;let o=[];for(let{from:r,to:i}of n)r=Math.max(e.state.doc.lineAt(r).from,r-t),i=Math.min(e.state.doc.lineAt(i).to,i+t),o.length&&o[o.length-1].to>=r?o[o.length-1].to=i:o.push({from:r,to:i});return o}(e,this.maxLength))T9(e.state.doc,this.regexp,o,r,((t,o)=>this.addMatch(o,e,t,n)));return t.finish()}updateDeco(e,t){let n=1e9,o=-1;return e.docChanged&&e.changes.iterChanges(((t,r,i,l)=>{l>e.view.viewport.from&&i1e3?this.createDeco(e.view):o>-1?this.updateRange(e.view,t.map(e.changes),n,o):t}updateRange(e,t,n,o){for(let r of e.visibleRanges){let i=Math.max(r.from,n),l=Math.min(r.to,o);if(l>i){let n=e.state.doc.lineAt(i),o=n.ton.from;i--)if(this.boundary.test(n.text[i-1-n.from])){a=i;break}for(;lu.push(n.range(e,t));if(n==o)for(this.regexp.lastIndex=a-n.from;(c=this.regexp.exec(n.text))&&c.indexthis.addMatch(n,e,t,d)));t=t.update({filterFrom:a,filterTo:s,filter:(e,t)=>es,add:u})}}return t}}const E9=null!=/x/.unicode?"gu":"g",A9=new RegExp("[\0-\b\n--\u2028\u2029\ufeff-]",E9),R9={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let D9=null;const j9=X3.define({combine(e){let t=B4(e,{render:null,specialChars:A9,addSpecialChars:null});return(t.replaceTabs=!function(){var e;if(null==D9&&"undefined"!=typeof document&&document.body){let t=document.body.style;D9=null!=(null!==(e=t.tabSize)&&void 0!==e?e:t.MozTabSize)}return D9||!1}())&&(t.specialChars=new RegExp("\t|"+t.specialChars.source,E9)),t.addSpecialChars&&(t.specialChars=new RegExp(t.specialChars.source+"|"+t.addSpecialChars.source,E9)),t}});function B9(e={}){return[j9.of(e),N9||(N9=n6.fromClass(class{constructor(e){this.view=e,this.decorations=h5.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(e.state.facet(j9)),this.decorations=this.decorator.createDeco(e)}makeDecorator(e){return new I9({regexp:e.specialChars,decoration:(t,n,o)=>{let{doc:r}=n.state,i=I3(t[0],0);if(9==i){let e=r.lineAt(o),t=n.state.tabSize,i=J4(e.text,t,o-e.from);return h5.replace({widget:new _9((t-i%t)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=h5.replace({widget:new z9(e,i)}))},boundary:e.replaceTabs?void 0:/[^]/})}update(e){let t=e.state.facet(j9);e.startState.facet(j9)!=t?(this.decorator=this.makeDecorator(t),this.decorations=this.decorator.createDeco(e.view)):this.decorations=this.decorator.updateDeco(e,this.decorations)}},{decorations:e=>e.decorations}))]}let N9=null;class z9 extends d5{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=(n=this.code)>=32?"•":10==n?"":String.fromCharCode(9216+n);var n;let o=e.state.phrase("Control character")+" "+(R9[this.code]||"0x"+this.code.toString(16)),r=this.options.render&&this.options.render(this.code,o,t);if(r)return r;let i=document.createElement("span");return i.textContent=t,i.title=o,i.setAttribute("aria-label",o),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class _9 extends d5{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent="\t",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}const L9=h5.line({class:"cm-activeLine"}),Q9=n6.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.docChanged||e.selectionSet)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=-1,n=[];for(let o of e.state.selection.ranges){let r=e.lineBlockAt(o.head);r.from>t&&(n.push(L9.range(r.from)),t=r.from)}return h5.set(n)}},{decorations:e=>e.decorations});class H9 extends d5{constructor(e){super(),this.content=e}toDOM(){let e=document.createElement("span");return e.className="cm-placeholder",e.style.pointerEvents="none",e.appendChild("string"==typeof this.content?document.createTextNode(this.content):this.content),"string"==typeof this.content?e.setAttribute("aria-label","placeholder "+this.content):e.setAttribute("aria-hidden","true"),e}coordsAt(e){let t=e.firstChild?m8(e.firstChild):[];if(!t.length)return null;let n=window.getComputedStyle(e.parentNode),o=w8(t[0],"rtl"!=n.direction),r=parseInt(n.lineHeight);return o.bottom-o.top>1.5*r?{left:o.left,right:o.right,top:o.top,bottom:o.top+r}:o}ignoreEvent(){return!1}}const F9=2e3;function W9(e,t){let n=e.posAtCoords({x:t.clientX,y:t.clientY},!1),o=e.state.doc.lineAt(n),r=n-o.from,i=r>F9?-1:r==o.length?function(e,t){let n=e.coordsAtPos(e.viewport.from);return n?Math.round(Math.abs((n.left-t)/e.defaultCharacterWidth)):-1}(e,t.clientX):J4(o.text,e.state.tabSize,n-o.from);return{line:o.number,col:i,off:r}}function Z9(e,t){let n=W9(e,t),o=e.state.selection;return n?{update(e){if(e.docChanged){let t=e.changes.mapPos(e.startState.doc.line(n.line).from),r=e.state.doc.lineAt(t);n={line:r.number,col:n.col,off:Math.min(n.off,r.length)},o=o.map(e.changes)}},get(t,r,i){let l=W9(e,t);if(!l)return o;let a=function(e,t,n){let o=Math.min(t.line,n.line),r=Math.max(t.line,n.line),i=[];if(t.off>F9||n.off>F9||t.col<0||n.col<0){let l=Math.min(t.off,n.off),a=Math.max(t.off,n.off);for(let t=o;t<=r;t++){let n=e.doc.line(t);n.length<=a&&i.push(W3.range(n.from+l,n.to+a))}}else{let l=Math.min(t.col,n.col),a=Math.max(t.col,n.col);for(let t=o;t<=r;t++){let n=e.doc.line(t),o=e8(n.text,l,e.tabSize,!0);if(o<0)i.push(W3.cursor(n.to));else{let t=e8(n.text,a,e.tabSize);i.push(W3.range(n.from+o,n.from+t))}}}return i}(e.state,n,l);return a.length?i?W3.create(a.concat(o.ranges)):W3.create(a):o}}:null}function V9(e){let t=(null==e?void 0:e.eventFilter)||(e=>e.altKey&&0==e.button);return q7.mouseSelectionStyle.of(((e,n)=>t(n)?Z9(e,n):null))}const X9={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},Y9={style:"cursor: crosshair"};function K9(e={}){let[t,n]=X9[e.key||"Alt"],o=n6.fromClass(class{constructor(e){this.view=e,this.isDown=!1}set(e){this.isDown!=e&&(this.isDown=e,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==t||n(e))},keyup(e){e.keyCode!=t&&n(e)||this.set(!1)},mousemove(e){this.set(n(e))}}});return[o,q7.contentAttributes.of((e=>{var t;return(null===(t=e.plugin(o))||void 0===t?void 0:t.isDown)?Y9:null}))]}const G9="-10000px";class U9{constructor(e,t,n){this.facet=t,this.createTooltipView=n,this.input=e.state.facet(t),this.tooltips=this.input.filter((e=>e)),this.tooltipViews=this.tooltips.map(n)}update(e,t){var n;let o=e.state.facet(this.facet),r=o.filter((e=>e));if(o===this.input){for(let t of this.tooltipViews)t.update&&t.update(e);return!1}let i=[],l=t?[]:null;for(let a=0;at[n]=e)),t.length=l.length),this.input=o,this.tooltips=r,this.tooltipViews=i,!0}}function q9(e){let{win:t}=e;return{top:0,left:0,bottom:t.innerHeight,right:t.innerWidth}}const J9=X3.define({combine:e=>{var t,n,o;return{position:G8.ios?"absolute":(null===(t=e.find((e=>e.position)))||void 0===t?void 0:t.position)||"fixed",parent:(null===(n=e.find((e=>e.parent)))||void 0===n?void 0:n.parent)||null,tooltipSpace:(null===(o=e.find((e=>e.tooltipSpace)))||void 0===o?void 0:o.tooltipSpace)||q9}}}),eee=new WeakMap,tee=n6.fromClass(class{constructor(e){this.view=e,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let t=e.state.facet(J9);this.position=t.position,this.parent=t.parent,this.classes=e.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new U9(e,ree,(e=>this.createTooltip(e))),this.intersectionObserver="function"==typeof IntersectionObserver?new IntersectionObserver((e=>{Date.now()>this.lastTransaction-50&&e.length>0&&e[e.length-1].intersectionRatio<1&&this.measureSoon()}),{threshold:[1]}):null,this.observeIntersection(),e.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let e of this.manager.tooltipViews)this.intersectionObserver.observe(e.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout((()=>{this.measureTimeout=-1,this.maybeMeasure()}),50))}update(e){e.transactions.length&&(this.lastTransaction=Date.now());let t=this.manager.update(e,this.above);t&&this.observeIntersection();let n=t||e.geometryChanged,o=e.state.facet(J9);if(o.position!=this.position&&!this.madeAbsolute){this.position=o.position;for(let e of this.manager.tooltipViews)e.dom.style.position=this.position;n=!0}if(o.parent!=this.parent){this.parent&&this.container.remove(),this.parent=o.parent,this.createContainer();for(let e of this.manager.tooltipViews)this.container.appendChild(e.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(e){let t=e.create(this.view);if(t.dom.classList.add("cm-tooltip"),e.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let e=document.createElement("div");e.className="cm-tooltip-arrow",t.dom.appendChild(e)}return t.dom.style.position=this.position,t.dom.style.top=G9,t.dom.style.left="0px",this.container.appendChild(t.dom),t.mount&&t.mount(this.view),t}destroy(){var e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),null===(e=n.destroy)||void 0===e||e.call(n);this.parent&&this.container.remove(),null===(t=this.intersectionObserver)||void 0===t||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let e=this.view.dom.getBoundingClientRect(),t=1,n=1,o=!1;if("fixed"==this.position&&this.manager.tooltipViews.length){let{dom:e}=this.manager.tooltipViews[0];if(G8.gecko)o=e.offsetParent!=this.container.ownerDocument.body;else if(e.style.top==G9&&"0px"==e.style.left){let t=e.getBoundingClientRect();o=Math.abs(t.top+1e4)>1||Math.abs(t.left)>1}}if(o||"absolute"==this.position)if(this.parent){let e=this.parent.getBoundingClientRect();e.width&&e.height&&(t=e.width/this.parent.offsetWidth,n=e.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:n}=this.view.viewState);return{editor:e,parent:this.parent?this.container.getBoundingClientRect():e,pos:this.manager.tooltips.map(((e,t)=>{let n=this.manager.tooltipViews[t];return n.getCoords?n.getCoords(e.pos):this.view.coordsAtPos(e.pos)})),size:this.manager.tooltipViews.map((({dom:e})=>e.getBoundingClientRect())),space:this.view.state.facet(J9).tooltipSpace(this.view),scaleX:t,scaleY:n,makeAbsolute:o}}writeMeasure(e){var t;if(e.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let e of this.manager.tooltipViews)e.dom.style.position="absolute"}let{editor:n,space:o,scaleX:r,scaleY:i}=e,l=[];for(let a=0;a=Math.min(n.bottom,o.bottom)||d.rightMath.min(n.right,o.right)+.1){u.style.top=G9;continue}let h=s.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,f=h?7:0,g=p.right-p.left,m=null!==(t=eee.get(c))&&void 0!==t?t:p.bottom-p.top,v=c.offset||oee,b=this.view.textDirection==x5.LTR,y=p.width>o.right-o.left?b?o.left:o.right-p.width:b?Math.min(d.left-(h?14:0)+v.x,o.right-g):Math.max(o.left,d.left-g+(h?14:0)-v.x),O=this.above[a];!s.strictSide&&(O?d.top-(p.bottom-p.top)-v.yo.bottom)&&O==o.bottom-d.bottom>d.top-o.top&&(O=this.above[a]=!O);let w=(O?d.top-o.top:o.bottom-d.bottom)-f;if(wy&&e.top