{"version":3,"sources":["webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?5ee1","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?e770","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue?aa4f","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/down_error.png","webpack:///src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue?b44a","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue?b68d","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue?33ff","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue","webpack:///src/js/module/components/spin/spin.vue","webpack:///src/js/module/components/listConstruction/listConstruction.vue","webpack:///src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///src/js/module/components/noData/noData.vue","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./src/js/module/components/spin/spin.vue","webpack:///./src/js/module/components/spin/spin.vue?542d","webpack:///./src/js/module/components/spin/spin.vue?9371","webpack:///./src/js/module/components/spin/spin.vue?87eb","webpack:///./src/js/module/components/listConstruction/listConstruction.vue","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?b527","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?50be","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?6117","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?c652","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?7693","webpack:///./src/js/module/components/secondaryMenu/close.png","webpack:///./src/js/module/components/secondaryMenu/open.png","webpack:///./src/js/module/components/secondaryMenu/menu.js","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?048e","webpack:///./src/js/module/components/noData/noData.vue","webpack:///./src/js/module/components/noData/noData.vue?93a9","webpack:///./src/js/module/components/noData/noData.vue?86e8","webpack:///./src/js/module/components/noData/noData.vue?5a51","webpack:///./src/js/module/components/noData/images/errorTip.png","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/codemirror.js","webpack:///./node_modules/codemirror/mode/sql/sql.js","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/hint/sql-hint.js","webpack:///./node_modules/codemirror/addon/hint/xml-hint.js","webpack:///./node_modules/codemirror/mode/python/python.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/textile/textile.js","webpack:///./node_modules/codemirror/mode/shell/shell.js","webpack:///./src/js/module/util/util.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/common.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/utils.js","webpack:///src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue"],"names":["Object","defineProperty","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noType_vue__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noType_vue___default","n","__WEBPACK_IMPORT_KEY__","key","d","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_511724d0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_noType_vue__","__vue_styles__","ssrContext","Component","normalizeComponent","a","content","module","i","locals","exports","push","esExports","render","_h","this","$createElement","_c","_self","staticClass","attrs","src","alt","_v","_s","$t","staticRenderFns","p","_vuex","_common","_util","_utils","editor","name","data","isNoType","isLoading","filtTypeArr","loadingIndex","mode","isData","size","spinnerLoading","msg","props","methods","assign","mapActions","ok","_this","updateContent","id","$route","params","getValue","then","res","$message","success","setTimeout","close","catch","e","error","$router","_getViewResources","_this2","getViewResources","skipLineNum","limit","alias","split","_handlerEditor","setValue","$","scrollTop","scrollLeft","_codemirror2","default","readOnly","keypress","getOption","showHint","completeSingle","on","watch","created","file","_lodash2","_localStorage2","getItem","fileName","fileSize","lastIndexOf","substring","length","handlerSuffix","bytesToSize","parseInt","includes","trimStart","mounted","destroyed","toTextArea","off","computed","components","mListConstruction","_listConstruction2","mNoType","_noType2","mSpin","_spin2","mSecondaryMenu","_secondaryMenu2","mNoData","_noData2","_vm","type","title","staticStyle","margin","slot","_e","shape","disabled","click","$event","loading","is-spin","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6ba7df63_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__","isSpin","Boolean","isLeft","String","menuList","_menu2","index","isTogHide","className","is","layoutBox","addClass","removeClass","_toggleSubMenu","item","isOpen","_toggleMenu","factory","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","node","current","after","slice","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","style","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","joinClasses","b","as","createRange","start","end","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","Array","prototype","call","arguments","apply","copyObj","obj","target","overwrite","prop","hasOwnProperty","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","Delayed","array","set","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","lst","arr","map","out","nothing","createObj","base","inst","create","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","getLine","doc","first","Error","chunk","lines","children","sz","chunkSize","getBetween","line","iter","text","getLines","updateLineHeight","height","diff","lineNo","cur","no","lineAtHeight","h","outer","i$1","lh","isLine","l","lineNumberFor","options","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","clipPos","last","linelen","clipToLen","clipPosArray","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","found","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","splice","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","len","found$1","findMaxLine","cm","display","maxLine","maxLineLength","maxLineChanged","bidiOther","getBidiPartAt","order","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","types","prev","type$1","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","m","i$7","at","j$2","nstart","unshift","reverse","getOrder","noHandlers","emitter","addEventListener","attachEvent","map$$1","_handlers","concat","getHandlers","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","eol","sol","peek","undefined","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutters","gutterWidth","alignable","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","pageScrollY","marginTop","pageYOffset","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","get","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","_lineNo","ref","closestDist","endX","dist","baseX","chAround","boxAround","atLeft","atStart","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","alignHorizontally","alignWidgets","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","updateGutterSpace","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","native","null","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","viewChanged","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","updateLineNumbers","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","time","highlight","highlightWorker","Date","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","wheelDX","wheelDY","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","startGen","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","join","lineSeparator","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","keyMap","normalizeKeyName","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","activeTouch","supportsTouch","draggable","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","guttersChanged","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","init","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","_top","onDragStart","inp","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","addText","walk","cmText","markerID","isBlock","nodeName","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","contenteditable","defineMode","dependencies","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","cmpPos","addLegacyProps","version","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_16cfa774_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_spin_vue__","class","xmlns","xmlns:xlink","viewBox","preserveAspectRatio","transform","attributeName","values","keyTimes","dur","repeatCount","fill","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_eae3645c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_listConstruction_vue__","_t","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_f72bdd3a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_secondaryMenu_vue__","escape","_i18n","menu","projects","i18n","path","icon","security","resource","user","href","_l","$index","el","active-class","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noData_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_noData_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2d3808af_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_noData_vue__","_m","_codemirror","getElementById","hookIdentifier","hookVar","hookClient","config","parserConfig","client","atoms","false","true","builtin","defaultBuiltin","keywords","sqlKeywords","operatorChars","support","hooks","dateSQL","date","timestamp","backslashStringEscapes","brackets","punctuation","tokenBase","quote","hexNumber","binaryNumber","decimallessFloat","doubleQuote","tokenize","escaped","nCharCast","charsetCast","commentSlashSlash","commentHash","commentSpaceRequired","tokenComment","depth","zerolessFloat","ODBCdotTable","pushContext","tok","popContext","textAfter","cx","blockCommentStart","blockCommentEnd","lineComment","closeBrackets","words","@","`","\\","identifierQuote",":","?","\"","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","debounce","tick","startPos","startLen","self","activityFunc","getHints","async","newOpts","hintOptions","defaultOptions","resolve","parseOptions","selections","supportsSelection","completionActive","completion","requestAnimationFrame","fn","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","picked","parentWindow","defaultView","hints","selectedHint","completions","hintId","alignWithWord","below","winW","innerWidth","winH","overlapY","scrolls","startScroll","closingOnBlur","overlapX","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","ourMap","addBinding","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onScroll","curScroll","point","t","completeOnSingleClick","fetchHints","callback","closeCharacters","disable","myTick","finishUpdate","resolved","app","applicableHelpers","run","fromList","anyword","term","autocomplete","auto","tables","defaultTable","CONS","QUERY_DIV","ALIAS_KEYWORD","isArray","wrapTable","columns","getTable","shallowClone","object","addMatches","wordlist","formatter","cleanName","nameParts","insertIdentifierQuotes","eachWord","lineText","findTableByAlias","fullQuery","aliasUpperCase","previousWord","table","separator","validRange","indexOfSeparator","prevItem","query","wordUpperCase","parseTables","defaultTableName","disableKeywords","getKeywords","getIdentifierQuote","useIdentifierQuotes","cont","aliasTable","oldTable","tableInsert","nameCompletion","objectOrClass","matches","typed","matchInMiddle","tags","schemaInfo","quoteChar","prefix","tagStart","replaceToken","tagName","tagType","curTag","childList","globalAttrs","nm","atValues","atName","wordRegexp","wordOperators","commonKeywords","commonBuiltins","scopes","conf","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","hangingIndent","myKeywords","myBuiltins","extra_keywords","extra_builtins","py3","identifiers","stringPrefixes","builtins","lastToken","scopeOffset","lineOffset","pushPyScope","dedent","errorToken","tokenBaseInner","floatLiteral","intLiteral","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","tokenString","singleLineStringErrors","isString","formatStringFactory","tokenStringFactory","tokenLexer","beginningOfLine","lambda","delimiter_index","pushBracketScope","basecolumn","addErr","scope","triples","fold","htmlConfig","autoSelfClosers","area","br","command","embed","frame","hr","keygen","link","meta","param","track","wbr","menuitem","implicitlyClosed","dd","li","optgroup","rp","tbody","td","tfoot","tr","contextGrabbers","dt","address","article","aside","blockquote","dl","fieldset","footer","h1","h2","h3","h4","h5","h6","header","hgroup","nav","ol","section","ul","thead","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","htmlMode","inText","chain","parser","inBlock","doctype","inTag","closure","baseState","isInAttribute","stringStartCol","terminator","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","startOfLine","noIndent","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","TOKEN_STYLES","addition","bold","cite","definitionList","deletion","em","footnote","footCite","html","image","italic","linkDefinition","list1","list2","list3","notextile","specialChar","strong","sup","tableHeading","handlePhraseModifier","togglePhraseModifier","tokenStyles","tokenStylesWith","phraseModifier","closeRE","openSize","charBefore","charAfter","Modes","textileDisabled","layoutType","activeStyles","extraStyles","spanningLayout","newLayout","REs","single","bc","bq","definitionListEnd","drawTable","foot","para","tableCellAttributes","tableText","selector","lang","pad","createRe","makeRe","RE","choiceRe","arg","blockType","newMode","layoutLength","listDepth","listMod","tableCell","startNewLine","define","dict","commonAtoms","commonCommands","tokenDollar","tokenStringStart","bytes","log","pow","toPrecision","isJson","JSON","parse","_typeof","syntaxHighlight","json","stringify",".txt",".log",".sh",".conf",".cfg",".py",".java",".sql",".hql",".xml"],"mappings":"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","file":"js/8.d0d692f.js","sourcesContent":["function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-511724d0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./noType.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./noType.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./noType.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-511724d0\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./noType.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue\n// module id = 1001\n// module chunks = 7 8","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/resource/pages/file/pages/edit/index.vue","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/spin/spin.vue","\n \n
\n {{title}}\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/listConstruction/listConstruction.vue","\n \n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/secondaryMenu/secondaryMenu.vue","\n \n
\n
\n
\n
\n
{{msg || $t('查询无数据')}}
\n
\n
\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/noData/noData.vue","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {this.id = null;};\n Delayed.prototype.set = function (ms, f) {\n clearTimeout(this.id);\n this.id = setTimeout(f, ms);\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 30;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n input.init(d);\n }\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range$$1;\n try {range$$1 = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range$$1 || range$$1.parentElement() != te) { return false }\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this$1.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (node.className == \"CodeMirror-linewidget\")\n { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map$$1[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = true; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top || y >= coords.bottom;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor]);\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[cm.options.gutters[i]] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range$$1 = doc.sel.ranges[i];\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n var collapsed = range$$1.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range$$1, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range$$1.from(), sTo = range$$1.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm);\n return true\n }\n return false\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this$1.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(cm) {\n var width = cm.display.gutters.offsetWidth;\n cm.display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function updateGutters(cm) {\n var gutters = cm.display.gutters, specs = cm.options.gutters;\n removeChildren(gutters);\n var i = 0;\n for (; i < specs.length; ++i) {\n var gutterClass = specs[i];\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n if (gutterClass == \"CodeMirror-linenumbers\") {\n cm.display.lineGutter = gElt;\n gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = i ? \"\" : \"none\";\n updateGutterSpace(cm);\n }\n\n // Make sure the gutters options contains the element\n // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n function setGuttersForLineNumbers(options) {\n var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n if (found == -1 && options.lineNumbers) {\n options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n } else if (found > -1 && !options.lineNumbers) {\n options.gutters = options.gutters.slice(0);\n options.gutters.splice(found, 1);\n }\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this$1.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n var this$1 = this;\n\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm)\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n var this$1 = this;\n\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at)\n { if (op(this$1.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this$1;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n var this$1 = this;\n\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n var this$1 = this;\n\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this$1[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n var this$1 = this;\n\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this$1; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this$1.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range$$1 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range$$1.head; }\n else if (start == \"anchor\") { pos = range$$1.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n else { pos = range$$1.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n var this$1 = this;\n\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n clipPos(this$1, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var this$1 = this;\n\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var this$1 = this;\n\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var this$1 = this;\n\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this$1, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n span.from == null && lineNo$$1 != from.line ||\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo$$1;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo$$1;\n });\n return clipPos(this, Pos(lineNo$$1, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n if (link.doc != other) { continue }\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var loadFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n { return }\n\n var reader = new FileReader;\n reader.onload = operation(cm, function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n text[i] = content;\n if (++read == n) {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if (webkit || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n else\n { ourRange = range$$1; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n e_preventDefault(e);\n display.input.focus();\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n var order = getOrder(anchorLine);\n if (!order) { return range$$1 }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.options.gutters.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.options.gutters[i];\n signal(cm, type, cm, line, gutter, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n guttersChanged(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"firstLineNumber\", 1, guttersChanged, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function guttersChanged(cm) {\n updateGutters(cm);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n setGuttersForLineNumbers(options);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input);\n display.wrapper.CodeMirror = this;\n updateGutters(this);\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(bind(onFocus, this), 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this$1, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(), to = range$$1.to();\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range$$1.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", !!autocorrect);\n field.setAttribute(\"autocapitalize\", !!autocapitalize);\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function(map$$1) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var this$1 = this;\n\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var this$1 = this;\n\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n if (!range$$1.empty()) {\n var from = range$$1.from(), to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this$1, j, how); }\n var newRanges = this$1.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var this$1 = this;\n\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range$$1 = this.doc.sel.primary();\n if (start == null) { pos = range$$1.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range$$1.from() : range$$1.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var this$1 = this;\n\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range$$1) {\n var other = findPosH(doc, range$$1.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var this$1 = this;\n\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this$1, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this$1, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse)\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range$$1 == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {from: Pos(range$$1, 0), to: null};\n } else if (range$$1.from == null) {\n range$$1 = {from: range$$1, to: null};\n }\n if (!range$$1.to) { range$$1.to = range$$1.from; }\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n function findNextLine() {\n var l = pos.line + dir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor())\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range$$1 = found[0].find(0)))\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.45.0\";\n\n return CodeMirror;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/lib/codemirror.js\n// module id = 644\n// module chunks = 3 4 5 7 8 14","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./spin.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./spin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/spin/spin.vue\n// module id = 646\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/resource/pages/file/pages/details/_source/noType.vue"],"sourceRoot":""}