{"version":3,"sources":["webpack:///./node_modules/xterm/lib/handlers/Clipboard.js","webpack:///./node_modules/xterm/lib/renderer/CharacterJoinerRegistry.js","webpack:///./src/components/applications/ApplicationCreate.vue?25e2","webpack:///../../../src/components/VGrid/VFlex.ts","webpack:///./node_modules/xterm/lib/utils/Clone.js","webpack:///./node_modules/xterm/lib/renderer/dom/DomRendererRowFactory.js","webpack:///./node_modules/xterm/lib/renderer/BaseRenderLayer.js","webpack:///./src/components/applications/ApplicationCreate.vue?d921","webpack:///./src/components/applications/namesgenerator.js","webpack:///src/components/applications/ApplicationCreate.vue","webpack:///./src/components/applications/ApplicationCreate.vue?949c","webpack:///./src/components/applications/ApplicationCreate.vue","webpack:///./node_modules/xterm/lib/BufferLine.js","webpack:///./src/components/devices/DevicesPage.vue?bbf1","webpack:///src/components/devices/DevicesPage.vue","webpack:///./src/components/devices/DevicesPage.vue?6983","webpack:///./src/components/devices/DevicesPage.vue","webpack:///./node_modules/xterm/lib/AccessibilityManager.js","webpack:///./node_modules/xterm/lib/renderer/SelectionRenderLayer.js","webpack:///./node_modules/xterm/lib/addons/search/SearchHelper.js","webpack:///./src/components/PageSubtitle.vue?db47","webpack:///./src/components/PageSubtitle.vue","webpack:///./node_modules/xterm/lib/ui/RenderDebouncer.js","webpack:///./node_modules/xterm/lib/renderer/dom/DomRenderer.js","webpack:///./node_modules/xterm/lib/ui/MouseZoneManager.js","webpack:///./node_modules/xterm/lib/Buffer.js","webpack:///./src/components/applications/ApplicationLogsDialog.vue?87a0","webpack:///./node_modules/xterm/lib/ui/Lifecycle.js","webpack:///./node_modules/xterm/lib/renderer/Renderer.js","webpack:///./src/components/cli/ProxyPort.vue?3bc9","webpack:///src/components/cli/ProxyPort.vue","webpack:///./src/components/cli/ProxyPort.vue?77b8","webpack:///./src/components/cli/ProxyPort.vue","webpack:///./node_modules/xterm/lib/core/input/Keyboard.js","webpack:///./node_modules/xterm/lib/shared/atlas/Types.js","webpack:///../../../src/components/VForm/VForm.ts","webpack:///./node_modules/xterm/lib/renderer/atlas/CharAtlasCache.js","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///./node_modules/xterm/lib/SoundManager.js","webpack:///./node_modules/xterm/lib/renderer/atlas/DynamicCharAtlas.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/xterm/lib/public/Terminal.js","webpack:///./src/components/devices/DeviceApplications.vue?9cc1","webpack:///src/components/devices/DeviceApplications.vue","webpack:///./src/components/devices/DeviceApplications.vue?1120","webpack:///./src/components/devices/DeviceApplications.vue","webpack:///./node_modules/xterm/lib/ui/CharMeasure.js","webpack:///./node_modules/xterm/lib/addons/search/search.js","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///./node_modules/xterm/lib/common/data/EscapeSequences.js","webpack:///./src/components/applications/ApplicationCreate.vue?337f","webpack:///./node_modules/xterm/lib/renderer/atlas/NoneCharAtlas.js","webpack:///./node_modules/xterm/lib/renderer/atlas/BaseCharAtlas.js","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///./src/components/devices/ProvisionDevice.vue?f651","webpack:///./node_modules/xterm/lib/Strings.js","webpack:///./node_modules/xterm/lib/common/EventEmitter.js","webpack:///./node_modules/xterm/lib/SelectionManager.js","webpack:///./src/components/PageTitle.vue?63a0","webpack:///./src/components/PageTitle.vue","webpack:///./node_modules/xterm/lib/renderer/atlas/StaticCharAtlas.js","webpack:///./node_modules/xterm/lib/renderer/TextRenderLayer.js","webpack:///./node_modules/xterm/lib/renderer/atlas/CharAtlasUtils.js","webpack:///./node_modules/xterm/lib/utils/MouseHelper.js","webpack:///./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack:///./src/components/devices/DevicesPage.vue?ff30","webpack:///./node_modules/xterm/lib/addons/webLinks/webLinks.js","webpack:///./node_modules/xterm/lib/renderer/CursorRenderLayer.js","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///./node_modules/xterm/lib/CompositionHelper.js","webpack:///./node_modules/xterm/lib/CharWidth.js","webpack:///./src/components/devices/ProvisionDevice.vue?0e4f","webpack:///src/components/devices/ProvisionDevice.vue","webpack:///./src/components/devices/ProvisionDevice.vue?38dc","webpack:///./src/components/devices/ProvisionDevice.vue","webpack:///./src/components/cli/ProxyPort.vue?a873","webpack:///./node_modules/xterm/lib/core/data/Charsets.js","webpack:///./node_modules/xterm/lib/Terminal.js","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///./node_modules/xterm/lib/handlers/AltClickHandler.js","webpack:///./node_modules/xterm/lib/EscapeSequenceParser.js","webpack:///./node_modules/xterm/lib/renderer/atlas/LRUMap.js","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///./src/components/devices/ContainerStatus.vue?72f9","webpack:///src/components/devices/ContainerStatus.vue","webpack:///./src/components/devices/ContainerStatus.vue?72ff","webpack:///./src/components/devices/ContainerStatus.vue","webpack:///./node_modules/xterm/lib/Linkifier.js","webpack:///./src/components/applications/ExposePort.vue?4473","webpack:///src/components/applications/ExposePort.vue","webpack:///./src/components/applications/ExposePort.vue?6b06","webpack:///./src/components/applications/ExposePort.vue","webpack:///./node_modules/xterm/lib/addons/fit/fit.js","webpack:///../../../src/components/VWindow/VWindowItem.ts","webpack:///../../../src/components/VTabs/VTabItem.ts","webpack:///./node_modules/codemirror/mode/yaml/yaml.js","webpack:///./node_modules/xterm/lib/shared/atlas/CharAtlasGenerator.js","webpack:///./src/components/applications/ApplicationLogsDialog.vue?8b90","webpack:///src/components/applications/ApplicationLogsDialog.vue","webpack:///./src/components/applications/ApplicationLogsDialog.vue?9a5a","webpack:///./src/components/applications/ApplicationLogsDialog.vue","webpack:///./node_modules/xterm/lib/shared/utils/Browser.js","webpack:///./src/components/applications/ExposePort.vue?2508","webpack:///./node_modules/xterm/lib/renderer/atlas/Types.js","webpack:///./node_modules/xterm/lib/common/CircularList.js","webpack:///./node_modules/xterm/lib/SelectionModel.js","webpack:///./node_modules/xterm/lib/renderer/ColorManager.js","webpack:///./node_modules/xterm/lib/renderer/LinkRenderLayer.js","webpack:///./node_modules/xterm/lib/InputHandler.js","webpack:///./node_modules/xterm/lib/common/Lifecycle.js","webpack:///./node_modules/xterm/lib/renderer/GridCache.js","webpack:///./node_modules/xterm/lib/BufferSet.js","webpack:///./node_modules/xterm/lib/ui/ScreenDprMonitor.js","webpack:///./node_modules/xterm/lib/Viewport.js","webpack:///../../../src/mixins/selectable/index.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VTabs/VTabs.ts"],"names":["prepareTextForTerminal","text","replace","bracketTextForPaste","bracketedPasteMode","copyHandler","ev","term","selectionManager","browser","isMSIE","window","clipboardData","setData","selectionText","preventDefault","pasteHandler","stopPropagation","dispatchPaste","handler","textarea","value","emit","cancel","getData","moveTextAreaUnderMouseCursor","style","position","width","height","left","clientX","top","clientY","zIndex","focus","setTimeout","rightClickHandler","shouldSelectWord","isClickInSelection","selectWordAtCursor","select","Object","defineProperty","exports","Buffer_1","CharacterJoinerRegistry","_terminal","this","_characterJoiners","_nextCharacterJoinerId","prototype","registerCharacterJoiner","joiner","id","push","deregisterCharacterJoiner","joinerId","i","length","splice","getJoinedCharacters","row","line","buffer","lines","get","ranges","lineStr","translateBufferLineToString","rangeStartColumn","currentStringIndex","rangeStartStringIndex","rangeAttr","CHAR_DATA_ATTR_INDEX","x","cols","charData","chars","CHAR_DATA_CHAR_INDEX","CHAR_DATA_WIDTH_INDEX","attr","joinedRanges","_getJoinedRanges","startIndex","endIndex","lineData","startCol","substring","joinerRanges","j","_mergeRanges","_stringRangesToCellRanges","currentRangeIndex","currentRangeStarted","currentRange","length_1","newRange","inRange","range","Math","max","min","clone","val","depth","clonedObject","Array","isArray","key","BOLD_CLASS","ITALIC_CLASS","CURSOR_CLASS","CURSOR_STYLE_BLOCK_CLASS","CURSOR_STYLE_BAR_CLASS","CURSOR_STYLE_UNDERLINE_CLASS","DomRendererRowFactory","_document","createRow","isCursorRow","cursorStyle","cursorX","cellWidth","fragment","createDocumentFragment","colCount","char","charElement","createElement","flags","bg","fg","classList","add","temp","textContent","appendChild","Types_1","CharAtlasCache_1","BaseRenderLayer","_container","_alpha","_colors","_scaledCharWidth","_scaledCharHeight","_scaledCellWidth","_scaledCellHeight","_scaledCharLeft","_scaledCharTop","_currentGlyphIdentifier","code","bold","dim","italic","_canvas","document","toString","_initCanvas","dispose","removeChild","_charAtlas","_ctx","getContext","alpha","clearAll","onOptionsChanged","terminal","onBlur","onFocus","onCursorMove","onGridChanged","startRow","endRow","onSelectionChanged","start","end","columnSelectMode","onThemeChanged","colorSet","_refreshCharAtlas","setTransparency","oldCanvas","cloneNode","replaceChild","rows","acquireCharAtlas","warmUp","resize","scaledCellWidth","scaledCellHeight","scaledCharWidth","scaledCharHeight","scaledCharLeft","scaledCharTop","scaledCanvasWidth","scaledCanvasHeight","canvasWidth","canvasHeight","fillCells","y","fillRect","fillBottomLineAtCells","devicePixelRatio","fillLeftLineAtCell","strokeRectAtCell","lineWidth","strokeRect","clearRect","fillStyle","background","css","clearCells","fillCharTrueColor","font","_getFont","textBaseline","_clipRow","fillText","drawChars","drawInBrightColor","options","drawBoldTextInBrightColors","INVERTED_DEFAULT_COLOR","enableBold","atlasDidDraw","draw","_drawUncachedChars","save","ansi","foreground","globalAlpha","DIM_OPACITY","restore","beginPath","rect","clip","isBold","isItalic","fontWeight","fontWeightBold","fontStyle","fontSize","fontFamily","render","_vm","_h","$createElement","_c","_self","attrs","namespaceSelection","scopedSlots","_u","fn","ref","on","_g","staticClass","project","applicationCount","quota","applications","_v","model","callback","$$v","dialog","expression","namespaces","overrideNamespace","_e","tab","valid","nameRules","application","$set","imageRules","volumeRules","_l","env","envRules","$event","deleteEnvVar","loading","addEnvVar","secrets","deleteSecretEnvVar","addSecretEnvVar","_s","gpu","schedulingSelector","selector","devices","staticStyle","cmOptions","applicationYaml","error","yamlError","directives","name","rawName","nativeOn","createApplication","staticRenderFns","right","randnum","n","floor","random","sep","component","VAlert","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VContainer","VDialog","VForm","VIcon","VRow","VSelect","VSpacer","VSwitch","VTab","VTabItem","VTabs","VTabsItems","VTabsSlider","VTextField","VTextarea","BufferLine","ch","isWrapped","_data","NULL_CELL_CHAR","NULL_CELL_WIDTH","NULL_CELL_CODE","blankLine","index","set","data","pop","deleteCount","_a","items","_i","arguments","removed","apply","concat","insertCells","pos","deleteCells","fill","replaceCells","refresh","undefined","deviceCount","params","removeDeviceModal","removingDevice","deleteDevice","editLabelsModal","editingDevice","label","deleteDeviceLabel","addDeviceLabel","newLabel","closeDeviceEditModal","filter","projectHasDevices","tableKey","headers","pagination","totalItems","e3","expanded","item","_f","created_at","projectId","device","tooltip","assign","status","lastSeenAt","labels","copyToClipboard","info","ipAddress","osRelease","prettyName","agentVersion","getDeviceMemPercentage","_b","getMetricsColor","getDeviceUsedMem","getDeviceMemTotal","getCPUUtilisation","class","$store","state","theme","openDeviceEditModal","removeDeviceIntent","itemsPerPageOptions","itemsPerPage","previousPageToken","query","pageToken","nextPageToken","installCommand","timeoutID","clearTimeout","args","that","components","PageSubtitle","PageTitle","ProvisionDevice","Markup","DeviceApplications","ApplicationCreate","sseConn","mounted","metricsLoading","selectedTokenID","watch","dispatch","then","reset","debounce","newVal","fetchDevices","fetchDevicesMetrics","$route","deviceId","q","computed","devicesPagination","devicesMetrics","pageTokenFromUrl","registrationTokens","selectedToken","found","metricsEnabled","beforeDestroy","beforeUnmount","methods","backgroundFetchDevicesMetadata","pageSize","getDeviceFreeMem","memFree","memPercent","memTotal","toFixed","cpuPercent","usage","subscribe","stream","streamUrl","$clipboard","VChip","VDataTable","VFlex","VLayout","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","VMenu","VProgressCircular","VProgressLinear","VSheet","VSubheader","VTooltip","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","create","Strings","Browser_1","RenderDebouncer_1","Lifecycle_1","Lifecycle_2","MAX_ROWS_TO_READ","AccessibilityManager","_super","_this","call","_liveRegionLineCount","_charsToConsume","_accessibilityTreeRoot","_rowContainer","_rowElements","_createAccessibilityTreeNode","_topBoundaryFocusListener","e","_onBoundaryFocus","_bottomBoundaryFocusListener","addEventListener","_refreshRowsDimensions","_renderRowsDebouncer","RenderDebouncer","_renderRows","bind","_refreshRows","_liveRegion","setAttribute","element","insertAdjacentElement","register","addDisposableListener","_onResize","_onChar","spaceCount","_onTab","keyChar","_onKey","_clearLiveRegion","renderer","addDisposableDomListener","boundaryElement","target","beforeBoundaryElement","posInSet","getAttribute","lastRowPos","relatedTarget","topBoundaryElement","bottomBoundaryElement","shift","removeEventListener","newElement","unshift","scrollLines","stopImmediatePropagation","children","tabIndex","_refreshRowDimensions","shiftedChar","_announceCharacter","tooMuchOutput","isMac","parentNode","setSize","ydisp","dimensions","actualCellHeight","innerHTML","Disposable","BaseRenderLayer_1","SelectionRenderLayer","container","colors","_clearState","_state","_didStateChange","viewportStartRow","viewportEndRow","viewportCappedStartRow","viewportCappedEndRow","selection","startRowEndCol","middleRowsCount","endCol","_areCoordinatesEqual","coord1","coord2","nonWordCharacters","SearchHelper","findNext","searchOptions","result","_core","selectionEnd","ybase","_findInLine","_selectResult","findPrevious","selectionStart","_isWholeWord","searchIndex","indexOf","stringLine","translateBufferLineToStringWithWrap","searchStringLine","caseSensitive","toLowerCase","searchTerm","regex","searchRegex","RegExp","foundTerm","exec","lastIndex","wholeWord","charWidth","col","lineIndex","trimRight","lineWrapsToNext","lineString","nextLine","setSelection","_t","script","_callback","_animationFrame","cancelAnimationFrame","rowStart","rowEnd","isRowStartSet","_rowStart","isRowEndSet","_rowEnd","requestAnimationFrame","_innerRefresh","EventEmitter_1","ColorManager_1","DomRendererRowFactory_1","TERMINAL_CLASS_PREFIX","ROW_CONTAINER_CLASS","FG_CLASS_PREFIX","BG_CLASS_PREFIX","FOCUS_CLASS","SELECTION_CLASS","nextTerminalId","DomRenderer","_terminalClass","allowTransparency","colorManager","ColorManager","setTheme","lineHeight","_refreshRowElements","_selectionContainer","actualCellWidth","_updateDimensions","_renderDebouncer","_rowFactory","screenElement","linkifier","_onLinkHover","_onLinkLeave","remove","_themeStyleElement","_dimensionsStyleElement","charMeasure","forEach","styles","_terminalSelector","_viewportElement","getOption","cursor","cursorAccent","c","onWindowResize","onResize","onCharSizeChanged","documentFragment","_createSelectionElement","endCol_1","colStart","colEnd","rowCount","clear","refreshRows","cursorAbsoluteY","rowElement","enumerable","configurable","_setCellUnderline","x1","x2","y1","y2","enabled","span","textDecoration","EventEmitter","HOVER_DURATION","MouseZoneManager","_zones","_areZonesActive","_tooltipTimeout","_currentZone","_lastHoverCoords","_onMouseDown","_mouseMoveListener","_onMouseMove","_clickListener","_onClick","_deactivate","zone","_activate","leaveCallback","pageX","pageY","_onHover","_findZoneEventAt","hoverCallback","_onTooltip","tooltipCallback","willLinkActivate","clickCallback","coords","mouseHelper","getCoords","MouseZone","CircularList_1","BufferLine_1","DEFAULT_ATTR","CHAR_DATA_CODE_INDEX","MAX_BUFFER_SIZE","Buffer","_hasScrollback","markers","maxLength","absoluteY","relativeY","_getCorrectBufferLength","correctBufferLength","scrollback","fillViewportRows","CircularList","scrollTop","scrollBottom","setupTabStops","newCols","newRows","newMaxLength","addToY","amountToTrim","trimStart","savedY","savedX","stringIndexToBufferIndex","stringIndex","rightWhitespaceIndex","search","getWrappedRangeForLine","first","last","tabs","prevStop","tabStopWidth","nextStop","addMarker","marker","Marker","amount","_removeMarker","iterator","startOverscan","endOverscan","BufferStringIterator","_id","_nextId","isDisposed","_buffer","_trimRight","_startIndex","_endIndex","_startOverscan","_endOverscan","_current","hasNext","next","content","node","type","useCapture","TextRenderLayer_1","SelectionRenderLayer_1","CursorRenderLayer_1","LinkRenderLayer_1","ScreenDprMonitor_1","CharacterJoinerRegistry_1","Renderer","_isPaused","_needsFullRefresh","_characterJoinerRegistry","_renderLayers","TextRenderLayer","LinkRenderLayer","CursorRenderLayer","_devicePixelRatio","_screenDprMonitor","ScreenDprMonitor","setListener","observer_1","IntersectionObserver","onIntersectionChange","threshold","observe","disconnect","l","entry","intersectionRatio","_runOperation","operation","ceil","round","letterSpacing","hostPort","command","props","port","String","host","close","EscapeSequences_1","KEYCODE_KEY_MAPPINGS","48","49","50","51","52","53","54","55","56","57","186","187","188","189","190","191","192","219","220","221","222","evaluateKeyboardEvent","applicationCursorMode","macOptionIsMeta","modifiers","shiftKey","altKey","ctrlKey","metaKey","keyCode","C0","ESC","BS","DEL","HT","CR","keyMapping","fromCharCode","CHAR_ATLAS_CELL_SPACING","provide","form","inheritAttrs","disabled","lazyValidation","readonly","Boolean","inputs","watchers","errorBag","errors","deep","immediate","watchInput","watcher","input","_uid","shouldValidate","validate","resetErrorBag","resetValidation","unregister","find","unwatch","h","novalidate","attrs$","submit","$slots","CharAtlasUtils_1","DynamicCharAtlas_1","NoneCharAtlas_1","StaticCharAtlas_1","charAtlasImplementations","default","charAtlasCache","newConfig","generateConfig","ownedByIndex","ownedBy","configEquals","config","atlas","newEntry","experimentalCharAtlas","removeTerminalFromCache","ripple","genRipple","center","DEFAULT_BELL_SOUND","SoundManager","playBellSound","audioContextCtor","AudioContext","webkitAudioContext","_audioContext","bellAudioSource_1","createBufferSource","context_1","decodeAudioData","_base64ToArrayBuffer","_removeMimeType","bellSound","connect","destination","console","warn","base64","binaryString","atob","len","bytes","Uint8Array","charCodeAt","dataURI","splitUri","split","BaseCharAtlas_1","CharAtlasGenerator_1","LRUMap_1","TEXTURE_WIDTH","TEXTURE_HEIGHT","TRANSPARENT_COLOR","rgba","FRAME_CACHE_DRAW_LIMIT","GLYPH_BITMAP_COMMIT_DELAY","getGlyphCacheKey","glyph","DynamicCharAtlas","_config","_drawToCacheCount","_glyphsWaitingOnBitmap","_bitmapCommitTimeout","_bitmap","_cacheCanvas","_cacheCtx","tmpCanvas","_tmpCtx","_width","_height","capacity","_cacheMap","prealloc","beginFrame","ctx","glyphKey","cacheValue","_drawFromCache","_canCache","size","peek","cacheValue_1","_drawToCache","_toCoordinateX","_toCoordinateY","isEmpty","cacheX","cacheY","drawImage","inBitmap","_getColorFromAnsiIndex","idx","DEFAULT_ANSI_COLORS","_getBackgroundColor","_getForegroundColor","backgroundColor","globalCompositeOperation","imageData","getImageData","clearColor","putImageData","_addGlyphToBitmap","isFirefox","isSafari","_generateBitmap","glyphsMovingToBitmap","createImageBitmap","bitmap","global","factory","module","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","rmClass","current","className","after","slice","removeChildren","count","childNodes","firstChild","removeChildrenAndAdd","parent","elt","tag","cssText","createTextNode","eltP","contains","child","nodeType","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","a","as","createRange","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","f","copyObj","obj","overwrite","prop","countColumn","string","tabSize","startValue","nextTab","Delayed","time","onTimeout","array","self","Date","ms","scrollerGap","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","skipped","spaceStrs","spaceStr","lst","arr","map","out","insertSorted","score","priority","nothing","createObj","base","inst","nonASCIISingleCaseWordChar","isWordCharBasic","toUpperCase","isWordChar","helper","source","extendingChars","isExtendingChar","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","iterateBidiSections","order","part","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","types","i$1","prev","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","m","i$7","at","isRTL","j$2","nstart","reverse","getOrder","noHandlers","emitter","attachEvent","_handlers","getHandlers","off","detachEvent","signal","handlers","signalDOMEvent","cm","override","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","mode","dependencies","defineMIME","mime","spec","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","Error","chunk","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","diff","lineNo","no","lineAtHeight","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","clipToLen","linelen","clipPosArray","eol","sol","eat","ok","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","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","styleClasses","highlightFrontier","modeFrontier","precise","display","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","startAt","callBlankLine","readToken","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","getMarkedSpanFor","spans","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","has","attachLine","markedSpansBefore","old","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","rest","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","externalMeasured","insertLineContent","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","attributes","displayText","special","specialChars","mustWrap","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","updateLineBackground","wrap","insertBefore","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","targetTop","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","e$1","colDiff","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursorHeight","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openLeft","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","ensureFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","History","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","v","shiftDoc","distance","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","spilled","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","link","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","t","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","selected","onDragStart","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","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","145","173","224","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","addModifierNames","noShift","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","moveVisually","bidi","mv","getWrappedLineExtent","searchInVisualLine","getRes","res","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","leftPos","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","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","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","posCol","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","Init","defaults","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","wasOn","funcs","dragFunctions","toggle","enter","over","leave","drop","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","inp","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","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","tabindex","placeholder","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","dontDelegate","method","defineExtension","func","defineDocExtension","version","Terminal_1","Terminal","listener","columns","writeln","open","attachCustomKeyEventHandler","customKeyEventHandler","registerLinkMatcher","deregisterLinkMatcher","matcherId","cursorYOffset","clearSelection","selectLines","destroy","scrollPages","pageCount","scrollToTop","scrollToBottom","scrollToLine","write","applyAddon","addon","hideHeader","namespace","namespaceId","containers","getContainerStatus","deploymentStatus","available","total","lastSeen","proxy","ApplicationLogsDialog","ContainerStatus","containerStatus","containerUrl","includes","CharMeasure","_parentElement","_measureElement","geometry","SearchHelper_1","addonTerminal","__searchHelper","terminalConstructor","baseMixins","proxyClass","groupClasses","$router","resolve","click","href","$el","role","keydown","NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","LF","VT","FF","SO","SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","FS","GS","RS","US","SP","C1","PAD","HOP","BPH","NBH","IND","NEL","SSA","ESA","HTS","HTJ","VTS","PLD","PLU","RI","SS2","SS3","DCS","PU1","PU2","STS","CCH","MW","SPA","EPA","SOS","SGCI","SCI","CSI","ST","OSC","PM","APC","NoneCharAtlas","BaseCharAtlas","_didWarmUp","_doWarmUp","BaseSlideGroup","Resize","Touch","activeClass","centerActive","nextIcon","prevIcon","showArrows","validator","internalItemsLength","isOverflowing","resizeTimeout","startX","isSwipingHorizontal","isSwiping","scrollOffset","widths","canTouch","__cachedNext","genTransition","__cachedPrev","hasAffixes","isMobile","hasPrev","internalValue","beforeUpdate","$children","updated","genNext","slot","$scopedSlots","genContent","genData","genIcon","icon","$vuetify","rtl","location","upperLocation","hasAffix","genPrev","genWrapper","calculateNewOffset","sign","newAbosluteOffset","onAffixClick","onTouchStart","onTouchMove","diffX","diffY","onTouchEnd","maxScrollOffset","overflowCheck","lastItemPosition","wrapperPosition","$refs","selectedIndex","calculateCenteredOffset","selectedItem","calculateUpdatedOffset","selectedElement","currentScrollOffset","itemOffset","additionalOffset","offsetCentered","setWidths","slideGroup","promptLabel","_events","disposed","removeAllListeners","listeners","MouseHelper_1","Browser","SelectionModel_1","AltClickHandler_1","DRAG_SCROLL_MAX_THRESHOLD","DRAG_SCROLL_MAX_SPEED","DRAG_SCROLL_INTERVAL","ALT_CLICK_MOVE_CURSOR_TIME","WORD_SEPARATORS","NON_BREAKING_SPACE_CHAR","ALL_NON_BREAKING_SPACE_REGEX","SelectionManager","_charMeasure","_enabled","_initListeners","enable","_model","SelectionModel","_activeSelectionMode","_removeMouseDownListeners","buffers","_mouseUpListener","_onMouseUp","_trimListener","_onTrim","initBuffersListeners","_onBufferActivate","disable","finalSelectionStart","finalSelectionEnd","lineText","bufferLine","formattedResult","isMSWindows","isNewSelection","_refreshAnimationFrame","_refresh","isLinux","_getMouseBufferCoords","_selectWordAt","isSelectAllActive","needsRefresh","onTrim","_getMouseEventScrollAmount","MouseHelper","getCoordsRelativeToElement","terminalHeight","shouldForceSelection","macOptionClickForcesSelection","_mouseDownTimeStamp","timeStamp","_dragScrollAmount","_onIncrementalClick","_onSingleClick","_onDoubleClick","_onTripleClick","_addMouseDownListeners","_dragScrollIntervalTimer","_dragScroll","selectionStartLength","shouldColumnSelect","_selectLineAt","previousSelectionEnd","_selectToWordAt","timeElapsed","AltClickHandler","inactiveBuffer","activeBuffer","_convertViewportColToCharacterIndex","charIndex","_getWordAt","allowWhitespaceOnlySelection","followWrappedLinesAbove","followWrappedLinesBelow","charOffset","leftWideCharCount","rightWideCharCount","leftLongCharOffset","rightLongCharOffset","_isCharWordSeparator","trim","previousBufferLine","previousLineWordPosition","nextBufferLine","nextLineWordPosition","wordPosition","areSelectionValuesReversed","wrappedRange","Types_2","StaticCharAtlas","_canvasFactory","canvas","generateStaticCharAtlasTexture","HTMLCanvasElement","_texture","texture","_isCached","colorIndex","isAscii","isBasicColor","isDefaultColor","isDefaultBackground","charAtlasCellWidth","charAtlasCellHeight","GridCache_1","characterJoinerRegistry","_characterOverlapCache","GridCache","terminalFont","_characterWidth","_characterFont","_forEachCell","firstRow","lastRow","joinerRegistry","isJoined","lastCharX","_isOverlapping","_drawBackground","startY","prevFillStyle","nextFillStyle","_drawForeground","overlaps","clonedColors","_renderer","originalElement","isSelection","getRawByteCoords","__esModule","s","TypeError","writable","codemirror","cminstance","Function","unseenLines","merge","globalOptions","globalEvents","$nextTick","switchMerge","handerCodeChange","initialize","MergeView","mergeview","edit","$emit","unseenLineMarkers","install","u","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","protocolClause","domainCharacterSet","negatedDomainCharacterSet","domainBodyClause","tldClause","ipClause","localHostClause","portClause","hostClause","pathClause","queryStringHashFragmentCharacterSet","queryStringClause","hashFragmentClause","negatedPathCharacterSet","bodyClause","strictUrlRegex","handleLink","uri","webLinksInit","matchIndex","BLINK_INTERVAL","isFocused","_cursorRenderers","_renderBarCursor","_renderBlockCursor","_renderUnderlineCursor","_clearCursor","_cursorBlinkStateManager","pause","resume","cursorBlink","CursorBlinkStateManager","_render","restartBlinkAnimation","isPaused","triggeredByAnimationFrame","cursorState","cursorHidden","cursorY","viewportRelativeCursorY","_renderBlurCursor","isCursorVisible","strokeStyle","_renderCallback","_restartInterval","_blinkStartTimeout","_blinkInterval","_animationTimeRestarted","timeToStart","setBackgroundColor","CompositionHelper","_textarea","_compositionView","_isComposing","_isSendingComposition","_compositionPosition","compositionstart","compositionupdate","updateCompositionElements","compositionend","_finalizeComposition","_handleAnyTextareaChanges","waitForPropogation","_clearTextareaPosition","currentCompositionPosition_1","oldValue","newValue","dontRecurse","isCursorInViewport","cellHeight","cursorTop","cursorLeft","compositionViewBounds","getStringCellWidth","low","wcwidth","opts","COMBINING_BMP","COMBINING_HIGH","bisearch","ucs","wcwidthBMP","nul","control","isWideBMP","wcwidthHigh","table","initTable","CODEPOINTS","BITWIDTH","ITEMSIZE","CONTAINERSIZE","CODEPOINTS_PER_ITEM","Uint32Array","num","dockerInstallCommand","CHARSETS","DEFAULT_CHARSET","BufferSet_1","CompositionHelper_1","Viewport_1","Clipboard_1","InputHandler_1","Renderer_1","Linkifier_1","SelectionManager_1","CharMeasure_1","Clone_1","SoundManager_1","MouseZoneManager_1","AccessibilityManager_1","DomRenderer_1","Keyboard_1","WRITE_BUFFER_PAUSE_THRESHOLD","WRITE_BATCH_SIZE","CONSTRUCTOR_ONLY_OPTIONS","DEFAULT_OPTIONS","convertEol","termName","bellStyle","screenKeys","screenReaderMode","debug","cancelEvents","disableStdin","useFlowControl","rightClickSelectsWord","rendererType","_setup","_customKeyEventHandler","_parent","applicationKeypad","applicationCursor","originMode","insertMode","wraparoundMode","charset","gcharset","glevel","charsets","curAttr","currentParam","writeBuffer","_writeInProgress","_xoffSentToCatchUp","_userScrolling","_inputHandler","InputHandler","Linkifier","_mouseZoneManager","soundManager","BufferSet","eraseAttr","_setTheme","newBufferLength","_setupRenderer","_theme","syncScrollArea","_accessibilityManager","_onTextAreaFocus","sendFocus","updateCursorStyle","showCursor","_onTextAreaBlur","_initGlobal","_bindKeys","pasteHandlerWrapper","_keyDown","_keyPress","wasModifierKeyOnlyEvent","_keyUp","_compositionHelper","_queueLinkification","_context","defaultView","_viewportScrollArea","_helperContainer","attachToDom","Viewport","bindMouse","el","pressed","sendButton","getButton","sendEvent","overrideType","sendMove","encode","utfMouse","_vt300Mouse","data_1","_decLocator","page","urxvtMouse","sgrMouse","meta","vt200Mouse","normalMouse","mouseEvents","moveHandler","x10Mouse","hasScrollback","getLinesScrolled","sequence","deltaY","onWheel","linkifyRows","newLine","topRow","bottomRow","willBufferBeTrimmed","scrollRegionHeight","shiftElements","updateRange","disp","suppressScrollEvent","oldYdisp","scrollAmount","_isDisposed","_innerWrite","writeBatch","_refreshStart","_refreshEnd","parse","scrollCount","_isThirdLevelShift","thirdLevelKey","setgLevel","setgCharset","bell","_soundBell","_visualBell","_visualBellTimer","log","maxRange","is","handleTitle","reverseIndex","inputHandler","tabSet","matchColor","g1","b1","hash","matchColorCache","r2","g2","b2","ldiff","li","matchColorDistance","pow","autoGrow","noResize","rowHeight","parseFloat","noResizeHandle","lazyValue","calculateInputHeight","genInput","onInput","windowGroup","continuous","mandatory","showArrowsOnHover","touchless","required","vertical","changedByDelimiters","internalHeight","transitionHeight","transitionCount","isBooted","isReverse","isActive","computedTransition","internalReverse","hasActiveItems","internalIndex","findIndex","updateReverse","genDefaultSlot","genContainer","lang","large","genControlIcons","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","itemsLength","oldVal","isDark","_mouseEvent","_lines","_startCol","_startRow","coordinates","coordinate","_endCol","_endRow","_arrowSequences","_moveHorizontallyOnly","_resetStartingRow","_moveToRequestedRow","_moveToRequestedCol","_bufferLine","_wrappedRowsForRow","_sequence","rowsToMove","_wrappedRowsCount","_verticalDirection","_horizontalDirection","wrappedRows","currentRow","lineWraps","forward","currentCol","bufferStr","rpt","high","TransitionTable","action","addMany","codes","PRINTABLES","EXECUTABLES","DEFAULT_TRANSITION","VT500_TRANSITION_TABLE","states","DcsDummy","hook","collect","flag","put","unhook","EscapeSequenceParser","TRANSITIONS","initialState","currentState","_osc","_params","_collect","_printHandlerFb","_executeHandlerFb","_csiHandlerFb","_escHandlerFb","_oscHandlerFb","identifier","_dcsHandlerFb","_errorHandlerFb","_printHandler","_executeHandlers","_csiHandlers","_escHandlers","_oscHandlers","_dcsHandlers","_activeDcsHandler","_errorHandler","setPrintHandler","clearPrintHandler","setExecuteHandler","clearExecuteHandler","setExecuteHandlerFallback","setCsiHandler","clearCsiHandler","setCsiHandlerFallback","setEscHandler","collectAndFlag","clearEscHandler","setEscHandlerFallback","setOscHandler","ident","clearOscHandler","setOscHandlerFallback","setDcsHandler","clearDcsHandler","setDcsHandlerFallback","setErrorHandler","clearErrorHandler","transition","print","dcs","osc","dcsHandler","inject","abort","LRUMap","_map","_head","_tail","_nodePool","_unlinkNode","_appendNode","tail","nodePool","peekValue","inset","flat","validationState","hasError","hasColor","switchData","setTextColor","themeClasses","genSwitch","switchAttrs","onSwipeRight","genProgress","progress","color","indeterminate","onSwipeLeft","onChange","onKeydown","applicationStatus","message","getContainer","ProxyPort","ExposePort","CharWidth_1","_linkMatchers","_nextLinkMatcherId","_rowsToLinkify","mouseZoneManager","_rowsTimeoutId","_linkifyRows","TIME_BEFORE_LINKIFY","absoluteRowIndexStart","absoluteRowIndexEnd","overscanLineLimit","OVERSCAN_CHAR_LIMIT","_doLinkifyRow","matcher","validationCallback","hoverTooltipCallback","hoverLeaveCallback","_addLinkMatcherToList","rowIndex","rex","_loop_1","this_1","bufferIndex","isValid","_addLink","state_1","_createLinkHoverEvent","appTunnel","toggleAppTunnel","appTunnelUrl","tunnel","url","proposeGeometry","parentElementStyle","parentElementHeight","getPropertyValue","parentElementWidth","elementStyle","elementPadding","elementPaddingVer","elementPaddingHor","availableHeight","availableWidth","scrollBarWidth","fit","mixins","reverseTransition","inTransition","genWindowItem","$listeners","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnter","beforeEnter","afterEnter","enterCancelled","beforeLeave","afterLeave","leaveCancelled","showLazyContent","VWindowItem","cons","keywordRegex","esc","escaped","literal","keyCol","pair","pairStart","inlinePairs","inlineList","lineComment","fold","canvasFactory","getFont","Promise","transferToImageBitmap","charAtlasImageData","initializing","runnables","selectRunnable","selectedRunnable","black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","socket","websocket","Blob","onmessage","handleWebSocketMessage","send","JSON","stringify","onclose","heartBeatTimer","wsBase","wsUrl","doClose","fetchApplication","doOpened","applicationId","solarizedDarkTheme","doLink","WebSocket","binaryType","onopen","bindTerminal","isNode","isIpad","isIphone","_maxLength","_array","_length","newArray","_getCyclicIndex","newLength","countToTrim","expandListBy","startPlusLength","DEFAULT_FOREGROUND","fromHex","DEFAULT_BACKGROUND","DEFAULT_CURSOR","DEFAULT_CURSOR_ACCENT","DEFAULT_SELECTION","toPaddedHex","_litmusColor","createLinearGradient","_parseColor","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","fallback","_clearCurrentLink","middleRowCount","Charsets_1","EscapeSequenceParser_1","GLEVEL","DECRQSS","pt","STYLES","_parser","_surrogateHigh","insertChars","cursorUp","cursorDown","cursorForward","cursorBackward","cursorNextLine","cursorPrecedingLine","cursorCharAbsolute","cursorPosition","cursorForwardTab","eraseInDisplay","eraseInLine","insertLines","deleteLines","deleteChars","scrollUp","scrollDown","eraseChars","cursorBackwardTab","charPosAbsolute","hPositionRelative","repeatPrecedingCharacter","sendDeviceAttributes","linePosAbsolute","vPositionRelative","hVPosition","tabClear","setMode","resetMode","charAttributes","deviceStatus","softReset","setCursorStyle","setScrollRegion","saveCursor","restoreCursor","lineFeed","carriageReturn","backspace","shiftOut","shiftIn","setTitle","keypadApplicationMode","keypadNumericMode","selectDefaultCharset","selectCharset","cursorStartX","cursorStartY","bufferRow","stringPosition","moves","chMinusTwo","chMinusOne","originalX","param","_eraseInBufferLine","scrollBackSize","scrollBottomRowsOffset","scrollBottomAbsolute","savedCols","activateAltBuffer","activateNormalBuffer","isBlinking","savedCurAttr","_disposables","_normal","_alt","_activeBuffer","_listener","clearListener","_outerListener","_currentDevicePixelRatio","_updateDpr","_resolutionMediaMatchList","removeListener","matchMedia","addListener","FALLBACK_SCROLL_BAR_WIDTH","_scrollArea","_currentRowHeight","_lastRecordedBufferLength","_lastRecordedViewportHeight","_lastRecordedBufferHeight","_lastScrollTop","_wheelPartialScroll","_ignoreNextScrollEvent","_onScroll","newBufferHeight","newScrollTop","newRow","_getPixelsScrolled","deltaMode","WheelEvent","DOM_DELTA_LINE","DOM_DELTA_PAGE","DOM_DELTA_PIXEL","_lastTouchY","inputValue","falseValue","trueValue","multiple","computedColor","isMultiple","valueComparator","isDirty","rippleState","genLabel","domProps","checked","onClick","tabsBar","callSlider","onRouteChange","newPath","oldPath","hasNew","hasOld","alignWithTitle","centered","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","slider","transitionTime","isReversed","sliderStyles","selectedItems","activeTab","genBar","dark","light","VTabsBar","genSlider","genItems","parseNodes","vnode","quiet"],"mappings":"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AAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,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","file":"js/chunk-7b410ffd.54b63a0d.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction prepareTextForTerminal(text) {\n return text.replace(/\\r?\\n/g, '\\r');\n}\nexports.prepareTextForTerminal = prepareTextForTerminal;\nfunction bracketTextForPaste(text, bracketedPasteMode) {\n if (bracketedPasteMode) {\n return '\\x1b[200~' + text + '\\x1b[201~';\n }\n return text;\n}\nexports.bracketTextForPaste = bracketTextForPaste;\nfunction copyHandler(ev, term, selectionManager) {\n if (term.browser.isMSIE) {\n window.clipboardData.setData('Text', selectionManager.selectionText);\n }\n else {\n ev.clipboardData.setData('text/plain', selectionManager.selectionText);\n }\n ev.preventDefault();\n}\nexports.copyHandler = copyHandler;\nfunction pasteHandler(ev, term) {\n ev.stopPropagation();\n var text;\n var dispatchPaste = function (text) {\n text = prepareTextForTerminal(text);\n text = bracketTextForPaste(text, term.bracketedPasteMode);\n term.handler(text);\n term.textarea.value = '';\n term.emit('paste', text);\n term.cancel(ev);\n };\n if (term.browser.isMSIE) {\n if (window.clipboardData) {\n text = window.clipboardData.getData('Text');\n dispatchPaste(text);\n }\n }\n else {\n if (ev.clipboardData) {\n text = ev.clipboardData.getData('text/plain');\n dispatchPaste(text);\n }\n }\n}\nexports.pasteHandler = pasteHandler;\nfunction moveTextAreaUnderMouseCursor(ev, textarea) {\n textarea.style.position = 'fixed';\n textarea.style.width = '20px';\n textarea.style.height = '20px';\n textarea.style.left = (ev.clientX - 10) + 'px';\n textarea.style.top = (ev.clientY - 10) + 'px';\n textarea.style.zIndex = '1000';\n textarea.focus();\n setTimeout(function () {\n textarea.style.position = null;\n textarea.style.width = null;\n textarea.style.height = null;\n textarea.style.left = null;\n textarea.style.top = null;\n textarea.style.zIndex = null;\n }, 200);\n}\nexports.moveTextAreaUnderMouseCursor = moveTextAreaUnderMouseCursor;\nfunction rightClickHandler(ev, textarea, selectionManager, shouldSelectWord) {\n moveTextAreaUnderMouseCursor(ev, textarea);\n if (shouldSelectWord && !selectionManager.isClickInSelection(ev)) {\n selectionManager.selectWordAtCursor(ev);\n }\n textarea.value = selectionManager.selectionText;\n textarea.select();\n}\nexports.rightClickHandler = rightClickHandler;\n//# sourceMappingURL=Clipboard.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Buffer_1 = require(\"../Buffer\");\nvar CharacterJoinerRegistry = (function () {\n function CharacterJoinerRegistry(_terminal) {\n this._terminal = _terminal;\n this._characterJoiners = [];\n this._nextCharacterJoinerId = 0;\n }\n CharacterJoinerRegistry.prototype.registerCharacterJoiner = function (handler) {\n var joiner = {\n id: this._nextCharacterJoinerId++,\n handler: handler\n };\n this._characterJoiners.push(joiner);\n return joiner.id;\n };\n CharacterJoinerRegistry.prototype.deregisterCharacterJoiner = function (joinerId) {\n for (var i = 0; i < this._characterJoiners.length; i++) {\n if (this._characterJoiners[i].id === joinerId) {\n this._characterJoiners.splice(i, 1);\n return true;\n }\n }\n return false;\n };\n CharacterJoinerRegistry.prototype.getJoinedCharacters = function (row) {\n if (this._characterJoiners.length === 0) {\n return [];\n }\n var line = this._terminal.buffer.lines.get(row);\n if (line.length === 0) {\n return [];\n }\n var ranges = [];\n var lineStr = this._terminal.buffer.translateBufferLineToString(row, true);\n var rangeStartColumn = 0;\n var currentStringIndex = 0;\n var rangeStartStringIndex = 0;\n var rangeAttr = line.get(0)[Buffer_1.CHAR_DATA_ATTR_INDEX] >> 9;\n for (var x = 0; x < this._terminal.cols; x++) {\n var charData = line.get(x);\n var chars = charData[Buffer_1.CHAR_DATA_CHAR_INDEX];\n var width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX];\n var attr = charData[Buffer_1.CHAR_DATA_ATTR_INDEX] >> 9;\n if (width === 0) {\n continue;\n }\n if (attr !== rangeAttr) {\n if (x - rangeStartColumn > 1) {\n var joinedRanges = this._getJoinedRanges(lineStr, rangeStartStringIndex, currentStringIndex, line, rangeStartColumn);\n for (var i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n rangeStartColumn = x;\n rangeStartStringIndex = currentStringIndex;\n rangeAttr = attr;\n }\n currentStringIndex += chars.length;\n }\n if (this._terminal.cols - rangeStartColumn > 1) {\n var joinedRanges = this._getJoinedRanges(lineStr, rangeStartStringIndex, currentStringIndex, line, rangeStartColumn);\n for (var i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n return ranges;\n };\n CharacterJoinerRegistry.prototype._getJoinedRanges = function (line, startIndex, endIndex, lineData, startCol) {\n var text = line.substring(startIndex, endIndex);\n var joinedRanges = this._characterJoiners[0].handler(text);\n for (var i = 1; i < this._characterJoiners.length; i++) {\n var joinerRanges = this._characterJoiners[i].handler(text);\n for (var j = 0; j < joinerRanges.length; j++) {\n CharacterJoinerRegistry._mergeRanges(joinedRanges, joinerRanges[j]);\n }\n }\n this._stringRangesToCellRanges(joinedRanges, lineData, startCol);\n return joinedRanges;\n };\n CharacterJoinerRegistry.prototype._stringRangesToCellRanges = function (ranges, line, startCol) {\n var currentRangeIndex = 0;\n var currentRangeStarted = false;\n var currentStringIndex = 0;\n var currentRange = ranges[currentRangeIndex];\n if (!currentRange) {\n return;\n }\n for (var x = startCol; x < this._terminal.cols; x++) {\n var charData = line.get(x);\n var width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX];\n var length_1 = charData[Buffer_1.CHAR_DATA_CHAR_INDEX].length;\n if (width === 0) {\n continue;\n }\n if (!currentRangeStarted && currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n }\n if (currentRange[1] <= currentStringIndex) {\n currentRange[1] = x;\n currentRange = ranges[++currentRangeIndex];\n if (!currentRange) {\n break;\n }\n if (currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n }\n else {\n currentRangeStarted = false;\n }\n }\n currentStringIndex += length_1;\n }\n if (currentRange) {\n currentRange[1] = this._terminal.cols;\n }\n };\n CharacterJoinerRegistry._mergeRanges = function (ranges, newRange) {\n var inRange = false;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!inRange) {\n if (newRange[1] <= range[0]) {\n ranges.splice(i, 0, newRange);\n return ranges;\n }\n if (newRange[1] <= range[1]) {\n range[0] = Math.min(newRange[0], range[0]);\n return ranges;\n }\n if (newRange[0] < range[1]) {\n range[0] = Math.min(newRange[0], range[0]);\n inRange = true;\n }\n continue;\n }\n else {\n if (newRange[1] <= range[0]) {\n ranges[i - 1][1] = newRange[1];\n return ranges;\n }\n if (newRange[1] <= range[1]) {\n ranges[i - 1][1] = Math.max(newRange[1], range[1]);\n ranges.splice(i, 1);\n inRange = false;\n return ranges;\n }\n ranges.splice(i, 1);\n i--;\n }\n }\n if (inRange) {\n ranges[ranges.length - 1][1] = newRange[1];\n }\n else {\n ranges.push(newRange);\n }\n return ranges;\n };\n return CharacterJoinerRegistry;\n}());\nexports.CharacterJoinerRegistry = CharacterJoinerRegistry;\n//# sourceMappingURL=CharacterJoinerRegistry.js.map","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/stylus-loader/index.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApplicationCreate.vue?vue&type=style&index=0&lang=stylus&\"","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = function (val, depth) {\n if (depth === void 0) { depth = 5; }\n if (typeof val !== 'object') {\n return val;\n }\n if (val === null) {\n return null;\n }\n var clonedObject = Array.isArray(val) ? [] : {};\n for (var key in val) {\n clonedObject[key] = depth <= 1 ? val[key] : exports.clone(val[key], depth - 1);\n }\n return clonedObject;\n};\n//# sourceMappingURL=Clone.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Buffer_1 = require(\"../../Buffer\");\nexports.BOLD_CLASS = 'xterm-bold';\nexports.ITALIC_CLASS = 'xterm-italic';\nexports.CURSOR_CLASS = 'xterm-cursor';\nexports.CURSOR_STYLE_BLOCK_CLASS = 'xterm-cursor-block';\nexports.CURSOR_STYLE_BAR_CLASS = 'xterm-cursor-bar';\nexports.CURSOR_STYLE_UNDERLINE_CLASS = 'xterm-cursor-underline';\nvar DomRendererRowFactory = (function () {\n function DomRendererRowFactory(_document) {\n this._document = _document;\n }\n DomRendererRowFactory.prototype.createRow = function (lineData, isCursorRow, cursorStyle, cursorX, cellWidth, cols) {\n var fragment = this._document.createDocumentFragment();\n var colCount = 0;\n for (var x = 0; x < lineData.length; x++) {\n if (colCount >= cols) {\n continue;\n }\n var charData = lineData.get(x);\n var char = charData[Buffer_1.CHAR_DATA_CHAR_INDEX];\n var attr = charData[Buffer_1.CHAR_DATA_ATTR_INDEX];\n var width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX];\n if (width === 0) {\n continue;\n }\n var charElement = this._document.createElement('span');\n if (width > 1) {\n charElement.style.width = cellWidth * width + \"px\";\n }\n var flags = attr >> 18;\n var bg = attr & 0x1ff;\n var fg = (attr >> 9) & 0x1ff;\n if (isCursorRow && x === cursorX) {\n charElement.classList.add(exports.CURSOR_CLASS);\n switch (cursorStyle) {\n case 'bar':\n charElement.classList.add(exports.CURSOR_STYLE_BAR_CLASS);\n break;\n case 'underline':\n charElement.classList.add(exports.CURSOR_STYLE_UNDERLINE_CLASS);\n break;\n default:\n charElement.classList.add(exports.CURSOR_STYLE_BLOCK_CLASS);\n break;\n }\n }\n if (flags & 8) {\n var temp = bg;\n bg = fg;\n fg = temp;\n if (fg === 256) {\n fg = 0;\n }\n if (bg === 257) {\n bg = 15;\n }\n }\n if (flags & 1) {\n if (fg < 8) {\n fg += 8;\n }\n charElement.classList.add(exports.BOLD_CLASS);\n }\n if (flags & 64) {\n charElement.classList.add(exports.ITALIC_CLASS);\n }\n charElement.textContent = char;\n if (fg !== 257) {\n charElement.classList.add(\"xterm-fg-\" + fg);\n }\n if (bg !== 256) {\n charElement.classList.add(\"xterm-bg-\" + bg);\n }\n fragment.appendChild(charElement);\n colCount += width;\n }\n return fragment;\n };\n return DomRendererRowFactory;\n}());\nexports.DomRendererRowFactory = DomRendererRowFactory;\n//# sourceMappingURL=DomRendererRowFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"./atlas/Types\");\nvar CharAtlasCache_1 = require(\"./atlas/CharAtlasCache\");\nvar Buffer_1 = require(\"../Buffer\");\nvar BaseRenderLayer = (function () {\n function BaseRenderLayer(_container, id, zIndex, _alpha, _colors) {\n this._container = _container;\n this._alpha = _alpha;\n this._colors = _colors;\n this._scaledCharWidth = 0;\n this._scaledCharHeight = 0;\n this._scaledCellWidth = 0;\n this._scaledCellHeight = 0;\n this._scaledCharLeft = 0;\n this._scaledCharTop = 0;\n this._currentGlyphIdentifier = {\n chars: '',\n code: 0,\n bg: 0,\n fg: 0,\n bold: false,\n dim: false,\n italic: false\n };\n this._canvas = document.createElement('canvas');\n this._canvas.classList.add(\"xterm-\" + id + \"-layer\");\n this._canvas.style.zIndex = zIndex.toString();\n this._initCanvas();\n this._container.appendChild(this._canvas);\n }\n BaseRenderLayer.prototype.dispose = function () {\n this._container.removeChild(this._canvas);\n if (this._charAtlas) {\n this._charAtlas.dispose();\n }\n };\n BaseRenderLayer.prototype._initCanvas = function () {\n this._ctx = this._canvas.getContext('2d', { alpha: this._alpha });\n if (!this._alpha) {\n this.clearAll();\n }\n };\n BaseRenderLayer.prototype.onOptionsChanged = function (terminal) { };\n BaseRenderLayer.prototype.onBlur = function (terminal) { };\n BaseRenderLayer.prototype.onFocus = function (terminal) { };\n BaseRenderLayer.prototype.onCursorMove = function (terminal) { };\n BaseRenderLayer.prototype.onGridChanged = function (terminal, startRow, endRow) { };\n BaseRenderLayer.prototype.onSelectionChanged = function (terminal, start, end, columnSelectMode) {\n if (columnSelectMode === void 0) { columnSelectMode = false; }\n };\n BaseRenderLayer.prototype.onThemeChanged = function (terminal, colorSet) {\n this._refreshCharAtlas(terminal, colorSet);\n };\n BaseRenderLayer.prototype.setTransparency = function (terminal, alpha) {\n if (alpha === this._alpha) {\n return;\n }\n var oldCanvas = this._canvas;\n this._alpha = alpha;\n this._canvas = this._canvas.cloneNode();\n this._initCanvas();\n this._container.replaceChild(this._canvas, oldCanvas);\n this._refreshCharAtlas(terminal, this._colors);\n this.onGridChanged(terminal, 0, terminal.rows - 1);\n };\n BaseRenderLayer.prototype._refreshCharAtlas = function (terminal, colorSet) {\n if (this._scaledCharWidth <= 0 && this._scaledCharHeight <= 0) {\n return;\n }\n this._charAtlas = CharAtlasCache_1.acquireCharAtlas(terminal, colorSet, this._scaledCharWidth, this._scaledCharHeight);\n this._charAtlas.warmUp();\n };\n BaseRenderLayer.prototype.resize = function (terminal, dim) {\n this._scaledCellWidth = dim.scaledCellWidth;\n this._scaledCellHeight = dim.scaledCellHeight;\n this._scaledCharWidth = dim.scaledCharWidth;\n this._scaledCharHeight = dim.scaledCharHeight;\n this._scaledCharLeft = dim.scaledCharLeft;\n this._scaledCharTop = dim.scaledCharTop;\n this._canvas.width = dim.scaledCanvasWidth;\n this._canvas.height = dim.scaledCanvasHeight;\n this._canvas.style.width = dim.canvasWidth + \"px\";\n this._canvas.style.height = dim.canvasHeight + \"px\";\n if (!this._alpha) {\n this.clearAll();\n }\n this._refreshCharAtlas(terminal, this._colors);\n };\n BaseRenderLayer.prototype.fillCells = function (x, y, width, height) {\n this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n };\n BaseRenderLayer.prototype.fillBottomLineAtCells = function (x, y, width) {\n if (width === void 0) { width = 1; }\n this._ctx.fillRect(x * this._scaledCellWidth, (y + 1) * this._scaledCellHeight - window.devicePixelRatio - 1, width * this._scaledCellWidth, window.devicePixelRatio);\n };\n BaseRenderLayer.prototype.fillLeftLineAtCell = function (x, y) {\n this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, window.devicePixelRatio, this._scaledCellHeight);\n };\n BaseRenderLayer.prototype.strokeRectAtCell = function (x, y, width, height) {\n this._ctx.lineWidth = window.devicePixelRatio;\n this._ctx.strokeRect(x * this._scaledCellWidth + window.devicePixelRatio / 2, y * this._scaledCellHeight + (window.devicePixelRatio / 2), width * this._scaledCellWidth - window.devicePixelRatio, (height * this._scaledCellHeight) - window.devicePixelRatio);\n };\n BaseRenderLayer.prototype.clearAll = function () {\n if (this._alpha) {\n this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n };\n BaseRenderLayer.prototype.clearCells = function (x, y, width, height) {\n if (this._alpha) {\n this._ctx.clearRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n }\n else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n }\n };\n BaseRenderLayer.prototype.fillCharTrueColor = function (terminal, charData, x, y) {\n this._ctx.font = this._getFont(terminal, false, false);\n this._ctx.textBaseline = 'top';\n this._clipRow(terminal, y);\n this._ctx.fillText(charData[Buffer_1.CHAR_DATA_CHAR_INDEX], x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n };\n BaseRenderLayer.prototype.drawChars = function (terminal, chars, code, width, x, y, fg, bg, bold, dim, italic) {\n var drawInBrightColor = terminal.options.drawBoldTextInBrightColors && bold && fg < 8 && fg !== Types_1.INVERTED_DEFAULT_COLOR;\n fg += drawInBrightColor ? 8 : 0;\n this._currentGlyphIdentifier.chars = chars;\n this._currentGlyphIdentifier.code = code;\n this._currentGlyphIdentifier.bg = bg;\n this._currentGlyphIdentifier.fg = fg;\n this._currentGlyphIdentifier.bold = bold && terminal.options.enableBold;\n this._currentGlyphIdentifier.dim = dim;\n this._currentGlyphIdentifier.italic = italic;\n var atlasDidDraw = this._charAtlas && this._charAtlas.draw(this._ctx, this._currentGlyphIdentifier, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n if (!atlasDidDraw) {\n this._drawUncachedChars(terminal, chars, width, fg, x, y, bold && terminal.options.enableBold, dim, italic);\n }\n };\n BaseRenderLayer.prototype._drawUncachedChars = function (terminal, chars, width, fg, x, y, bold, dim, italic) {\n this._ctx.save();\n this._ctx.font = this._getFont(terminal, bold, italic);\n this._ctx.textBaseline = 'top';\n if (fg === Types_1.INVERTED_DEFAULT_COLOR) {\n this._ctx.fillStyle = this._colors.background.css;\n }\n else if (fg < 256) {\n this._ctx.fillStyle = this._colors.ansi[fg].css;\n }\n else {\n this._ctx.fillStyle = this._colors.foreground.css;\n }\n this._clipRow(terminal, y);\n if (dim) {\n this._ctx.globalAlpha = Types_1.DIM_OPACITY;\n }\n this._ctx.fillText(chars, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n this._ctx.restore();\n };\n BaseRenderLayer.prototype._clipRow = function (terminal, y) {\n this._ctx.beginPath();\n this._ctx.rect(0, y * this._scaledCellHeight, terminal.cols * this._scaledCellWidth, this._scaledCellHeight);\n this._ctx.clip();\n };\n BaseRenderLayer.prototype._getFont = function (terminal, isBold, isItalic) {\n var fontWeight = isBold ? terminal.options.fontWeightBold : terminal.options.fontWeight;\n var fontStyle = isItalic ? 'italic' : '';\n return fontStyle + \" \" + fontWeight + \" \" + terminal.options.fontSize * window.devicePixelRatio + \"px \" + terminal.options.fontFamily;\n };\n return BaseRenderLayer;\n}());\nexports.BaseRenderLayer = BaseRenderLayer;\n//# sourceMappingURL=BaseRenderLayer.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.project)?_c('v-dialog',{attrs:{\"id\":\"dialog\",\"max-width\":_vm.namespaceSelection ? '700px': '900px',\"overlay-opacity\":0.93},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"primary--text\",attrs:{\"text\":\"\",\"small\":\"\",\"disabled\":_vm.project.applicationCount >= _vm.project.quota.applications}},on),[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"add_box\")]),_vm._v(\" New Application \")],1)]}}],null,false,480563896),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.namespaceSelection)?_c('v-card',{staticClass:\"pa-5\"},[_c('v-card-title',[_vm._v(\"Select namespace\")]),_c('v-card-text',[(_vm.namespaces.length > 0)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-select',{attrs:{\"items\":_vm.namespaces,\"label\":\"Select a namespace\",\"item-text\":\"name\",\"item-value\":\"id\",\"solo\":\"\"},model:{value:(_vm.overrideNamespace),callback:function ($$v) {_vm.overrideNamespace=$$v},expression:\"overrideNamespace\"}})],1),_c('v-row',[_c('p',[_vm._v(\" Namespaces allow you to organize your applications and secrets. Use them to separate development, testing and production environments. \")])])],1):_vm._e()],1)],1):_c('v-card',{staticClass:\"pa-5\"},[_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_c('v-tab',{attrs:{\"href\":\"#tab-form\"}},[_vm._v(\"Config\")]),_c('v-tab',{attrs:{\"href\":\"#tab-yaml\"}},[_vm._v(\"YAML\")])],1),_c('v-tabs-items',{staticClass:\"mt-4\",model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"tab-form\"}},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-text-field',{attrs:{\"rules\":_vm.nameRules,\"counter\":32,\"label\":\"Application name\",\"required\":\"\",\"outlined\":\"\"},model:{value:(_vm.application.name),callback:function ($$v) {_vm.$set(_vm.application, \"name\", $$v)},expression:\"application.name\"}})],1)],1),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-text-field',{attrs:{\"rules\":_vm.imageRules,\"label\":\"Container Image\",\"required\":\"\",\"outlined\":\"\"},model:{value:(_vm.application.image),callback:function ($$v) {_vm.$set(_vm.application, \"image\", $$v)},expression:\"application.image\"}})],1)],1),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-textarea',{attrs:{\"rows\":\"3\",\"label\":\"Container Start Arguments\",\"hint\":\"This provides arguments for the Docker container\",\"outlined\":\"\"},model:{value:(_vm.application.args),callback:function ($$v) {_vm.$set(_vm.application, \"args\", $$v)},expression:\"application.args\"}})],1)],1),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-text-field',{attrs:{\"label\":\"Expose TCP Ports\",\"hint\":\"Comma separated list of ports, for example 80,443 or 8080:80\",\"outlined\":\"\"},model:{value:(_vm.application.ports),callback:function ($$v) {_vm.$set(_vm.application, \"ports\", $$v)},expression:\"application.ports\"}})],1),_c('v-col',{attrs:{\"md\":\"6\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-text-field',{attrs:{\"label\":\"Volume Mount\",\"hint\":\"For example /data/my-app:/data\",\"rules\":_vm.volumeRules,\"outlined\":\"\"},model:{value:(_vm.application.volume),callback:function ($$v) {_vm.$set(_vm.application, \"volume\", $$v)},expression:\"application.volume\"}})],1)],1),_vm._l((_vm.application.env),function(env,i){return [_c('v-row',{key:((_vm.application.name) + \"-env-\" + i),attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"sm\":\"6\",\"xs\":\"6\"}},[_c('v-text-field',{attrs:{\"dense\":\"\",\"rules\":_vm.envRules,\"label\":\"Key\",\"outlined\":\"\"},model:{value:(env.name),callback:function ($$v) {_vm.$set(env, \"name\", $$v)},expression:\"env.name\"}})],1),_c('v-col',{attrs:{\"sm\":\"5\"}},[_c('v-text-field',{attrs:{\"dense\":\"\",\"rules\":_vm.envRules,\"label\":\"Value\",\"outlined\":\"\"},model:{value:(env.value),callback:function ($$v) {_vm.$set(env, \"value\", $$v)},expression:\"env.value\"}})],1),_c('v-col',{attrs:{\"sm\":\"1\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-btn',{attrs:{\"fab\":\"\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.deleteEnvVar(_vm.application, i)}}},[_c('v-icon',{staticClass:\"red--text\"},[_vm._v(\"mdi-close\")])],1)],1)])],1)]}),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-btn',{staticClass:\"secondary--text pr-2\",attrs:{\"outlined\":\"\",\"disabled\":_vm.loading,\"loading\":_vm.loading,\"small\":\"\"},on:{\"click\":function($event){return _vm.addEnvVar(_vm.application)}}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"add\")]),_c('span',{staticClass:\"mr-1 pt-1 pb-1\"},[_vm._v(\"Add Env Variable\")])],1),_c('v-spacer'),_c('p',{staticClass:\"mt-1 secondary--text\"},[_vm._v(\" Add a plain text environment variable \")])],1)],1),_vm._l((_vm.application.secretEnv),function(env,i){return [_c('v-row',{key:((_vm.application.name) + \"-secret-env-\" + i),attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"sm\":\"6\",\"xs\":\"6\"}},[_c('v-text-field',{attrs:{\"dense\":\"\",\"rules\":_vm.envRules,\"label\":\"Key\",\"outlined\":\"\"},model:{value:(env.name),callback:function ($$v) {_vm.$set(env, \"name\", $$v)},expression:\"env.name\"}})],1),_c('v-col',{attrs:{\"sm\":\"5\"}},[_c('v-select',{attrs:{\"items\":_vm.secrets,\"item-text\":\"name\",\"item-value\":\"name\",\"label\":\"Select secret\",\"no-data-text\":\"No secrets created yet\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(env.fromSecret),callback:function ($$v) {_vm.$set(env, \"fromSecret\", $$v)},expression:\"env.fromSecret\"}})],1),_c('v-col',{attrs:{\"sm\":\"1\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-btn',{attrs:{\"fab\":\"\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.deleteSecretEnvVar(_vm.application, i)}}},[_c('v-icon',{staticClass:\"red--text\"},[_vm._v(\"mdi-close\")])],1)],1)])],1)]}),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('v-btn',{staticClass:\"secondary--text pr-2\",attrs:{\"outlined\":\"\",\"disabled\":_vm.loading,\"loading\":_vm.loading,\"small\":\"\"},on:{\"click\":function($event){return _vm.addSecretEnvVar(_vm.application)}}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"add\")]),_c('span',{staticClass:\"mr-1 pt-1 pb-1\"},[_vm._v(\"Add Secret Env\")])],1),_c('v-spacer'),_c('p',{staticClass:\"mt-1 secondary--text\"},[_vm._v(\" Set an environment variable from Synpse secret \")])],1)],1),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('span',[_vm._v(\" GPU (\"+_vm._s(_vm.application.gpu ? 'enabled' : 'disabled')+\") \")]),_c('v-spacer'),_c('v-switch',{model:{value:(_vm.application.gpu),callback:function ($$v) {_vm.$set(_vm.application, \"gpu\", $$v)},expression:\"application.gpu\"}})],1),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('span',[_vm._v(\" Deployment (\"+_vm._s(_vm.schedulingSelector ? 'select by labels' : 'specify directly')+\") \")]),_c('v-spacer'),_c('v-switch',{model:{value:(_vm.schedulingSelector),callback:function ($$v) {_vm.schedulingSelector=$$v},expression:\"schedulingSelector\"}})],1),(_vm.schedulingSelector)?_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"required\":\"\",\"label\":\"Key\",\"outlined\":\"\"},model:{value:(_vm.application.selector.key),callback:function ($$v) {_vm.$set(_vm.application.selector, \"key\", $$v)},expression:\"application.selector.key\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"required\":\"\",\"label\":\"Value\",\"outlined\":\"\"},model:{value:(_vm.application.selector.value),callback:function ($$v) {_vm.$set(_vm.application.selector, \"value\", $$v)},expression:\"application.selector.value\"}})],1)],1):_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('v-select',{attrs:{\"no-data-text\":\"No devices added to your project\",\"items\":_vm.devices,\"item-text\":\"name\",\"item-value\":\"id\",\"chips\":\"\",\"label\":\"Select one or more devices to deploy this application to...\",\"multiple\":\"\",\"small\":\"\",\"outlined\":\"\"},model:{value:(_vm.application.selector.devices),callback:function ($$v) {_vm.$set(_vm.application.selector, \"devices\", $$v)},expression:\"application.selector.devices\"}})],1)],1),_c('page-subtitle',{staticStyle:{\"padding-left\":\"0\",\"padding-bottom\":\"4px\",\"margin-top\":\"20px\"}},[_c('span',[_vm._v(\"For advanced settings or multi-container applications, use yaml option.\")])]),(_vm.application.gpu)?_c('page-subtitle',{staticStyle:{\"padding-left\":\"0\",\"padding-bottom\":\"4px\",\"margin-top\":\"20px\"}},[_c('span',[_vm._v(\" For GPU CUDA setup refer to \"),_c('a',{staticClass:\"ml-1\",attrs:{\"href\":\"https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html\",\"target\":\"_blank\"}},[_vm._v(\"Nvidia documentation\")]),_vm._v(\". \")])]):_vm._e()],2)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"tab-yaml\"}},[_c('v-card-text',[_c('page-subtitle',{staticStyle:{\"padding-left\":\"0\"}},[_c('span',[_vm._v(\"View all configuration options in the \")]),_c('a',{staticClass:\"ml-1\",attrs:{\"href\":\"https://docs.synpse.net/synpse-core/applications/app-specification\",\"target\":\"_blank\"}},[_vm._v(\" docs\")])]),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{staticClass:\"d-flex\",attrs:{\"md\":\"12\",\"sm\":\"12\",\"xs\":\"12\"}},[_c('codemirror',{attrs:{\"options\":_vm.cmOptions},model:{value:(_vm.applicationYaml),callback:function ($$v) {_vm.applicationYaml=$$v},expression:\"applicationYaml\"}})],1)],1)],1),(_vm.error || _vm.yamlError)?_c('v-card-actions',[(_vm.yamlError)?_c('v-alert',{attrs:{\"dense\":\"\",\"outlined\":\"\",\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.yamlError)+\" \")]):_vm._e()],1):_vm._e()],1)],1),_c('v-card-text',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}]},[_c('v-alert',{attrs:{\"type\":\"error\",\"outlined\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],1)]),_c('v-card-actions',[_c('v-btn',{staticClass:\"primary--text\",attrs:{\"text\":\"\"},nativeOn:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"Cancel\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary--text\",attrs:{\"text\":\"\",\"disabled\":_vm.loading || (_vm.tab === 'tab-form' && !_vm.valid),\"loading\":_vm.loading},nativeOn:{\"click\":function($event){$event.stopPropagation();return _vm.createApplication()}}},[_vm._v(\"Create\")])],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Docker names generator, JavaScript/TypeScript port\n// https://github.com/shamrin/namesgenerator\n// Copyright (c) 2017 Alexey Shamrin\n// MIT License\n\nlet left = [\n 'admiring',\n 'adoring',\n 'affectionate',\n 'agitated',\n 'amazing',\n 'angry',\n 'awesome',\n 'blissful',\n 'boring',\n 'brave',\n 'clever',\n 'cocky',\n 'compassionate',\n 'competent',\n 'condescending',\n 'confident',\n 'cranky',\n 'dazzling',\n 'determined',\n 'distracted',\n 'dreamy',\n 'eager',\n 'ecstatic',\n 'elastic',\n 'elated',\n 'elegant',\n 'eloquent',\n 'epic',\n 'fervent',\n 'festive',\n 'flamboyant',\n 'focused',\n 'friendly',\n 'frosty',\n 'gallant',\n 'gifted',\n 'goofy',\n 'gracious',\n 'happy',\n 'hardcore',\n 'heuristic',\n 'hopeful',\n 'hungry',\n 'infallible',\n 'inspiring',\n 'jolly',\n 'jovial',\n 'keen',\n 'kind',\n 'laughing',\n 'loving',\n 'lucid',\n 'mystifying',\n 'modest',\n 'musing',\n 'naughty',\n 'nervous',\n 'nifty',\n 'nostalgic',\n 'objective',\n 'optimistic',\n 'peaceful',\n 'pedantic',\n 'pensive',\n 'practical',\n 'priceless',\n 'quirky',\n 'quizzical',\n 'relaxed',\n 'reverent',\n 'romantic',\n 'sad',\n 'serene',\n 'sharp',\n 'silly',\n 'sleepy',\n 'stoic',\n 'stupefied',\n 'suspicious',\n 'tender',\n 'thirsty',\n 'trusting',\n 'unruffled',\n 'upbeat',\n 'vibrant',\n 'vigilant',\n 'vigorous',\n 'wizardly',\n 'wonderful',\n 'xenodochial',\n 'youthful',\n 'zealous',\n 'zen',\n];\n\nlet right = [\n // Muhammad ibn Jābir al-Ḥarrānī al-Battānī was a founding father of astronomy. https://en.wikipedia.org/wiki/Mu%E1%B8%A5ammad_ibn_J%C4%81bir_al-%E1%B8%A4arr%C4%81n%C4%AB_al-Batt%C4%81n%C4%AB\n 'albattani',\n \n // Frances E. Allen, became the first female IBM Fellow in 1989. In 2006, she became the first female recipient of the ACM's Turing Award. https://en.wikipedia.org/wiki/Frances_E._Allen\n 'allen',\n \n // June Almeida - Scottish virologist who took the first pictures of the rubella virus - https://en.wikipedia.org/wiki/June_Almeida\n 'almeida',\n \n // Maria Gaetana Agnesi - Italian mathematician, philosopher, theologian and humanitarian. She was the first woman to write a mathematics handbook and the first woman appointed as a Mathematics Professor at a University. https://en.wikipedia.org/wiki/Maria_Gaetana_Agnesi\n 'agnesi',\n \n // Archimedes was a physicist, engineer and mathematician who invented too many things to list them here. https://en.wikipedia.org/wiki/Archimedes\n 'archimedes',\n \n // Maria Ardinghelli - Italian translator, mathematician and physicist - https://en.wikipedia.org/wiki/Maria_Ardinghelli\n 'ardinghelli',\n \n // Aryabhata - Ancient Indian mathematician-astronomer during 476-550 CE https://en.wikipedia.org/wiki/Aryabhata\n 'aryabhata',\n \n // Wanda Austin - Wanda Austin is the President and CEO of The Aerospace Corporation, a leading architect for the US security space programs. https://en.wikipedia.org/wiki/Wanda_Austin\n 'austin',\n \n // Charles Babbage invented the concept of a programmable computer. https://en.wikipedia.org/wiki/Charles_Babbage.\n 'babbage',\n \n // Stefan Banach - Polish mathematician, was one of the founders of modern functional analysis. https://en.wikipedia.org/wiki/Stefan_Banach\n 'banach',\n \n // John Bardeen co-invented the transistor - https://en.wikipedia.org/wiki/John_Bardeen\n 'bardeen',\n \n // Jean Bartik, born Betty Jean Jennings, was one of the original programmers for the ENIAC computer. https://en.wikipedia.org/wiki/Jean_Bartik\n 'bartik',\n \n // Laura Bassi, the world's first female professor https://en.wikipedia.org/wiki/Laura_Bassi\n 'bassi',\n \n // Hugh Beaver, British engineer, founder of the Guinness Book of World Records https://en.wikipedia.org/wiki/Hugh_Beaver\n 'beaver',\n \n // Alexander Graham Bell - an eminent Scottish-born scientist, inventor, engineer and innovator who is credited with inventing the first practical telephone - https://en.wikipedia.org/wiki/Alexander_Graham_Bell\n 'bell',\n \n // Karl Friedrich Benz - a German automobile engineer. Inventor of the first practical motorcar. https://en.wikipedia.org/wiki/Karl_Benz\n 'benz',\n \n // Homi J Bhabha - was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research. Colloquially known as 'father of Indian nuclear programme'- https://en.wikipedia.org/wiki/Homi_J._Bhabha\n 'bhabha',\n \n // Bhaskara II - Ancient Indian mathematician-astronomer whose work on calculus predates Newton and Leibniz by over half a millennium - https://en.wikipedia.org/wiki/Bh%C4%81skara_II#Calculus\n 'bhaskara',\n \n // Elizabeth Blackwell - American doctor and first American woman to receive a medical degree - https://en.wikipedia.org/wiki/Elizabeth_Blackwell\n 'blackwell',\n \n // Niels Bohr is the father of quantum theory. https://en.wikipedia.org/wiki/Niels_Bohr.\n 'bohr',\n \n // Kathleen Booth, she's credited with writing the first assembly language. https://en.wikipedia.org/wiki/Kathleen_Booth\n 'booth',\n \n // Anita Borg - Anita Borg was the founding director of the Institute for Women and Technology (IWT). https://en.wikipedia.org/wiki/Anita_Borg\n 'borg',\n \n // Satyendra Nath Bose - He provided the foundation for Bose–Einstein statistics and the theory of the Bose–Einstein condensate. - https://en.wikipedia.org/wiki/Satyendra_Nath_Bose\n 'bose',\n \n // Evelyn Boyd Granville - She was one of the first African-American woman to receive a Ph.D. in mathematics; she earned it in 1949 from Yale University. https://en.wikipedia.org/wiki/Evelyn_Boyd_Granville\n 'boyd',\n \n // Brahmagupta - Ancient Indian mathematician during 598-670 CE who gave rules to compute with zero - https://en.wikipedia.org/wiki/Brahmagupta#Zero\n 'brahmagupta',\n \n // Walter Houser Brattain co-invented the transistor - https://en.wikipedia.org/wiki/Walter_Houser_Brattain\n 'brattain',\n \n // Emmett Brown invented time travel. https://en.wikipedia.org/wiki/Emmett_Brown (thanks Brian Goff)\n 'brown',\n \n // Rachel Carson - American marine biologist and conservationist, her book Silent Spring and other writings are credited with advancing the global environmental movement. https://en.wikipedia.org/wiki/Rachel_Carson\n 'carson',\n \n // Subrahmanyan Chandrasekhar - Astrophysicist known for his mathematical theory on different stages and evolution in structures of the stars. He has won nobel prize for physics - https://en.wikipedia.org/wiki/Subrahmanyan_Chandrasekhar\n 'chandrasekhar',\n \n // Claude Shannon - The father of information theory and founder of digital circuit design theory. (https://en.wikipedia.org/wiki/Claude_Shannon)\n 'shannon',\n \n // Joan Clarke - Bletchley Park code breaker during the Second World War who pioneered techniques that remained top secret for decades. Also an accomplished numismatist https://en.wikipedia.org/wiki/Joan_Clarke\n 'clarke',\n \n // Jane Colden - American botanist widely considered the first female American botanist - https://en.wikipedia.org/wiki/Jane_Colden\n 'colden',\n \n // Gerty Theresa Cori - American biochemist who became the third woman—and first American woman—to win a Nobel Prize in science, and the first woman to be awarded the Nobel Prize in Physiology or Medicine. Cori was born in Prague. https://en.wikipedia.org/wiki/Gerty_Cori\n 'cori',\n \n // Seymour Roger Cray was an American electrical engineer and supercomputer architect who designed a series of computers that were the fastest in the world for decades. https://en.wikipedia.org/wiki/Seymour_Cray\n 'cray',\n \n // This entry reflects a husband and wife team who worked together:\n // Joan Curran was a Welsh scientist who developed radar and invented chaff, a radar countermeasure. https://en.wikipedia.org/wiki/Joan_Curran\n // Samuel Curran was an Irish physicist who worked alongside his wife during WWII and invented the proximity fuse. https://en.wikipedia.org/wiki/Samuel_Curran\n 'curran',\n \n // Marie Curie discovered radioactivity. https://en.wikipedia.org/wiki/Marie_Curie.\n 'curie',\n \n // Charles Darwin established the principles of natural evolution. https://en.wikipedia.org/wiki/Charles_Darwin.\n 'darwin',\n \n // Leonardo Da Vinci invented too many things to list here. https://en.wikipedia.org/wiki/Leonardo_da_Vinci.\n 'davinci',\n \n // Edsger Wybe Dijkstra was a Dutch computer scientist and mathematical scientist. https://en.wikipedia.org/wiki/Edsger_W._Dijkstra.\n 'dijkstra',\n \n // Donna Dubinsky - played an integral role in the development of personal digital assistants (PDAs) serving as CEO of Palm, Inc. and co-founding Handspring. https://en.wikipedia.org/wiki/Donna_Dubinsky\n 'dubinsky',\n \n // Annie Easley - She was a leading member of the team which developed software for the Centaur rocket stage and one of the first African-Americans in her field. https://en.wikipedia.org/wiki/Annie_Easley\n 'easley',\n \n // Thomas Alva Edison, prolific inventor https://en.wikipedia.org/wiki/Thomas_Edison\n 'edison',\n \n // Albert Einstein invented the general theory of relativity. https://en.wikipedia.org/wiki/Albert_Einstein\n 'einstein',\n \n // Gertrude Elion - American biochemist, pharmacologist and the 1988 recipient of the Nobel Prize in Medicine - https://en.wikipedia.org/wiki/Gertrude_Elion\n 'elion',\n \n // Douglas Engelbart gave the mother of all demos: https://en.wikipedia.org/wiki/Douglas_Engelbart\n 'engelbart',\n \n // Euclid invented geometry. https://en.wikipedia.org/wiki/Euclid\n 'euclid',\n \n // Leonhard Euler invented large parts of modern mathematics. https://de.wikipedia.org/wiki/Leonhard_Euler\n 'euler',\n \n // Pierre de Fermat pioneered several aspects of modern mathematics. https://en.wikipedia.org/wiki/Pierre_de_Fermat\n 'fermat',\n \n // Enrico Fermi invented the first nuclear reactor. https://en.wikipedia.org/wiki/Enrico_Fermi.\n 'fermi',\n \n // Richard Feynman was a key contributor to quantum mechanics and particle physics. https://en.wikipedia.org/wiki/Richard_Feynman\n 'feynman',\n \n // Benjamin Franklin is famous for his experiments in electricity and the invention of the lightning rod.\n 'franklin',\n \n // Galileo was a founding father of modern astronomy, and faced politics and obscurantism to establish scientific truth. https://en.wikipedia.org/wiki/Galileo_Galilei\n 'galileo',\n \n // William Henry 'Bill' Gates III is an American business magnate, philanthropist, investor, computer programmer, and inventor. https://en.wikipedia.org/wiki/Bill_Gates\n 'gates',\n \n // Adele Goldberg, was one of the designers and developers of the Smalltalk language. https://en.wikipedia.org/wiki/Adele_Goldberg_(computer_scientist)\n 'goldberg',\n \n // Adele Goldstine, born Adele Katz, wrote the complete technical description for the first electronic digital computer, ENIAC. https://en.wikipedia.org/wiki/Adele_Goldstine\n 'goldstine',\n \n // Shafi Goldwasser is a computer scientist known for creating theoretical foundations of modern cryptography. Winner of 2012 ACM Turing Award. https://en.wikipedia.org/wiki/Shafi_Goldwasser\n 'goldwasser',\n \n // James Golick, all around gangster.\n 'golick',\n \n // Jane Goodall - British primatologist, ethologist, and anthropologist who is considered to be the world's foremost expert on chimpanzees - https://en.wikipedia.org/wiki/Jane_Goodall\n 'goodall',\n \n // Lois Haibt - American computer scientist, part of the team at IBM that developed FORTRAN - https://en.wikipedia.org/wiki/Lois_Haibt\n 'haibt',\n \n // Margaret Hamilton - Director of the Software Engineering Division of the MIT Instrumentation Laboratory, which developed on-board flight software for the Apollo space program. https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)\n 'hamilton',\n \n // Stephen Hawking pioneered the field of cosmology by combining general relativity and quantum mechanics. https://en.wikipedia.org/wiki/Stephen_Hawking\n 'hawking',\n \n // Werner Heisenberg was a founding father of quantum mechanics. https://en.wikipedia.org/wiki/Werner_Heisenberg\n 'heisenberg',\n \n // Grete Hermann was a German philosopher noted for her philosophical work on the foundations of quantum mechanics. https://en.wikipedia.org/wiki/Grete_Hermann\n 'hermann',\n \n // Jaroslav Heyrovský was the inventor of the polarographic method, father of the electroanalytical method, and recipient of the Nobel Prize in 1959. His main field of work was polarography. https://en.wikipedia.org/wiki/Jaroslav_Heyrovsk%C3%BD\n 'heyrovsky',\n \n // Dorothy Hodgkin was a British biochemist, credited with the development of protein crystallography. She was awarded the Nobel Prize in Chemistry in 1964. https://en.wikipedia.org/wiki/Dorothy_Hodgkin\n 'hodgkin',\n \n // Erna Schneider Hoover revolutionized modern communication by inventing a computerized telephone switching method. https://en.wikipedia.org/wiki/Erna_Schneider_Hoover\n 'hoover',\n \n // Grace Hopper developed the first compiler for a computer programming language and is credited with popularizing the term 'debugging' for fixing computer glitches. https://en.wikipedia.org/wiki/Grace_Hopper\n 'hopper',\n \n // Frances Hugle, she was an American scientist, engineer, and inventor who contributed to the understanding of semiconductors, integrated circuitry, and the unique electrical principles of microscopic materials. https://en.wikipedia.org/wiki/Frances_Hugle\n 'hugle',\n \n // Hypatia - Greek Alexandrine Neoplatonist philosopher in Egypt who was one of the earliest mothers of mathematics - https://en.wikipedia.org/wiki/Hypatia\n 'hypatia',\n \n // Mary Jackson, American mathematician and aerospace engineer who earned the highest title within NASA's engineering department - https://en.wikipedia.org/wiki/Mary_Jackson_(engineer)\n 'jackson',\n \n // Yeong-Sil Jang was a Korean scientist and astronomer during the Joseon Dynasty; he invented the first metal printing press and water gauge. https://en.wikipedia.org/wiki/Jang_Yeong-sil\n 'jang',\n \n // Betty Jennings - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Jean_Bartik\n 'jennings',\n \n // Mary Lou Jepsen, was the founder and chief technology officer of One Laptop Per Child (OLPC), and the founder of Pixel Qi. https://en.wikipedia.org/wiki/Mary_Lou_Jepsen\n 'jepsen',\n \n // Katherine Coleman Goble Johnson - American physicist and mathematician contributed to the NASA. https://en.wikipedia.org/wiki/Katherine_Johnson\n 'johnson',\n \n // Irène Joliot-Curie - French scientist who was awarded the Nobel Prize for Chemistry in 1935. Daughter of Marie and Pierre Curie. https://en.wikipedia.org/wiki/Ir%C3%A8ne_Joliot-Curie\n 'joliot',\n \n // Karen Spärck Jones came up with the concept of inverse document frequency, which is used in most search engines today. https://en.wikipedia.org/wiki/Karen_Sp%C3%A4rck_Jones\n 'jones',\n \n // A. P. J. Abdul Kalam - is an Indian scientist aka Missile Man of India for his work on the development of ballistic missile and launch vehicle technology - https://en.wikipedia.org/wiki/A._P._J._Abdul_Kalam\n 'kalam',\n \n // Susan Kare, created the icons and many of the interface elements for the original Apple Macintosh in the 1980s, and was an original employee of NeXT, working as the Creative Director. https://en.wikipedia.org/wiki/Susan_Kare\n 'kare',\n \n // Mary Kenneth Keller, Sister Mary Kenneth Keller became the first American woman to earn a PhD in Computer Science in 1965. https://en.wikipedia.org/wiki/Mary_Kenneth_Keller\n 'keller',\n \n // Johannes Kepler, German astronomer known for his three laws of planetary motion - https://en.wikipedia.org/wiki/Johannes_Kepler\n 'kepler',\n \n // Har Gobind Khorana - Indian-American biochemist who shared the 1968 Nobel Prize for Physiology - https://en.wikipedia.org/wiki/Har_Gobind_Khorana\n 'khorana',\n \n // Jack Kilby invented silicone integrated circuits and gave Silicon Valley its name. - https://en.wikipedia.org/wiki/Jack_Kilby\n 'kilby',\n \n // Maria Kirch - German astronomer and first woman to discover a comet - https://en.wikipedia.org/wiki/Maria_Margarethe_Kirch\n 'kirch',\n \n // Donald Knuth - American computer scientist, author of 'The Art of Computer Programming' and creator of the TeX typesetting system. https://en.wikipedia.org/wiki/Donald_Knuth\n 'knuth',\n \n // Sophie Kowalevski - Russian mathematician responsible for important original contributions to analysis, differential equations and mechanics - https://en.wikipedia.org/wiki/Sofia_Kovalevskaya\n 'kowalevski',\n \n // Marie-Jeanne de Lalande - French astronomer, mathematician and cataloguer of stars - https://en.wikipedia.org/wiki/Marie-Jeanne_de_Lalande\n 'lalande',\n \n // Hedy Lamarr - Actress and inventor. The principles of her work are now incorporated into modern Wi-Fi, CDMA and Bluetooth technology. https://en.wikipedia.org/wiki/Hedy_Lamarr\n 'lamarr',\n \n // Leslie B. Lamport - American computer scientist. Lamport is best known for his seminal work in distributed systems and was the winner of the 2013 Turing Award. https://en.wikipedia.org/wiki/Leslie_Lamport\n 'lamport',\n \n // Mary Leakey - British paleoanthropologist who discovered the first fossilized Proconsul skull - https://en.wikipedia.org/wiki/Mary_Leakey\n 'leakey',\n \n // Henrietta Swan Leavitt - she was an American astronomer who discovered the relation between the luminosity and the period of Cepheid variable stars. https://en.wikipedia.org/wiki/Henrietta_Swan_Leavitt\n 'leavitt',\n \n // Daniel Lewin - Mathematician, Akamai co-founder, soldier, 9/11 victim-- Developed optimization techniques for routing traffic on the internet. Died attempting to stop the 9-11 hijackers. https://en.wikipedia.org/wiki/Daniel_Lewin\n 'lewin',\n \n // Ruth Lichterman - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Ruth_Teitelbaum\n 'lichterman',\n \n // Barbara Liskov - co-developed the Liskov substitution principle. Liskov was also the winner of the Turing Prize in 2008. - https://en.wikipedia.org/wiki/Barbara_Liskov\n 'liskov',\n \n // Ada Lovelace invented the first algorithm. https://en.wikipedia.org/wiki/Ada_Lovelace (thanks James Turnbull)\n 'lovelace',\n \n // Auguste and Louis Lumière - the first filmmakers in history - https://en.wikipedia.org/wiki/Auguste_and_Louis_Lumi%C3%A8re\n 'lumiere',\n \n // Mahavira - Ancient Indian mathematician during 9th century AD who discovered basic algebraic identities - https://en.wikipedia.org/wiki/Mah%C4%81v%C4%ABra_(mathematician)\n 'mahavira',\n \n // Maria Mayer - American theoretical physicist and Nobel laureate in Physics for proposing the nuclear shell model of the atomic nucleus - https://en.wikipedia.org/wiki/Maria_Mayer\n 'mayer',\n \n // John McCarthy invented LISP: https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)\n 'mccarthy',\n \n // Barbara McClintock - a distinguished American cytogeneticist, 1983 Nobel Laureate in Physiology or Medicine for discovering transposons. https://en.wikipedia.org/wiki/Barbara_McClintock\n 'mcclintock',\n \n // Malcolm McLean invented the modern shipping container: https://en.wikipedia.org/wiki/Malcom_McLean\n 'mclean',\n \n // Kay McNulty - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Kathleen_Antonelli\n 'mcnulty',\n \n // Lise Meitner - Austrian/Swedish physicist who was involved in the discovery of nuclear fission. The element meitnerium is named after her - https://en.wikipedia.org/wiki/Lise_Meitner\n 'meitner',\n \n // Carla Meninsky, was the game designer and programmer for Atari 2600 games Dodge 'Em and Warlords. https://en.wikipedia.org/wiki/Carla_Meninsky\n 'meninsky',\n \n // Johanna Mestorf - German prehistoric archaeologist and first female museum director in Germany - https://en.wikipedia.org/wiki/Johanna_Mestorf\n 'mestorf',\n \n // Marvin Minsky - Pioneer in Artificial Intelligence, co-founder of the MIT's AI Lab, won the Turing Award in 1969. https://en.wikipedia.org/wiki/Marvin_Minsky\n 'minsky',\n \n // Maryam Mirzakhani - an Iranian mathematician and the first woman to win the Fields Medal. https://en.wikipedia.org/wiki/Maryam_Mirzakhani\n 'mirzakhani',\n \n // Samuel Morse - contributed to the invention of a single-wire telegraph system based on European telegraphs and was a co-developer of the Morse code - https://en.wikipedia.org/wiki/Samuel_Morse\n 'morse',\n \n // Ian Murdock - founder of the Debian project - https://en.wikipedia.org/wiki/Ian_Murdock\n 'murdock',\n \n // John von Neumann - todays computer architectures are based on the von Neumann architecture. https://en.wikipedia.org/wiki/Von_Neumann_architecture\n 'neumann',\n \n // Isaac Newton invented classic mechanics and modern optics. https://en.wikipedia.org/wiki/Isaac_Newton\n 'newton',\n \n // Florence Nightingale, more prominently known as a nurse, was also the first female member of the Royal Statistical Society and a pioneer in statistical graphics https://en.wikipedia.org/wiki/Florence_Nightingale#Statistics_and_sanitary_reform\n 'nightingale',\n \n // Alfred Nobel - a Swedish chemist, engineer, innovator, and armaments manufacturer (inventor of dynamite) - https://en.wikipedia.org/wiki/Alfred_Nobel\n 'nobel',\n \n // Emmy Noether, German mathematician. Noether's Theorem is named after her. https://en.wikipedia.org/wiki/Emmy_Noether\n 'noether',\n \n // Poppy Northcutt. Poppy Northcutt was the first woman to work as part of NASA’s Mission Control. http://www.businessinsider.com/poppy-northcutt-helped-apollo-astronauts-2014-12?op=1\n 'northcutt',\n \n // Robert Noyce invented silicone integrated circuits and gave Silicon Valley its name. - https://en.wikipedia.org/wiki/Robert_Noyce\n 'noyce',\n \n // Panini - Ancient Indian linguist and grammarian from 4th century CE who worked on the world's first formal system - https://en.wikipedia.org/wiki/P%C4%81%E1%B9%87ini#Comparison_with_modern_formal_systems\n 'panini',\n \n // Ambroise Pare invented modern surgery. https://en.wikipedia.org/wiki/Ambroise_Par%C3%A9\n 'pare',\n \n // Louis Pasteur discovered vaccination, fermentation and pasteurization. https://en.wikipedia.org/wiki/Louis_Pasteur.\n 'pasteur',\n \n // Cecilia Payne-Gaposchkin was an astronomer and astrophysicist who, in 1925, proposed in her Ph.D. thesis an explanation for the composition of stars in terms of the relative abundances of hydrogen and helium. https://en.wikipedia.org/wiki/Cecilia_Payne-Gaposchkin\n 'payne',\n \n // Radia Perlman is a software designer and network engineer and most famous for her invention of the spanning-tree protocol (STP). https://en.wikipedia.org/wiki/Radia_Perlman\n 'perlman',\n \n // Rob Pike was a key contributor to Unix, Plan 9, the X graphic system, utf-8, and the Go programming language. https://en.wikipedia.org/wiki/Rob_Pike\n 'pike',\n \n // Henri Poincaré made fundamental contributions in several fields of mathematics. https://en.wikipedia.org/wiki/Henri_Poincar%C3%A9\n 'poincare',\n \n // Laura Poitras is a director and producer whose work, made possible by open source crypto tools, advances the causes of truth and freedom of information by reporting disclosures by whistleblowers such as Edward Snowden. https://en.wikipedia.org/wiki/Laura_Poitras\n 'poitras',\n \n // Claudius Ptolemy - a Greco-Egyptian writer of Alexandria, known as a mathematician, astronomer, geographer, astrologer, and poet of a single epigram in the Greek Anthology - https://en.wikipedia.org/wiki/Ptolemy\n 'ptolemy',\n \n // C. V. Raman - Indian physicist who won the Nobel Prize in 1930 for proposing the Raman effect. - https://en.wikipedia.org/wiki/C._V._Raman\n 'raman',\n \n // Srinivasa Ramanujan - Indian mathematician and autodidact who made extraordinary contributions to mathematical analysis, number theory, infinite series, and continued fractions. - https://en.wikipedia.org/wiki/Srinivasa_Ramanujan\n 'ramanujan',\n \n // Sally Kristen Ride was an American physicist and astronaut. She was the first American woman in space, and the youngest American astronaut. https://en.wikipedia.org/wiki/Sally_Ride\n 'ride',\n \n // Rita Levi-Montalcini - Won Nobel Prize in Physiology or Medicine jointly with colleague Stanley Cohen for the discovery of nerve growth factor (https://en.wikipedia.org/wiki/Rita_Levi-Montalcini)\n 'montalcini',\n \n // Dennis Ritchie - co-creator of UNIX and the C programming language. - https://en.wikipedia.org/wiki/Dennis_Ritchie\n 'ritchie',\n \n // Wilhelm Conrad Röntgen - German physicist who was awarded the first Nobel Prize in Physics in 1901 for the discovery of X-rays (Röntgen rays). https://en.wikipedia.org/wiki/Wilhelm_R%C3%B6ntgen\n 'roentgen',\n \n // Rosalind Franklin - British biophysicist and X-ray crystallographer whose research was critical to the understanding of DNA - https://en.wikipedia.org/wiki/Rosalind_Franklin\n 'rosalind',\n \n // Meghnad Saha - Indian astrophysicist best known for his development of the Saha equation, used to describe chemical and physical conditions in stars - https://en.wikipedia.org/wiki/Meghnad_Saha\n 'saha',\n \n // Jean E. Sammet developed FORMAC, the first widely used computer language for symbolic manipulation of mathematical formulas. https://en.wikipedia.org/wiki/Jean_E._Sammet\n 'sammet',\n \n // Carol Shaw - Originally an Atari employee, Carol Shaw is said to be the first female video game designer. https://en.wikipedia.org/wiki/Carol_Shaw_(video_game_designer)\n 'shaw',\n \n // Dame Stephanie 'Steve' Shirley - Founded a software company in 1962 employing women working from home. https://en.wikipedia.org/wiki/Steve_Shirley\n 'shirley',\n \n // William Shockley co-invented the transistor - https://en.wikipedia.org/wiki/William_Shockley\n 'shockley',\n \n // Françoise Barré-Sinoussi - French virologist and Nobel Prize Laureate in Physiology or Medicine; her work was fundamental in identifying HIV as the cause of AIDS. https://en.wikipedia.org/wiki/Fran%C3%A7oise_Barr%C3%A9-Sinoussi\n 'sinoussi',\n \n // Betty Snyder - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Betty_Holberton\n 'snyder',\n \n // Frances Spence - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Frances_Spence\n 'spence',\n \n // Richard Matthew Stallman - the founder of the Free Software movement, the GNU project, the Free Software Foundation, and the League for Programming Freedom. He also invented the concept of copyleft to protect the ideals of this movement, and enshrined this concept in the widely-used GPL (General Public License) for software. https://en.wikiquote.org/wiki/Richard_Stallman\n 'stallman',\n \n // Michael Stonebraker is a database research pioneer and architect of Ingres, Postgres, VoltDB and SciDB. Winner of 2014 ACM Turing Award. https://en.wikipedia.org/wiki/Michael_Stonebraker\n 'stonebraker',\n \n // Janese Swanson (with others) developed the first of the Carmen Sandiego games. She went on to found Girl Tech. https://en.wikipedia.org/wiki/Janese_Swanson\n 'swanson',\n \n // Aaron Swartz was influential in creating RSS, Markdown, Creative Commons, Reddit, and much of the internet as we know it today. He was devoted to freedom of information on the web. https://en.wikiquote.org/wiki/Aaron_Swartz\n 'swartz',\n \n // Bertha Swirles was a theoretical physicist who made a number of contributions to early quantum theory. https://en.wikipedia.org/wiki/Bertha_Swirles\n 'swirles',\n \n // Nikola Tesla invented the AC electric system and every gadget ever used by a James Bond villain. https://en.wikipedia.org/wiki/Nikola_Tesla\n 'tesla',\n \n // Ken Thompson - co-creator of UNIX and the C programming language - https://en.wikipedia.org/wiki/Ken_Thompson\n 'thompson',\n \n // Linus Torvalds invented Linux and Git. https://en.wikipedia.org/wiki/Linus_Torvalds\n 'torvalds',\n \n // Alan Turing was a founding father of computer science. https://en.wikipedia.org/wiki/Alan_Turing.\n 'turing',\n \n // Varahamihira - Ancient Indian mathematician who discovered trigonometric formulae during 505-587 CE - https://en.wikipedia.org/wiki/Var%C4%81hamihira#Contributions\n 'varahamihira',\n \n // Sir Mokshagundam Visvesvaraya - is a notable Indian engineer. He is a recipient of the Indian Republic's highest honour, the Bharat Ratna, in 1955. On his birthday, 15 September is celebrated as Engineer's Day in India in his memory - https://en.wikipedia.org/wiki/Visvesvaraya\n 'visvesvaraya',\n \n // Christiane Nüsslein-Volhard - German biologist, won Nobel Prize in Physiology or Medicine in 1995 for research on the genetic control of embryonic development. https://en.wikipedia.org/wiki/Christiane_N%C3%BCsslein-Volhard\n 'volhard',\n \n // Marlyn Wescoff - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Marlyn_Meltzer\n 'wescoff',\n \n // Andrew Wiles - Notable British mathematician who proved the enigmatic Fermat's Last Theorem - https://en.wikipedia.org/wiki/Andrew_Wiles\n 'wiles',\n \n // Roberta Williams, did pioneering work in graphical adventure games for personal computers, particularly the King's Quest series. https://en.wikipedia.org/wiki/Roberta_Williams\n 'williams',\n \n // Sophie Wilson designed the first Acorn Micro-Computer and the instruction set for ARM processors. https://en.wikipedia.org/wiki/Sophie_Wilson\n 'wilson',\n \n // Jeannette Wing - co-developed the Liskov substitution principle. - https://en.wikipedia.org/wiki/Jeannette_Wing\n 'wing',\n \n // Steve Wozniak invented the Apple I and Apple II. https://en.wikipedia.org/wiki/Steve_Wozniak\n 'wozniak',\n \n // The Wright brothers, Orville and Wilbur - credited with inventing and building the world's first successful airplane and making the first controlled, powered and sustained heavier-than-air human flight - https://en.wikipedia.org/wiki/Wright_brothers\n 'wright',\n \n // Rosalyn Sussman Yalow - Rosalyn Sussman Yalow was an American medical physicist, and a co-winner of the 1977 Nobel Prize in Physiology or Medicine for development of the radioimmunoassay technique. https://en.wikipedia.org/wiki/Rosalyn_Sussman_Yalow\n 'yalow',\n \n // Ada Yonath - an Israeli crystallographer, the first woman from the Middle East to win a Nobel prize in the sciences. https://en.wikipedia.org/wiki/Ada_Yonath\n 'yonath',\n];\n\nlet randnum = (n) => Math.floor(Math.random() * (n + 1));\n\nexport default (sep = '-') =>\n left[randnum(left.length)] + sep + right[randnum(right.length)];","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApplicationCreate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApplicationCreate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ApplicationCreate.vue?vue&type=template&id=fd780e60&\"\nimport script from \"./ApplicationCreate.vue?vue&type=script&lang=js&\"\nexport * from \"./ApplicationCreate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ApplicationCreate.vue?vue&type=style&index=0&lang=stylus&\"\nimport style1 from \"./ApplicationCreate.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTabsSlider } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VForm,VIcon,VRow,VSelect,VSpacer,VSwitch,VTab,VTabItem,VTabs,VTabsItems,VTabsSlider,VTextField,VTextarea})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Buffer_1 = require(\"./Buffer\");\nvar BufferLine = (function () {\n function BufferLine(cols, ch, isWrapped) {\n this.isWrapped = false;\n this._data = [];\n this.length = this._data.length;\n if (cols) {\n if (!ch) {\n ch = [0, Buffer_1.NULL_CELL_CHAR, Buffer_1.NULL_CELL_WIDTH, Buffer_1.NULL_CELL_CODE];\n }\n for (var i = 0; i < cols; i++) {\n this.push(ch);\n }\n }\n if (isWrapped) {\n this.isWrapped = true;\n }\n }\n BufferLine.blankLine = function (cols, attr, isWrapped) {\n var ch = [attr, Buffer_1.NULL_CELL_CHAR, Buffer_1.NULL_CELL_WIDTH, Buffer_1.NULL_CELL_CODE];\n return new BufferLine(cols, ch, isWrapped);\n };\n BufferLine.prototype.get = function (index) {\n return this._data[index];\n };\n BufferLine.prototype.set = function (index, data) {\n this._data[index] = data;\n };\n BufferLine.prototype.pop = function () {\n var data = this._data.pop();\n this.length = this._data.length;\n return data;\n };\n BufferLine.prototype.push = function (data) {\n this._data.push(data);\n this.length = this._data.length;\n };\n BufferLine.prototype.splice = function (start, deleteCount) {\n var items = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n items[_i - 2] = arguments[_i];\n }\n var _a;\n var removed = (_a = this._data).splice.apply(_a, [start, deleteCount].concat(items));\n this.length = this._data.length;\n return removed;\n };\n BufferLine.prototype.insertCells = function (pos, n, ch) {\n while (n--) {\n this.splice(pos, 0, ch);\n this.pop();\n }\n };\n BufferLine.prototype.deleteCells = function (pos, n, fill) {\n while (n--) {\n this.splice(pos, 1);\n this.push(fill);\n }\n };\n BufferLine.prototype.replaceCells = function (start, end, fill) {\n while (start < end && start < this.length) {\n this.set(start++, fill);\n }\n };\n return BufferLine;\n}());\nexports.BufferLine = BufferLine;\n//# sourceMappingURL=BufferLine.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-layout',[_c('page-title',{staticClass:\"ml-4\"},[_vm._v(\"Devices\")]),_c('div',{staticClass:\"ml-4 mt-1 mb-2\"},[_c('v-btn',{staticClass:\"primary--text mr-3\",attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.refresh()}}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"refresh\")]),_vm._v(\" Refresh \")],1),_c('provision-device'),_c('application-create',{attrs:{\"secrets\":[]}})],1)],1),_c('v-layout',[_c('page-subtitle',[_vm._v(\" Devices are used to run your applications. Learn more about devices and provisioning in the official \"),_c('a',{staticClass:\"ml-1\",attrs:{\"href\":\"https://docs.synpse.net/synpse-core/devices/provisioning\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"documentation\")]),_vm._v(\". \")])],1),_c('v-layout',[(\n _vm.project != undefined && _vm.project.deviceCount >= _vm.project.quota.devices\n )?_c('v-alert',{attrs:{\"dense\":\"\",\"border\":\"left\",\"type\":\"warning\",\"outlined\":\"\"}},[_vm._v(\" You have reached your devices quota. To add a new device either delete an existing one or \"),_c('router-link',{attrs:{\"to\":{\n name: 'projectDetails',\n params: {\n project: _vm.project.id,\n },\n }}},[_vm._v(\"upgrade subscription. \")])],1):_vm._e()],1),_c('v-layout',[(_vm.error)?_c('div',[_c('v-alert',{attrs:{\"type\":\"error\",\"dense\":\"\",\"outlined\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],1):_vm._e()]),_c('v-dialog',{attrs:{\"max-width\":\"500px\"},model:{value:(_vm.removeDeviceModal),callback:function ($$v) {_vm.removeDeviceModal=$$v},expression:\"removeDeviceModal\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\"Confirmation Required\")]),_c('v-card-text',[_vm._v(\" Are you sure want to delete device '\"+_vm._s(_vm.removingDevice.name)+\"'? \")]),_c('v-card-actions',[_c('v-btn',{staticClass:\"primary--text\",attrs:{\"text\":\"\",\"small\":\"\"},nativeOn:{\"click\":function($event){_vm.removeDeviceModal = false}}},[_vm._v(\"Cancel\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary white--text\",attrs:{\"small\":\"\"},nativeOn:{\"click\":function($event){return _vm.deleteDevice(_vm.removingDevice)}}},[_vm._v(\" Remove \")])],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"400px\"},model:{value:(_vm.editLabelsModal),callback:function ($$v) {_vm.editLabelsModal=$$v},expression:\"editLabelsModal\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\"Edit Labels\")]),_c('v-card-text',[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-subheader',[_vm._v(\"Current labels\")]),_vm._l((_vm.editingDevice.labels),function(label,key,i){return _c('v-list-item',{key:(\"label-\" + key + \"-\" + i)},[_c('v-list-item-content',[_c('v-chip',{staticClass:\"justify-center\",attrs:{\"outlined\":\"\",\"color\":\"primary\"}},[_vm._v(\" \"+_vm._s(key)+\":\"+_vm._s(label)+\" \")])],1),_c('v-list-item-icon',[_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.deleteDeviceLabel(key)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)],1)],1)})],2)],1),_c('v-card-title',[_vm._v(\"Add New\")]),_c('v-card-text',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addDeviceLabel()}}},[_c('v-text-field',{attrs:{\"required\":\"\",\"label\":\"Key\"},model:{value:(_vm.newLabel.key),callback:function ($$v) {_vm.$set(_vm.newLabel, \"key\", $$v)},expression:\"newLabel.key\"}}),_c('v-text-field',{attrs:{\"required\":\"\",\"label\":\"Value\"},model:{value:(_vm.newLabel.value),callback:function ($$v) {_vm.$set(_vm.newLabel, \"value\", $$v)},expression:\"newLabel.value\"}}),_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"hidden\":\"\",\"type\":\"submit\"}})],1),(_vm.error)?_c('div',[_c('v-alert',{attrs:{\"error\":\"\",\"close\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],1):_vm._e()]),_c('v-card-actions',[_c('v-btn',{staticClass:\"primary--text\",attrs:{\"text\":\"\"},nativeOn:{\"click\":function($event){return _vm.closeDeviceEditModal()}}},[_vm._v(\"Close\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary white--text\",nativeOn:{\"click\":function($event){return _vm.addDeviceLabel()}}},[_vm._v(\" Add \")])],1)],1)],1),_c('v-layout',{staticClass:\"mt-2\"},[_c('div',{staticClass:\"tbcard\"},[(\n !_vm.loading &&\n _vm.devices.length === 0 &&\n _vm.filter === '' &&\n !_vm.projectHasDevices\n )?_c('div',[_c('v-container',{attrs:{\"fill-height\":\"\",\"align-content-space-around\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{staticClass:\"text-md-center mt-5\",attrs:{\"md6\":\"\",\"xs7\":\"\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Register your first device to Synpse\")])])],1)],1),_c('v-container',{attrs:{\"fill-height\":\"\",\"align-content-space-around\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{staticClass:\"text-md-left mt-5\",attrs:{\"md6\":\"\",\"xs12\":\"\"}},[_c('ol',[_c('li',{staticClass:\"ma-3\"},[_vm._v(\" Connect to your machine (SSH, terminal) \")]),_c('li',{staticClass:\"ma-3\"},[_c('span',[_vm._v(\"Download and install the agent:\")]),_c('markup',{staticClass:\"mt-5\",attrs:{\"language\":\"bash\",\"code\":_vm.installCommand,\"inline\":false}})],1)])])],1)],1)],1):_c('v-card',{attrs:{\"outlined\":\"\"}},[_c('v-card-title',[_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Filter devices by name or labels\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1),_c('v-data-table',{key:_vm.tableKey,attrs:{\"headers\":_vm.headers,\"items\":_vm.devices,\"hide-default-footer\":\"\",\"server-items-length\":_vm.pagination.totalItems,\"loading\":_vm.loading,\"loading-text\":\"Loading... Please wait\",\"search\":_vm.e3,\"expanded\":_vm.expanded,\"single-expand\":\"\",\"show-expand\":\"\"},on:{\"update:expanded\":function($event){_vm.expanded=$event}},scopedSlots:_vm._u([{key:\"item.created_at\",fn:function(ref){\n var item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm._f(\"moment\")(item.created_at))+\" \")]}},{key:\"item.name\",fn:function(ref){\n var item = ref.item;\nreturn [_c('router-link',{attrs:{\"to\":{\n name: 'deviceDetails',\n params: {\n project: item.projectId,\n device: item.id,\n },\n }}},[_vm._v(_vm._s(item.name))])]}},{key:\"item.status\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-tooltip',{key:item.id,attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var tooltip = ref.on;\nreturn [_c('span',_vm._g({},Object.assign({}, tooltip)),[_vm._v(\" \"+_vm._s(item.status)+\" \"),(item.status == 'online')?_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"green accent-3\"}},[_vm._v(\"fiber_manual_record\")]):(item.status == 'offline')?_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"error\"}},[_vm._v(\"fiber_manual_record\")]):_vm._e()],1)]}}],null,true)},[_c('span',[_vm._v(\"Last seen: \"+_vm._s(_vm._f(\"date\")(item.lastSeenAt))+\" (\"+_vm._s(_vm._f(\"ago\")(item.lastSeenAt))+\")\")])])]}},{key:\"item.labels\",fn:function(ref){\n var item = ref.item;\nreturn _vm._l((item.labels),function(key,label,i){return _c('v-chip',{key:(\"label-\" + key + \"-\" + i),staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"small\":\"\",\"color\":\"primary\"}},[_vm._v(_vm._s(label)+\":\"+_vm._s(item.labels[label]))])})}},{key:\"item.ip\",fn:function(ref){\n var item = ref.item;\nreturn [_c('span',{on:{\"click\":function($event){return _vm.copyToClipboard(item.info.ipAddress)}}},[_vm._v(_vm._s(item.info.ipAddress))])]}},{key:\"item.os\",fn:function(ref){\n var item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.info.osRelease.prettyName)+\" \")]}},{key:\"item.agentVersion\",fn:function(ref){\n var item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.info.agentVersion)+\" \")]}},{key:\"item.lastSeenAt\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-tooltip',{key:item.id,attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var tooltip = ref.on;\nreturn [_c('span',_vm._g({},Object.assign({}, tooltip)),[_vm._v(\" \"+_vm._s(_vm._f(\"ago\")(item.lastSeenAt))+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm._f(\"date\")(item.lastSeenAt)))])])]}},{key:\"item.deviceMemory\",fn:function(ref){\n var item = ref.item;\nreturn [(_vm.metricsLoading)?_c('v-sheet',{attrs:{\"width\":\"120\"}},[_c('v-progress-linear',{staticClass:\"white--text text-darken-2 mb-2 caption\",attrs:{\"indeterminate\":\"\",\"color\":\"grey darken-2\"}})],1):(_vm.getDeviceMemPercentage(item.id) > 0)?_c('v-sheet',{attrs:{\"width\":\"120\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-progress-linear',_vm._g(_vm._b({staticClass:\"white--text text-darken-1 mb-2 caption\",attrs:{\"height\":\"30\",\"color\":_vm.getMetricsColor(_vm.getDeviceMemPercentage(item.id)),\"width\":\"200\",\"value\":_vm.getDeviceMemPercentage(item.id)}},'v-progress-linear',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.getDeviceUsedMem(item.id))+\" / \"+_vm._s(_vm.getDeviceMemTotal(item.id))+\" \")])]}}],null,true)},[_c('span',[_vm._v(\"Average over the last 1 minute\")])])],1):_c('v-sheet',{attrs:{\"width\":\"100\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-progress-linear',_vm._g(_vm._b({staticClass:\"white--text text-darken-1 mb-2 caption\",attrs:{\"height\":\"30\",\"color\":_vm.getMetricsColor(_vm.getDeviceMemPercentage(item.id)),\"width\":\"200\",\"value\":\"0\"}},'v-progress-linear',attrs,false),on),[_vm._v(\" N/A \")])]}}],null,true)},[_c('span',[_vm._v(\"Metrics not available\")])])],1)]}},{key:\"item.deviceCPU\",fn:function(ref){\n var item = ref.item;\nreturn [(_vm.metricsLoading)?_c('v-sheet',{attrs:{\"width\":\"100\"}},[_c('v-progress-linear',{staticClass:\"white--text text-darken-2 mb-2 caption\",attrs:{\"indeterminate\":\"\",\"color\":\"grey darken-2\"}})],1):(_vm.getCPUUtilisation(item.id))?_c('v-sheet',{attrs:{\"width\":\"100\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-progress-linear',_vm._g(_vm._b({staticClass:\"white--text text-darken-2 mb-2 caption\",attrs:{\"height\":\"30\",\"color\":_vm.getMetricsColor(_vm.getCPUUtilisation(item.id)),\"value\":_vm.getCPUUtilisation(item.id)}},'v-progress-linear',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.getCPUUtilisation(item.id))+\" % \")])]}}],null,true)},[_c('span',[_vm._v(\"Average over the last 1 minute\")])])],1):_c('v-sheet',{attrs:{\"width\":\"100\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-progress-linear',_vm._g(_vm._b({staticClass:\"white--text text-darken-2 mb-2 caption\",attrs:{\"height\":\"30\",\"color\":_vm.getMetricsColor(_vm.getCPUUtilisation(item.id)),\"value\":\"0\"}},'v-progress-linear',attrs,false),on),[_vm._v(\" N/A \")])]}}],null,true)},[_c('span',[_vm._v(\"Metrics not available\")])])],1)]}},{key:\"item.actions\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"x-small\":\"\",\"outlined\":\"\",\"disabled\":item.status != 'online',\"to\":{\n name: 'deviceSSH',\n params: {\n project: item.projectId,\n device: item.id,\n },\n },\"router\":\"\"}},[_vm._v(\" SSH \")]),_c('v-menu',{staticClass:\"items\",attrs:{\"top\":\"\",\"left\":\"\",\"transition\":\"v-slide-y-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-btn',_vm._g({class:_vm.$store.state.theme === 'light' ? 'secondary--text' : '',attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',{attrs:{\"disabled\":item.status != 'online',\"to\":{\n name: 'deviceSSH',\n params: {\n project: item.projectId,\n device: item.id,\n },\n },\"router\":\"\"}},[_c('v-list-item-title',[_vm._v(\"SSH\")])],1),_c('v-list-item',{attrs:{\"to\":{\n name: 'deviceDetails',\n params: {\n project: item.projectId,\n device: item.id,\n },\n },\"router\":\"\"}},[_c('v-list-item-title',[_vm._v(\"Details\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.openDeviceEditModal(item)}}},[_c('v-list-item-title',[_vm._v(\"Edit labels\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.removeDeviceIntent(item)}}},[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)],1)]}},{key:\"expanded-item\",fn:function(ref){\n var headers = ref.headers;\n var item = ref.item;\nreturn [_c('td',{attrs:{\"colspan\":headers.length}},[_c('v-card',{staticClass:\"mt-4 mb-4\",attrs:{\"flat\":\"\"}},[_c('v-card-title',{staticClass:\"text-subtitle-2\"},[_vm._v(\" Running applications \")]),_c('v-card-text',[(_vm.device && item.id === _vm.device.id)?_c('device-applications',{attrs:{\"device\":_vm.device,\"hideHeader\":true}}):_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}})],1)],1)],1)],1)]}}],null,true)}),_c('div',{staticClass:\"pr-2 pb-2\"},[_c('v-layout',{staticClass:\"mt-2\"},[_c('v-spacer'),_c('span',{staticClass:\"text-caption ma-2 mr-4\"},[_vm._v(\"Rows per page:\")]),_c('div',{staticClass:\"rows-select\"},[_c('v-flex',{staticClass:\"select\",attrs:{\"shrink\":\"\"}},[_c('v-select',{staticClass:\"mb-2\",attrs:{\"width\":\"45\",\"items\":_vm.itemsPerPageOptions,\"dense\":\"\",\"label\":\"Rows per page\",\"single-line\":\"\"},model:{value:(_vm.itemsPerPage),callback:function ($$v) {_vm.itemsPerPage=$$v},expression:\"itemsPerPage\"}})],1)],1),_c('span',{staticClass:\"text-caption ma-2 ml-4\"},[_vm._v(\"Total devices: \"+_vm._s(_vm.pagination.totalItems))]),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"icon\":\"\",\"router\":\"\",\"disabled\":_vm.pagination.previousPageToken == '' ? true : false,\"to\":{\n name: 'devices',\n query: {\n pageToken: _vm.pagination.previousPageToken,\n },\n }}},[_c('v-icon',[_vm._v(\"navigate_before\")])],1),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"icon\":\"\",\"router\":\"\",\"disabled\":_vm.pagination.nextPageToken == '' ? true : false,\"to\":{\n name: 'devices',\n query: {\n pageToken: _vm.pagination.nextPageToken,\n },\n }}},[_c('v-icon',[_vm._v(\"navigate_next\")])],1)],1)],1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DevicesPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DevicesPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DevicesPage.vue?vue&type=template&id=45ca825c&\"\nimport script from \"./DevicesPage.vue?vue&type=script&lang=js&\"\nexport * from \"./DevicesPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DevicesPage.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VChip,VContainer,VDataTable,VDialog,VFlex,VIcon,VLayout,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VMenu,VProgressCircular,VProgressLinear,VSelect,VSheet,VSpacer,VSubheader,VTextField,VTooltip})\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Strings = require(\"./Strings\");\nvar Browser_1 = require(\"./shared/utils/Browser\");\nvar RenderDebouncer_1 = require(\"./ui/RenderDebouncer\");\nvar Lifecycle_1 = require(\"./ui/Lifecycle\");\nvar Lifecycle_2 = require(\"./common/Lifecycle\");\nvar MAX_ROWS_TO_READ = 20;\nvar AccessibilityManager = (function (_super) {\n __extends(AccessibilityManager, _super);\n function AccessibilityManager(_terminal) {\n var _this = _super.call(this) || this;\n _this._terminal = _terminal;\n _this._liveRegionLineCount = 0;\n _this._charsToConsume = [];\n _this._accessibilityTreeRoot = document.createElement('div');\n _this._accessibilityTreeRoot.classList.add('xterm-accessibility');\n _this._rowContainer = document.createElement('div');\n _this._rowContainer.classList.add('xterm-accessibility-tree');\n _this._rowElements = [];\n for (var i = 0; i < _this._terminal.rows; i++) {\n _this._rowElements[i] = _this._createAccessibilityTreeNode();\n _this._rowContainer.appendChild(_this._rowElements[i]);\n }\n _this._topBoundaryFocusListener = function (e) { return _this._onBoundaryFocus(e, 0); };\n _this._bottomBoundaryFocusListener = function (e) { return _this._onBoundaryFocus(e, 1); };\n _this._rowElements[0].addEventListener('focus', _this._topBoundaryFocusListener);\n _this._rowElements[_this._rowElements.length - 1].addEventListener('focus', _this._bottomBoundaryFocusListener);\n _this._refreshRowsDimensions();\n _this._accessibilityTreeRoot.appendChild(_this._rowContainer);\n _this._renderRowsDebouncer = new RenderDebouncer_1.RenderDebouncer(_this._terminal, _this._renderRows.bind(_this));\n _this._refreshRows();\n _this._liveRegion = document.createElement('div');\n _this._liveRegion.classList.add('live-region');\n _this._liveRegion.setAttribute('aria-live', 'assertive');\n _this._accessibilityTreeRoot.appendChild(_this._liveRegion);\n _this._terminal.element.insertAdjacentElement('afterbegin', _this._accessibilityTreeRoot);\n _this.register(_this._renderRowsDebouncer);\n _this.register(_this._terminal.addDisposableListener('resize', function (data) { return _this._onResize(data.rows); }));\n _this.register(_this._terminal.addDisposableListener('refresh', function (data) { return _this._refreshRows(data.start, data.end); }));\n _this.register(_this._terminal.addDisposableListener('scroll', function (data) { return _this._refreshRows(); }));\n _this.register(_this._terminal.addDisposableListener('a11y.char', function (char) { return _this._onChar(char); }));\n _this.register(_this._terminal.addDisposableListener('linefeed', function () { return _this._onChar('\\n'); }));\n _this.register(_this._terminal.addDisposableListener('a11y.tab', function (spaceCount) { return _this._onTab(spaceCount); }));\n _this.register(_this._terminal.addDisposableListener('key', function (keyChar) { return _this._onKey(keyChar); }));\n _this.register(_this._terminal.addDisposableListener('blur', function () { return _this._clearLiveRegion(); }));\n _this.register(_this._terminal.addDisposableListener('dprchange', function () { return _this._refreshRowsDimensions(); }));\n _this.register(_this._terminal.renderer.addDisposableListener('resize', function () { return _this._refreshRowsDimensions(); }));\n _this.register(Lifecycle_1.addDisposableDomListener(window, 'resize', function () { return _this._refreshRowsDimensions(); }));\n return _this;\n }\n AccessibilityManager.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this._terminal.element.removeChild(this._accessibilityTreeRoot);\n this._rowElements.length = 0;\n };\n AccessibilityManager.prototype._onBoundaryFocus = function (e, position) {\n var boundaryElement = e.target;\n var beforeBoundaryElement = this._rowElements[position === 0 ? 1 : this._rowElements.length - 2];\n var posInSet = boundaryElement.getAttribute('aria-posinset');\n var lastRowPos = position === 0 ? '1' : \"\" + this._terminal.buffer.lines.length;\n if (posInSet === lastRowPos) {\n return;\n }\n if (e.relatedTarget !== beforeBoundaryElement) {\n return;\n }\n var topBoundaryElement;\n var bottomBoundaryElement;\n if (position === 0) {\n topBoundaryElement = boundaryElement;\n bottomBoundaryElement = this._rowElements.pop();\n this._rowContainer.removeChild(bottomBoundaryElement);\n }\n else {\n topBoundaryElement = this._rowElements.shift();\n bottomBoundaryElement = boundaryElement;\n this._rowContainer.removeChild(topBoundaryElement);\n }\n topBoundaryElement.removeEventListener('focus', this._topBoundaryFocusListener);\n bottomBoundaryElement.removeEventListener('focus', this._bottomBoundaryFocusListener);\n if (position === 0) {\n var newElement = this._createAccessibilityTreeNode();\n this._rowElements.unshift(newElement);\n this._rowContainer.insertAdjacentElement('afterbegin', newElement);\n }\n else {\n var newElement = this._createAccessibilityTreeNode();\n this._rowElements.push(newElement);\n this._rowContainer.appendChild(newElement);\n }\n this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n this._terminal.scrollLines(position === 0 ? -1 : 1);\n this._rowElements[position === 0 ? 1 : this._rowElements.length - 2].focus();\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n AccessibilityManager.prototype._onResize = function (rows) {\n this._rowElements[this._rowElements.length - 1].removeEventListener('focus', this._bottomBoundaryFocusListener);\n for (var i = this._rowContainer.children.length; i < this._terminal.rows; i++) {\n this._rowElements[i] = this._createAccessibilityTreeNode();\n this._rowContainer.appendChild(this._rowElements[i]);\n }\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop());\n }\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n this._refreshRowsDimensions();\n };\n AccessibilityManager.prototype._createAccessibilityTreeNode = function () {\n var element = document.createElement('div');\n element.setAttribute('role', 'listitem');\n element.tabIndex = -1;\n this._refreshRowDimensions(element);\n return element;\n };\n AccessibilityManager.prototype._onTab = function (spaceCount) {\n for (var i = 0; i < spaceCount; i++) {\n this._onChar(' ');\n }\n };\n AccessibilityManager.prototype._onChar = function (char) {\n var _this = this;\n if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) {\n if (this._charsToConsume.length > 0) {\n var shiftedChar = this._charsToConsume.shift();\n if (shiftedChar !== char) {\n this._announceCharacter(char);\n }\n }\n else {\n this._announceCharacter(char);\n }\n if (char === '\\n') {\n this._liveRegionLineCount++;\n if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) {\n this._liveRegion.textContent += Strings.tooMuchOutput;\n }\n }\n if (Browser_1.isMac) {\n if (this._liveRegion.textContent && this._liveRegion.textContent.length > 0 && !this._liveRegion.parentNode) {\n setTimeout(function () {\n _this._accessibilityTreeRoot.appendChild(_this._liveRegion);\n }, 0);\n }\n }\n }\n };\n AccessibilityManager.prototype._clearLiveRegion = function () {\n this._liveRegion.textContent = '';\n this._liveRegionLineCount = 0;\n if (Browser_1.isMac) {\n if (this._liveRegion.parentNode) {\n this._accessibilityTreeRoot.removeChild(this._liveRegion);\n }\n }\n };\n AccessibilityManager.prototype._onKey = function (keyChar) {\n this._clearLiveRegion();\n this._charsToConsume.push(keyChar);\n };\n AccessibilityManager.prototype._refreshRows = function (start, end) {\n this._renderRowsDebouncer.refresh(start, end);\n };\n AccessibilityManager.prototype._renderRows = function (start, end) {\n var buffer = this._terminal.buffer;\n var setSize = buffer.lines.length.toString();\n for (var i = start; i <= end; i++) {\n var lineData = buffer.translateBufferLineToString(buffer.ydisp + i, true);\n var posInSet = (buffer.ydisp + i + 1).toString();\n var element = this._rowElements[i];\n element.textContent = lineData.length === 0 ? Strings.blankLine : lineData;\n element.setAttribute('aria-posinset', posInSet);\n element.setAttribute('aria-setsize', setSize);\n }\n };\n AccessibilityManager.prototype._refreshRowsDimensions = function () {\n if (!this._terminal.renderer.dimensions.actualCellHeight) {\n return;\n }\n if (this._rowElements.length !== this._terminal.rows) {\n this._onResize(this._terminal.rows);\n }\n for (var i = 0; i < this._terminal.rows; i++) {\n this._refreshRowDimensions(this._rowElements[i]);\n }\n };\n AccessibilityManager.prototype._refreshRowDimensions = function (element) {\n element.style.height = this._terminal.renderer.dimensions.actualCellHeight + \"px\";\n };\n AccessibilityManager.prototype._announceCharacter = function (char) {\n if (char === ' ') {\n this._liveRegion.innerHTML += ' ';\n }\n else {\n this._liveRegion.textContent += char;\n }\n };\n return AccessibilityManager;\n}(Lifecycle_2.Disposable));\nexports.AccessibilityManager = AccessibilityManager;\n//# sourceMappingURL=AccessibilityManager.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseRenderLayer_1 = require(\"./BaseRenderLayer\");\nvar SelectionRenderLayer = (function (_super) {\n __extends(SelectionRenderLayer, _super);\n function SelectionRenderLayer(container, zIndex, colors) {\n var _this = _super.call(this, container, 'selection', zIndex, true, colors) || this;\n _this._clearState();\n return _this;\n }\n SelectionRenderLayer.prototype._clearState = function () {\n this._state = {\n start: null,\n end: null,\n columnSelectMode: null,\n ydisp: null\n };\n };\n SelectionRenderLayer.prototype.resize = function (terminal, dim) {\n _super.prototype.resize.call(this, terminal, dim);\n this._clearState();\n };\n SelectionRenderLayer.prototype.reset = function (terminal) {\n if (this._state.start && this._state.end) {\n this._clearState();\n this.clearAll();\n }\n };\n SelectionRenderLayer.prototype.onSelectionChanged = function (terminal, start, end, columnSelectMode) {\n if (!this._didStateChange(start, end, columnSelectMode, terminal.buffer.ydisp)) {\n return;\n }\n this.clearAll();\n if (!start || !end) {\n return;\n }\n var viewportStartRow = start[1] - terminal.buffer.ydisp;\n var viewportEndRow = end[1] - terminal.buffer.ydisp;\n var viewportCappedStartRow = Math.max(viewportStartRow, 0);\n var viewportCappedEndRow = Math.min(viewportEndRow, terminal.rows - 1);\n if (viewportCappedStartRow >= terminal.rows || viewportCappedEndRow < 0) {\n return;\n }\n this._ctx.fillStyle = this._colors.selection.css;\n if (columnSelectMode) {\n var startCol = start[0];\n var width = end[0] - startCol;\n var height = viewportCappedEndRow - viewportCappedStartRow + 1;\n this.fillCells(startCol, viewportCappedStartRow, width, height);\n }\n else {\n var startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n var startRowEndCol = viewportCappedStartRow === viewportCappedEndRow ? end[0] : terminal.cols;\n this.fillCells(startCol, viewportCappedStartRow, startRowEndCol - startCol, 1);\n var middleRowsCount = Math.max(viewportCappedEndRow - viewportCappedStartRow - 1, 0);\n this.fillCells(0, viewportCappedStartRow + 1, terminal.cols, middleRowsCount);\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n var endCol = viewportEndRow === viewportCappedEndRow ? end[0] : terminal.cols;\n this.fillCells(0, viewportCappedEndRow, endCol, 1);\n }\n }\n this._state.start = [start[0], start[1]];\n this._state.end = [end[0], end[1]];\n this._state.columnSelectMode = columnSelectMode;\n this._state.ydisp = terminal.buffer.ydisp;\n };\n SelectionRenderLayer.prototype._didStateChange = function (start, end, columnSelectMode, ydisp) {\n return !this._areCoordinatesEqual(start, this._state.start) ||\n !this._areCoordinatesEqual(end, this._state.end) ||\n columnSelectMode !== this._state.columnSelectMode ||\n ydisp !== this._state.ydisp;\n };\n SelectionRenderLayer.prototype._areCoordinatesEqual = function (coord1, coord2) {\n if (!coord1 || !coord2) {\n return false;\n }\n return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n };\n return SelectionRenderLayer;\n}(BaseRenderLayer_1.BaseRenderLayer));\nexports.SelectionRenderLayer = SelectionRenderLayer;\n//# sourceMappingURL=SelectionRenderLayer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nonWordCharacters = ' ~!@#$%^&*()_+`-=[]{}|\\;:\"\\',./<>?';\nvar SearchHelper = (function () {\n function SearchHelper(_terminal) {\n this._terminal = _terminal;\n }\n SearchHelper.prototype.findNext = function (term, searchOptions) {\n if (!term || term.length === 0) {\n return false;\n }\n var result;\n var startRow = this._terminal._core.buffer.ydisp;\n if (this._terminal._core.selectionManager.selectionEnd) {\n startRow = this._terminal._core.selectionManager.selectionEnd[1];\n }\n for (var y = startRow + 1; y < this._terminal._core.buffer.ybase + this._terminal.rows; y++) {\n result = this._findInLine(term, y, searchOptions);\n if (result) {\n break;\n }\n }\n if (!result) {\n for (var y = 0; y < startRow; y++) {\n result = this._findInLine(term, y, searchOptions);\n if (result) {\n break;\n }\n }\n }\n return this._selectResult(result);\n };\n SearchHelper.prototype.findPrevious = function (term, searchOptions) {\n if (!term || term.length === 0) {\n return false;\n }\n var result;\n var startRow = this._terminal._core.buffer.ydisp;\n if (this._terminal._core.selectionManager.selectionStart) {\n startRow = this._terminal._core.selectionManager.selectionStart[1];\n }\n for (var y = startRow - 1; y >= 0; y--) {\n result = this._findInLine(term, y, searchOptions);\n if (result) {\n break;\n }\n }\n if (!result) {\n for (var y = this._terminal._core.buffer.ybase + this._terminal.rows - 1; y > startRow; y--) {\n result = this._findInLine(term, y, searchOptions);\n if (result) {\n break;\n }\n }\n }\n return this._selectResult(result);\n };\n SearchHelper.prototype._isWholeWord = function (searchIndex, line, term) {\n return (((searchIndex === 0) || (nonWordCharacters.indexOf(line[searchIndex - 1]) !== -1)) &&\n (((searchIndex + term.length) === line.length) || (nonWordCharacters.indexOf(line[searchIndex + term.length]) !== -1)));\n };\n SearchHelper.prototype._findInLine = function (term, y, searchOptions) {\n if (searchOptions === void 0) { searchOptions = {}; }\n if (this._terminal._core.buffer.lines.get(y).isWrapped) {\n return;\n }\n var stringLine = this.translateBufferLineToStringWithWrap(y, true);\n var searchStringLine = searchOptions.caseSensitive ? stringLine : stringLine.toLowerCase();\n var searchTerm = searchOptions.caseSensitive ? term : term.toLowerCase();\n var searchIndex = -1;\n if (searchOptions.regex) {\n var searchRegex = RegExp(searchTerm, 'g');\n var foundTerm = searchRegex.exec(searchStringLine);\n if (foundTerm && foundTerm[0].length > 0) {\n searchIndex = searchRegex.lastIndex - foundTerm[0].length;\n term = foundTerm[0];\n }\n }\n else {\n searchIndex = searchStringLine.indexOf(searchTerm);\n }\n if (searchIndex >= 0) {\n if (searchIndex >= this._terminal.cols) {\n y += Math.floor(searchIndex / this._terminal.cols);\n searchIndex = searchIndex % this._terminal.cols;\n }\n if (searchOptions.wholeWord && !this._isWholeWord(searchIndex, searchStringLine, term)) {\n return;\n }\n var line = this._terminal._core.buffer.lines.get(y);\n for (var i = 0; i < searchIndex; i++) {\n var charData = line.get(i);\n var char = charData[1];\n if (char.length > 1) {\n searchIndex -= char.length - 1;\n }\n var charWidth = charData[2];\n if (charWidth === 0) {\n searchIndex++;\n }\n }\n return {\n term: term,\n col: searchIndex,\n row: y\n };\n }\n };\n SearchHelper.prototype.translateBufferLineToStringWithWrap = function (lineIndex, trimRight) {\n var lineString = '';\n var lineWrapsToNext;\n do {\n var nextLine = this._terminal._core.buffer.lines.get(lineIndex + 1);\n lineWrapsToNext = nextLine ? nextLine.isWrapped : false;\n lineString += this._terminal._core.buffer.translateBufferLineToString(lineIndex, !lineWrapsToNext && trimRight);\n lineIndex++;\n } while (lineWrapsToNext);\n return lineString;\n };\n SearchHelper.prototype._selectResult = function (result) {\n if (!result) {\n return false;\n }\n this._terminal._core.selectionManager.setSelection(result.col, result.row, result.term.length);\n this._terminal.scrollLines(result.row - this._terminal._core.buffer.ydisp);\n return true;\n };\n return SearchHelper;\n}());\nexports.SearchHelper = SearchHelper;\n//# sourceMappingURL=SearchHelper.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-subheader',[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PageSubtitle.vue?vue&type=template&id=95e81e1c&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VSubheader})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RenderDebouncer = (function () {\n function RenderDebouncer(_terminal, _callback) {\n this._terminal = _terminal;\n this._callback = _callback;\n this._animationFrame = null;\n }\n RenderDebouncer.prototype.dispose = function () {\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = null;\n }\n };\n RenderDebouncer.prototype.refresh = function (rowStart, rowEnd) {\n var _this = this;\n rowStart = rowStart !== null && rowStart !== undefined ? rowStart : 0;\n rowEnd = rowEnd !== null && rowEnd !== undefined ? rowEnd : this._terminal.rows - 1;\n var isRowStartSet = this._rowStart !== undefined && this._rowStart !== null;\n var isRowEndSet = this._rowEnd !== undefined && this._rowEnd !== null;\n this._rowStart = isRowStartSet ? Math.min(this._rowStart, rowStart) : rowStart;\n this._rowEnd = isRowEndSet ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n if (this._animationFrame) {\n return;\n }\n this._animationFrame = window.requestAnimationFrame(function () { return _this._innerRefresh(); });\n };\n RenderDebouncer.prototype._innerRefresh = function () {\n this._rowStart = Math.max(this._rowStart, 0);\n this._rowEnd = Math.min(this._rowEnd, this._terminal.rows - 1);\n this._callback(this._rowStart, this._rowEnd);\n this._rowStart = null;\n this._rowEnd = null;\n this._animationFrame = null;\n };\n return RenderDebouncer;\n}());\nexports.RenderDebouncer = RenderDebouncer;\n//# sourceMappingURL=RenderDebouncer.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter_1 = require(\"../../common/EventEmitter\");\nvar ColorManager_1 = require(\"../ColorManager\");\nvar RenderDebouncer_1 = require(\"../../ui/RenderDebouncer\");\nvar DomRendererRowFactory_1 = require(\"./DomRendererRowFactory\");\nvar TERMINAL_CLASS_PREFIX = 'xterm-dom-renderer-owner-';\nvar ROW_CONTAINER_CLASS = 'xterm-rows';\nvar FG_CLASS_PREFIX = 'xterm-fg-';\nvar BG_CLASS_PREFIX = 'xterm-bg-';\nvar FOCUS_CLASS = 'xterm-focus';\nvar SELECTION_CLASS = 'xterm-selection';\nvar nextTerminalId = 1;\nvar DomRenderer = (function (_super) {\n __extends(DomRenderer, _super);\n function DomRenderer(_terminal, theme) {\n var _this = _super.call(this) || this;\n _this._terminal = _terminal;\n _this._terminalClass = nextTerminalId++;\n _this._rowElements = [];\n var allowTransparency = _this._terminal.options.allowTransparency;\n _this.colorManager = new ColorManager_1.ColorManager(document, allowTransparency);\n _this.setTheme(theme);\n _this._rowContainer = document.createElement('div');\n _this._rowContainer.classList.add(ROW_CONTAINER_CLASS);\n _this._rowContainer.style.lineHeight = 'normal';\n _this._rowContainer.setAttribute('aria-hidden', 'true');\n _this._refreshRowElements(_this._terminal.cols, _this._terminal.rows);\n _this._selectionContainer = document.createElement('div');\n _this._selectionContainer.classList.add(SELECTION_CLASS);\n _this._selectionContainer.setAttribute('aria-hidden', 'true');\n _this.dimensions = {\n scaledCharWidth: null,\n scaledCharHeight: null,\n scaledCellWidth: null,\n scaledCellHeight: null,\n scaledCharLeft: null,\n scaledCharTop: null,\n scaledCanvasWidth: null,\n scaledCanvasHeight: null,\n canvasWidth: null,\n canvasHeight: null,\n actualCellWidth: null,\n actualCellHeight: null\n };\n _this._updateDimensions();\n _this._renderDebouncer = new RenderDebouncer_1.RenderDebouncer(_this._terminal, _this._renderRows.bind(_this));\n _this._rowFactory = new DomRendererRowFactory_1.DomRendererRowFactory(document);\n _this._terminal.element.classList.add(TERMINAL_CLASS_PREFIX + _this._terminalClass);\n _this._terminal.screenElement.appendChild(_this._rowContainer);\n _this._terminal.screenElement.appendChild(_this._selectionContainer);\n _this._terminal.linkifier.on(\"linkhover\", function (e) { return _this._onLinkHover(e); });\n _this._terminal.linkifier.on(\"linkleave\", function (e) { return _this._onLinkLeave(e); });\n return _this;\n }\n DomRenderer.prototype.dispose = function () {\n this._terminal.element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass);\n this._terminal.screenElement.removeChild(this._rowContainer);\n this._terminal.screenElement.removeChild(this._selectionContainer);\n this._terminal.screenElement.removeChild(this._themeStyleElement);\n this._terminal.screenElement.removeChild(this._dimensionsStyleElement);\n _super.prototype.dispose.call(this);\n };\n DomRenderer.prototype._updateDimensions = function () {\n var _this = this;\n this.dimensions.scaledCharWidth = this._terminal.charMeasure.width * window.devicePixelRatio;\n this.dimensions.scaledCharHeight = this._terminal.charMeasure.height * window.devicePixelRatio;\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth;\n this.dimensions.scaledCellHeight = this.dimensions.scaledCharHeight;\n this.dimensions.scaledCharLeft = 0;\n this.dimensions.scaledCharTop = 0;\n this.dimensions.scaledCanvasWidth = this.dimensions.scaledCellWidth * this._terminal.cols;\n this.dimensions.scaledCanvasHeight = this.dimensions.scaledCellHeight * this._terminal.rows;\n this.dimensions.canvasWidth = this._terminal.charMeasure.width * this._terminal.cols;\n this.dimensions.canvasHeight = this._terminal.charMeasure.height * this._terminal.rows;\n this.dimensions.actualCellWidth = this._terminal.charMeasure.width;\n this.dimensions.actualCellHeight = this._terminal.charMeasure.height;\n this._rowElements.forEach(function (element) {\n element.style.width = _this.dimensions.canvasWidth + \"px\";\n element.style.height = _this._terminal.charMeasure.height + \"px\";\n });\n if (!this._dimensionsStyleElement) {\n this._dimensionsStyleElement = document.createElement('style');\n this._terminal.screenElement.appendChild(this._dimensionsStyleElement);\n }\n var styles = this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \" span {\" +\n \" display: inline-block;\" +\n \" height: 100%;\" +\n \" vertical-align: top;\" +\n (\" width: \" + this._terminal.charMeasure.width + \"px\") +\n \"}\";\n this._dimensionsStyleElement.innerHTML = styles;\n this._selectionContainer.style.height = this._terminal._viewportElement.style.height;\n this._rowContainer.style.width = this.dimensions.canvasWidth + \"px\";\n this._rowContainer.style.height = this.dimensions.canvasHeight + \"px\";\n };\n DomRenderer.prototype.setTheme = function (theme) {\n var _this = this;\n if (theme) {\n this.colorManager.setTheme(theme);\n }\n if (!this._themeStyleElement) {\n this._themeStyleElement = document.createElement('style');\n this._terminal.screenElement.appendChild(this._themeStyleElement);\n }\n var styles = this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \" {\" +\n (\" color: \" + this.colorManager.colors.foreground.css + \";\") +\n (\" background-color: \" + this.colorManager.colors.background.css + \";\") +\n (\" font-family: \" + this._terminal.getOption('fontFamily') + \";\") +\n (\" font-size: \" + this._terminal.getOption('fontSize') + \"px;\") +\n \"}\";\n styles +=\n this._terminalSelector + \" span:not(.\" + DomRendererRowFactory_1.BOLD_CLASS + \") {\" +\n (\" font-weight: \" + this._terminal.options.fontWeight + \";\") +\n \"}\" +\n (this._terminalSelector + \" span.\" + DomRendererRowFactory_1.BOLD_CLASS + \" {\") +\n (\" font-weight: \" + this._terminal.options.fontWeightBold + \";\") +\n \"}\" +\n (this._terminalSelector + \" span.\" + DomRendererRowFactory_1.ITALIC_CLASS + \" {\") +\n \" font-style: italic;\" +\n \"}\";\n styles +=\n this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \":not(.\" + FOCUS_CLASS + \") .\" + DomRendererRowFactory_1.CURSOR_CLASS + \" {\" +\n (\" outline: 1px solid \" + this.colorManager.colors.cursor.css + \";\") +\n \" outline-offset: -1px;\" +\n \"}\" +\n (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_BLOCK_CLASS + \" {\") +\n (\" background-color: \" + this.colorManager.colors.cursor.css + \";\") +\n (\" color: \" + this.colorManager.colors.cursorAccent.css + \";\") +\n \"}\" +\n (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_BAR_CLASS + \" {\") +\n (\" box-shadow: 1px 0 0 \" + this.colorManager.colors.cursor.css + \" inset;\") +\n \"}\" +\n (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_UNDERLINE_CLASS + \" {\") +\n (\" box-shadow: 0 -1px 0 \" + this.colorManager.colors.cursor.css + \" inset;\") +\n \"}\";\n styles +=\n this._terminalSelector + \" .\" + SELECTION_CLASS + \" {\" +\n \" position: absolute;\" +\n \" top: 0;\" +\n \" left: 0;\" +\n \" z-index: 1;\" +\n \" pointer-events: none;\" +\n \"}\" +\n (this._terminalSelector + \" .\" + SELECTION_CLASS + \" div {\") +\n \" position: absolute;\" +\n (\" background-color: \" + this.colorManager.colors.selection.css + \";\") +\n \"}\";\n this.colorManager.colors.ansi.forEach(function (c, i) {\n styles +=\n _this._terminalSelector + \" .\" + FG_CLASS_PREFIX + i + \" { color: \" + c.css + \"; }\" +\n (_this._terminalSelector + \" .\" + BG_CLASS_PREFIX + i + \" { background-color: \" + c.css + \"; }\");\n });\n this._themeStyleElement.innerHTML = styles;\n return this.colorManager.colors;\n };\n DomRenderer.prototype.onWindowResize = function (devicePixelRatio) {\n this._updateDimensions();\n };\n DomRenderer.prototype._refreshRowElements = function (cols, rows) {\n for (var i = this._rowElements.length; i <= rows; i++) {\n var row = document.createElement('div');\n this._rowContainer.appendChild(row);\n this._rowElements.push(row);\n }\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop());\n }\n };\n DomRenderer.prototype.onResize = function (cols, rows) {\n this._refreshRowElements(cols, rows);\n this._updateDimensions();\n };\n DomRenderer.prototype.onCharSizeChanged = function () {\n this._updateDimensions();\n };\n DomRenderer.prototype.onBlur = function () {\n this._rowContainer.classList.remove(FOCUS_CLASS);\n };\n DomRenderer.prototype.onFocus = function () {\n this._rowContainer.classList.add(FOCUS_CLASS);\n };\n DomRenderer.prototype.onSelectionChanged = function (start, end, columnSelectMode) {\n while (this._selectionContainer.children.length) {\n this._selectionContainer.removeChild(this._selectionContainer.children[0]);\n }\n if (!start || !end) {\n return;\n }\n var viewportStartRow = start[1] - this._terminal.buffer.ydisp;\n var viewportEndRow = end[1] - this._terminal.buffer.ydisp;\n var viewportCappedStartRow = Math.max(viewportStartRow, 0);\n var viewportCappedEndRow = Math.min(viewportEndRow, this._terminal.rows - 1);\n if (viewportCappedStartRow >= this._terminal.rows || viewportCappedEndRow < 0) {\n return;\n }\n var documentFragment = document.createDocumentFragment();\n if (columnSelectMode) {\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, start[0], end[0], viewportCappedEndRow - viewportCappedStartRow + 1));\n }\n else {\n var startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n var endCol = viewportCappedStartRow === viewportCappedEndRow ? end[0] : this._terminal.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, startCol, endCol));\n var middleRowsCount = viewportCappedEndRow - viewportCappedStartRow - 1;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow + 1, 0, this._terminal.cols, middleRowsCount));\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n var endCol_1 = viewportEndRow === viewportCappedEndRow ? end[0] : this._terminal.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedEndRow, 0, endCol_1));\n }\n }\n this._selectionContainer.appendChild(documentFragment);\n };\n DomRenderer.prototype._createSelectionElement = function (row, colStart, colEnd, rowCount) {\n if (rowCount === void 0) { rowCount = 1; }\n var element = document.createElement('div');\n element.style.height = rowCount * this._terminal.charMeasure.height + \"px\";\n element.style.top = row * this._terminal.charMeasure.height + \"px\";\n element.style.left = colStart * this._terminal.charMeasure.width + \"px\";\n element.style.width = this._terminal.charMeasure.width * (colEnd - colStart) + \"px\";\n return element;\n };\n DomRenderer.prototype.onCursorMove = function () {\n };\n DomRenderer.prototype.onOptionsChanged = function () {\n this._updateDimensions();\n this.setTheme(undefined);\n this._terminal.refresh(0, this._terminal.rows - 1);\n };\n DomRenderer.prototype.clear = function () {\n this._rowElements.forEach(function (e) { return e.innerHTML = ''; });\n };\n DomRenderer.prototype.refreshRows = function (start, end) {\n this._renderDebouncer.refresh(start, end);\n };\n DomRenderer.prototype._renderRows = function (start, end) {\n var terminal = this._terminal;\n var cursorAbsoluteY = terminal.buffer.ybase + terminal.buffer.y;\n var cursorX = this._terminal.buffer.x;\n for (var y = start; y <= end; y++) {\n var rowElement = this._rowElements[y];\n rowElement.innerHTML = '';\n var row = y + terminal.buffer.ydisp;\n var lineData = terminal.buffer.lines.get(row);\n var cursorStyle = terminal.options.cursorStyle;\n rowElement.appendChild(this._rowFactory.createRow(lineData, row === cursorAbsoluteY, cursorStyle, cursorX, terminal.charMeasure.width, terminal.cols));\n }\n this._terminal.emit('refresh', { start: start, end: end });\n };\n Object.defineProperty(DomRenderer.prototype, \"_terminalSelector\", {\n get: function () {\n return \".\" + TERMINAL_CLASS_PREFIX + this._terminalClass;\n },\n enumerable: true,\n configurable: true\n });\n DomRenderer.prototype.registerCharacterJoiner = function (handler) { return -1; };\n DomRenderer.prototype.deregisterCharacterJoiner = function (joinerId) { return false; };\n DomRenderer.prototype._onLinkHover = function (e) {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, true);\n };\n DomRenderer.prototype._onLinkLeave = function (e) {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, false);\n };\n DomRenderer.prototype._setCellUnderline = function (x, x2, y, y2, cols, enabled) {\n while (x !== x2 || y !== y2) {\n var span = this._rowElements[y].children[x];\n span.style.textDecoration = enabled ? 'underline' : 'none';\n x = (x + 1) % cols;\n if (x === 0) {\n y++;\n }\n }\n };\n return DomRenderer;\n}(EventEmitter_1.EventEmitter));\nexports.DomRenderer = DomRenderer;\n//# sourceMappingURL=DomRenderer.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"../common/Lifecycle\");\nvar Lifecycle_2 = require(\"./Lifecycle\");\nvar HOVER_DURATION = 500;\nvar MouseZoneManager = (function (_super) {\n __extends(MouseZoneManager, _super);\n function MouseZoneManager(_terminal) {\n var _this = _super.call(this) || this;\n _this._terminal = _terminal;\n _this._zones = [];\n _this._areZonesActive = false;\n _this._tooltipTimeout = null;\n _this._currentZone = null;\n _this._lastHoverCoords = [null, null];\n _this.register(Lifecycle_2.addDisposableDomListener(_this._terminal.element, 'mousedown', function (e) { return _this._onMouseDown(e); }));\n _this._mouseMoveListener = function (e) { return _this._onMouseMove(e); };\n _this._clickListener = function (e) { return _this._onClick(e); };\n return _this;\n }\n MouseZoneManager.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this._deactivate();\n };\n MouseZoneManager.prototype.add = function (zone) {\n this._zones.push(zone);\n if (this._zones.length === 1) {\n this._activate();\n }\n };\n MouseZoneManager.prototype.clearAll = function (start, end) {\n if (this._zones.length === 0) {\n return;\n }\n if (!end) {\n start = 0;\n end = this._terminal.rows - 1;\n }\n for (var i = 0; i < this._zones.length; i++) {\n var zone = this._zones[i];\n if ((zone.y1 > start && zone.y1 <= end + 1) ||\n (zone.y2 > start && zone.y2 <= end + 1) ||\n (zone.y1 < start && zone.y2 > end + 1)) {\n if (this._currentZone && this._currentZone === zone) {\n this._currentZone.leaveCallback();\n this._currentZone = null;\n }\n this._zones.splice(i--, 1);\n }\n }\n if (this._zones.length === 0) {\n this._deactivate();\n }\n };\n MouseZoneManager.prototype._activate = function () {\n if (!this._areZonesActive) {\n this._areZonesActive = true;\n this._terminal.element.addEventListener('mousemove', this._mouseMoveListener);\n this._terminal.element.addEventListener('click', this._clickListener);\n }\n };\n MouseZoneManager.prototype._deactivate = function () {\n if (this._areZonesActive) {\n this._areZonesActive = false;\n this._terminal.element.removeEventListener('mousemove', this._mouseMoveListener);\n this._terminal.element.removeEventListener('click', this._clickListener);\n }\n };\n MouseZoneManager.prototype._onMouseMove = function (e) {\n if (this._lastHoverCoords[0] !== e.pageX || this._lastHoverCoords[1] !== e.pageY) {\n this._onHover(e);\n this._lastHoverCoords = [e.pageX, e.pageY];\n }\n };\n MouseZoneManager.prototype._onHover = function (e) {\n var _this = this;\n var zone = this._findZoneEventAt(e);\n if (zone === this._currentZone) {\n return;\n }\n if (this._currentZone) {\n this._currentZone.leaveCallback();\n this._currentZone = null;\n if (this._tooltipTimeout) {\n clearTimeout(this._tooltipTimeout);\n }\n }\n if (!zone) {\n return;\n }\n this._currentZone = zone;\n if (zone.hoverCallback) {\n zone.hoverCallback(e);\n }\n this._tooltipTimeout = setTimeout(function () { return _this._onTooltip(e); }, HOVER_DURATION);\n };\n MouseZoneManager.prototype._onTooltip = function (e) {\n this._tooltipTimeout = null;\n var zone = this._findZoneEventAt(e);\n if (zone && zone.tooltipCallback) {\n zone.tooltipCallback(e);\n }\n };\n MouseZoneManager.prototype._onMouseDown = function (e) {\n if (!this._areZonesActive) {\n return;\n }\n var zone = this._findZoneEventAt(e);\n if (zone) {\n if (zone.willLinkActivate(e)) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n };\n MouseZoneManager.prototype._onClick = function (e) {\n var zone = this._findZoneEventAt(e);\n if (zone) {\n zone.clickCallback(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n };\n MouseZoneManager.prototype._findZoneEventAt = function (e) {\n var coords = this._terminal.mouseHelper.getCoords(e, this._terminal.screenElement, this._terminal.charMeasure, this._terminal.options.lineHeight, this._terminal.cols, this._terminal.rows);\n if (!coords) {\n return null;\n }\n var x = coords[0];\n var y = coords[1];\n for (var i = 0; i < this._zones.length; i++) {\n var zone = this._zones[i];\n if (zone.y1 === zone.y2) {\n if (y === zone.y1 && x >= zone.x1 && x < zone.x2) {\n return zone;\n }\n }\n else {\n if ((y === zone.y1 && x >= zone.x1) ||\n (y === zone.y2 && x < zone.x2) ||\n (y > zone.y1 && y < zone.y2)) {\n return zone;\n }\n }\n }\n return null;\n };\n return MouseZoneManager;\n}(Lifecycle_1.Disposable));\nexports.MouseZoneManager = MouseZoneManager;\nvar MouseZone = (function () {\n function MouseZone(x1, y1, x2, y2, clickCallback, hoverCallback, tooltipCallback, leaveCallback, willLinkActivate) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.clickCallback = clickCallback;\n this.hoverCallback = hoverCallback;\n this.tooltipCallback = tooltipCallback;\n this.leaveCallback = leaveCallback;\n this.willLinkActivate = willLinkActivate;\n }\n return MouseZone;\n}());\nexports.MouseZone = MouseZone;\n//# sourceMappingURL=MouseZoneManager.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CircularList_1 = require(\"./common/CircularList\");\nvar EventEmitter_1 = require(\"./common/EventEmitter\");\nvar BufferLine_1 = require(\"./BufferLine\");\nexports.DEFAULT_ATTR = (0 << 18) | (257 << 9) | (256 << 0);\nexports.CHAR_DATA_ATTR_INDEX = 0;\nexports.CHAR_DATA_CHAR_INDEX = 1;\nexports.CHAR_DATA_WIDTH_INDEX = 2;\nexports.CHAR_DATA_CODE_INDEX = 3;\nexports.MAX_BUFFER_SIZE = 4294967295;\nexports.NULL_CELL_CHAR = ' ';\nexports.NULL_CELL_WIDTH = 1;\nexports.NULL_CELL_CODE = 32;\nvar Buffer = (function () {\n function Buffer(_terminal, _hasScrollback) {\n this._terminal = _terminal;\n this._hasScrollback = _hasScrollback;\n this.markers = [];\n this.clear();\n }\n Object.defineProperty(Buffer.prototype, \"hasScrollback\", {\n get: function () {\n return this._hasScrollback && this.lines.maxLength > this._terminal.rows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Buffer.prototype, \"isCursorInViewport\", {\n get: function () {\n var absoluteY = this.ybase + this.y;\n var relativeY = absoluteY - this.ydisp;\n return (relativeY >= 0 && relativeY < this._terminal.rows);\n },\n enumerable: true,\n configurable: true\n });\n Buffer.prototype._getCorrectBufferLength = function (rows) {\n if (!this._hasScrollback) {\n return rows;\n }\n var correctBufferLength = rows + this._terminal.options.scrollback;\n return correctBufferLength > exports.MAX_BUFFER_SIZE ? exports.MAX_BUFFER_SIZE : correctBufferLength;\n };\n Buffer.prototype.fillViewportRows = function () {\n if (this.lines.length === 0) {\n var i = this._terminal.rows;\n while (i--) {\n this.lines.push(BufferLine_1.BufferLine.blankLine(this._terminal.cols, exports.DEFAULT_ATTR));\n }\n }\n };\n Buffer.prototype.clear = function () {\n this.ydisp = 0;\n this.ybase = 0;\n this.y = 0;\n this.x = 0;\n this.lines = new CircularList_1.CircularList(this._getCorrectBufferLength(this._terminal.rows));\n this.scrollTop = 0;\n this.scrollBottom = this._terminal.rows - 1;\n this.setupTabStops();\n };\n Buffer.prototype.resize = function (newCols, newRows) {\n var newMaxLength = this._getCorrectBufferLength(newRows);\n if (newMaxLength > this.lines.maxLength) {\n this.lines.maxLength = newMaxLength;\n }\n if (this.lines.length > 0) {\n if (this._terminal.cols < newCols) {\n var ch = [exports.DEFAULT_ATTR, exports.NULL_CELL_CHAR, exports.NULL_CELL_WIDTH, exports.NULL_CELL_CODE];\n for (var i = 0; i < this.lines.length; i++) {\n while (this.lines.get(i).length < newCols) {\n this.lines.get(i).push(ch);\n }\n }\n }\n var addToY = 0;\n if (this._terminal.rows < newRows) {\n for (var y = this._terminal.rows; y < newRows; y++) {\n if (this.lines.length < newRows + this.ybase) {\n if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) {\n this.ybase--;\n addToY++;\n if (this.ydisp > 0) {\n this.ydisp--;\n }\n }\n else {\n this.lines.push(BufferLine_1.BufferLine.blankLine(newCols, exports.DEFAULT_ATTR));\n }\n }\n }\n }\n else {\n for (var y = this._terminal.rows; y > newRows; y--) {\n if (this.lines.length > newRows + this.ybase) {\n if (this.lines.length > this.ybase + this.y + 1) {\n this.lines.pop();\n }\n else {\n this.ybase++;\n this.ydisp++;\n }\n }\n }\n }\n if (newMaxLength < this.lines.maxLength) {\n var amountToTrim = this.lines.length - newMaxLength;\n if (amountToTrim > 0) {\n this.lines.trimStart(amountToTrim);\n this.ybase = Math.max(this.ybase - amountToTrim, 0);\n this.ydisp = Math.max(this.ydisp - amountToTrim, 0);\n }\n this.lines.maxLength = newMaxLength;\n }\n this.x = Math.min(this.x, newCols - 1);\n this.y = Math.min(this.y, newRows - 1);\n if (addToY) {\n this.y += addToY;\n }\n this.savedY = Math.min(this.savedY, newRows - 1);\n this.savedX = Math.min(this.savedX, newCols - 1);\n this.scrollTop = 0;\n }\n this.scrollBottom = newRows - 1;\n };\n Buffer.prototype.stringIndexToBufferIndex = function (lineIndex, stringIndex) {\n while (stringIndex) {\n var line = this.lines.get(lineIndex);\n if (!line) {\n [-1, -1];\n }\n for (var i = 0; i < line.length; ++i) {\n stringIndex -= line.get(i)[exports.CHAR_DATA_CHAR_INDEX].length;\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n }\n return [lineIndex, 0];\n };\n Buffer.prototype.translateBufferLineToString = function (lineIndex, trimRight, startCol, endCol) {\n if (startCol === void 0) { startCol = 0; }\n if (endCol === void 0) { endCol = null; }\n var lineString = '';\n var line = this.lines.get(lineIndex);\n if (!line) {\n return '';\n }\n var startIndex = startCol;\n if (endCol === null) {\n endCol = line.length;\n }\n var endIndex = endCol;\n for (var i = 0; i < line.length; i++) {\n var char = line.get(i);\n lineString += char[exports.CHAR_DATA_CHAR_INDEX];\n if (char[exports.CHAR_DATA_WIDTH_INDEX] === 0) {\n if (startCol >= i) {\n startIndex--;\n }\n if (endCol > i) {\n endIndex--;\n }\n }\n else {\n if (char[exports.CHAR_DATA_CHAR_INDEX].length > 1) {\n if (startCol > i) {\n startIndex += char[exports.CHAR_DATA_CHAR_INDEX].length - 1;\n }\n if (endCol > i) {\n endIndex += char[exports.CHAR_DATA_CHAR_INDEX].length - 1;\n }\n }\n }\n }\n if (trimRight) {\n var rightWhitespaceIndex = lineString.search(/\\s+$/);\n if (rightWhitespaceIndex !== -1) {\n endIndex = Math.min(endIndex, rightWhitespaceIndex);\n }\n if (endIndex <= startIndex) {\n return '';\n }\n }\n return lineString.substring(startIndex, endIndex);\n };\n Buffer.prototype.getWrappedRangeForLine = function (y) {\n var first = y;\n var last = y;\n while (first > 0 && this.lines.get(first).isWrapped) {\n first--;\n }\n while (last + 1 < this.lines.length && this.lines.get(last + 1).isWrapped) {\n last++;\n }\n return { first: first, last: last };\n };\n Buffer.prototype.setupTabStops = function (i) {\n if (i !== null && i !== undefined) {\n if (!this.tabs[i]) {\n i = this.prevStop(i);\n }\n }\n else {\n this.tabs = {};\n i = 0;\n }\n for (; i < this._terminal.cols; i += this._terminal.options.tabStopWidth) {\n this.tabs[i] = true;\n }\n };\n Buffer.prototype.prevStop = function (x) {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[--x] && x > 0)\n ;\n return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x;\n };\n Buffer.prototype.nextStop = function (x) {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[++x] && x < this._terminal.cols)\n ;\n return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x;\n };\n Buffer.prototype.addMarker = function (y) {\n var _this = this;\n var marker = new Marker(y);\n this.markers.push(marker);\n marker.register(this.lines.addDisposableListener('trim', function (amount) {\n marker.line -= amount;\n if (marker.line < 0) {\n marker.dispose();\n }\n }));\n marker.register(marker.addDisposableListener('dispose', function () { return _this._removeMarker(marker); }));\n return marker;\n };\n Buffer.prototype._removeMarker = function (marker) {\n this.markers.splice(this.markers.indexOf(marker), 1);\n };\n Buffer.prototype.iterator = function (trimRight, startIndex, endIndex, startOverscan, endOverscan) {\n return new BufferStringIterator(this, trimRight, startIndex, endIndex, startOverscan, endOverscan);\n };\n return Buffer;\n}());\nexports.Buffer = Buffer;\nvar Marker = (function (_super) {\n __extends(Marker, _super);\n function Marker(line) {\n var _this = _super.call(this) || this;\n _this.line = line;\n _this._id = Marker._nextId++;\n _this.isDisposed = false;\n return _this;\n }\n Object.defineProperty(Marker.prototype, \"id\", {\n get: function () { return this._id; },\n enumerable: true,\n configurable: true\n });\n Marker.prototype.dispose = function () {\n if (this.isDisposed) {\n return;\n }\n this.isDisposed = true;\n this.emit('dispose');\n _super.prototype.dispose.call(this);\n };\n Marker._nextId = 1;\n return Marker;\n}(EventEmitter_1.EventEmitter));\nexports.Marker = Marker;\nvar BufferStringIterator = (function () {\n function BufferStringIterator(_buffer, _trimRight, _startIndex, _endIndex, _startOverscan, _endOverscan) {\n if (_startIndex === void 0) { _startIndex = 0; }\n if (_endIndex === void 0) { _endIndex = _buffer.lines.length; }\n if (_startOverscan === void 0) { _startOverscan = 0; }\n if (_endOverscan === void 0) { _endOverscan = 0; }\n this._buffer = _buffer;\n this._trimRight = _trimRight;\n this._startIndex = _startIndex;\n this._endIndex = _endIndex;\n this._startOverscan = _startOverscan;\n this._endOverscan = _endOverscan;\n if (this._startIndex < 0) {\n this._startIndex = 0;\n }\n if (this._endIndex > this._buffer.lines.length) {\n this._endIndex = this._buffer.lines.length;\n }\n this._current = this._startIndex;\n }\n BufferStringIterator.prototype.hasNext = function () {\n return this._current < this._endIndex;\n };\n BufferStringIterator.prototype.next = function () {\n var range = this._buffer.getWrappedRangeForLine(this._current);\n if (range.first < this._startIndex - this._startOverscan) {\n range.first = this._startIndex - this._startOverscan;\n }\n if (range.last > this._endIndex + this._endOverscan) {\n range.last = this._endIndex + this._endOverscan;\n }\n range.first = Math.max(range.first, 0);\n range.last = Math.min(range.last, this._buffer.lines.length);\n var result = '';\n for (var i = range.first; i <= range.last; ++i) {\n result += this._buffer.translateBufferLineToString(i, (this._trimRight) ? i === range.last : false);\n }\n this._current = range.last + 1;\n return { range: range, content: result };\n };\n return BufferStringIterator;\n}());\nexports.BufferStringIterator = BufferStringIterator;\n//# sourceMappingURL=Buffer.js.map","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApplicationLogsDialog.vue?vue&type=style&index=0&lang=css&\"","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction addDisposableDomListener(node, type, handler, useCapture) {\n node.addEventListener(type, handler, useCapture);\n return {\n dispose: function () {\n if (!handler) {\n return;\n }\n node.removeEventListener(type, handler, useCapture);\n node = null;\n handler = null;\n }\n };\n}\nexports.addDisposableDomListener = addDisposableDomListener;\n//# sourceMappingURL=Lifecycle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TextRenderLayer_1 = require(\"./TextRenderLayer\");\nvar SelectionRenderLayer_1 = require(\"./SelectionRenderLayer\");\nvar CursorRenderLayer_1 = require(\"./CursorRenderLayer\");\nvar ColorManager_1 = require(\"./ColorManager\");\nvar LinkRenderLayer_1 = require(\"./LinkRenderLayer\");\nvar EventEmitter_1 = require(\"../common/EventEmitter\");\nvar RenderDebouncer_1 = require(\"../ui/RenderDebouncer\");\nvar ScreenDprMonitor_1 = require(\"../ui/ScreenDprMonitor\");\nvar CharacterJoinerRegistry_1 = require(\"../renderer/CharacterJoinerRegistry\");\nvar Renderer = (function (_super) {\n __extends(Renderer, _super);\n function Renderer(_terminal, theme) {\n var _this = _super.call(this) || this;\n _this._terminal = _terminal;\n _this._isPaused = false;\n _this._needsFullRefresh = false;\n var allowTransparency = _this._terminal.options.allowTransparency;\n _this.colorManager = new ColorManager_1.ColorManager(document, allowTransparency);\n _this._characterJoinerRegistry = new CharacterJoinerRegistry_1.CharacterJoinerRegistry(_terminal);\n if (theme) {\n _this.colorManager.setTheme(theme);\n }\n _this._renderLayers = [\n new TextRenderLayer_1.TextRenderLayer(_this._terminal.screenElement, 0, _this.colorManager.colors, _this._characterJoinerRegistry, allowTransparency),\n new SelectionRenderLayer_1.SelectionRenderLayer(_this._terminal.screenElement, 1, _this.colorManager.colors),\n new LinkRenderLayer_1.LinkRenderLayer(_this._terminal.screenElement, 2, _this.colorManager.colors, _this._terminal),\n new CursorRenderLayer_1.CursorRenderLayer(_this._terminal.screenElement, 3, _this.colorManager.colors)\n ];\n _this.dimensions = {\n scaledCharWidth: null,\n scaledCharHeight: null,\n scaledCellWidth: null,\n scaledCellHeight: null,\n scaledCharLeft: null,\n scaledCharTop: null,\n scaledCanvasWidth: null,\n scaledCanvasHeight: null,\n canvasWidth: null,\n canvasHeight: null,\n actualCellWidth: null,\n actualCellHeight: null\n };\n _this._devicePixelRatio = window.devicePixelRatio;\n _this._updateDimensions();\n _this.onOptionsChanged();\n _this._renderDebouncer = new RenderDebouncer_1.RenderDebouncer(_this._terminal, _this._renderRows.bind(_this));\n _this._screenDprMonitor = new ScreenDprMonitor_1.ScreenDprMonitor();\n _this._screenDprMonitor.setListener(function () { return _this.onWindowResize(window.devicePixelRatio); });\n _this.register(_this._screenDprMonitor);\n if ('IntersectionObserver' in window) {\n var observer_1 = new IntersectionObserver(function (e) { return _this.onIntersectionChange(e[0]); }, { threshold: 0 });\n observer_1.observe(_this._terminal.element);\n _this.register({ dispose: function () { return observer_1.disconnect(); } });\n }\n return _this;\n }\n Renderer.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this._renderLayers.forEach(function (l) { return l.dispose(); });\n };\n Renderer.prototype.onIntersectionChange = function (entry) {\n this._isPaused = entry.intersectionRatio === 0;\n if (!this._isPaused && this._needsFullRefresh) {\n this._terminal.refresh(0, this._terminal.rows - 1);\n }\n };\n Renderer.prototype.onWindowResize = function (devicePixelRatio) {\n if (this._devicePixelRatio !== devicePixelRatio) {\n this._devicePixelRatio = devicePixelRatio;\n this.onResize(this._terminal.cols, this._terminal.rows);\n }\n };\n Renderer.prototype.setTheme = function (theme) {\n var _this = this;\n this.colorManager.setTheme(theme);\n this._renderLayers.forEach(function (l) {\n l.onThemeChanged(_this._terminal, _this.colorManager.colors);\n l.reset(_this._terminal);\n });\n if (this._isPaused) {\n this._needsFullRefresh = true;\n }\n else {\n this._terminal.refresh(0, this._terminal.rows - 1);\n }\n return this.colorManager.colors;\n };\n Renderer.prototype.onResize = function (cols, rows) {\n var _this = this;\n this._updateDimensions();\n this._renderLayers.forEach(function (l) { return l.resize(_this._terminal, _this.dimensions); });\n if (this._isPaused) {\n this._needsFullRefresh = true;\n }\n else {\n this._terminal.refresh(0, this._terminal.rows - 1);\n }\n this._terminal.screenElement.style.width = this.dimensions.canvasWidth + \"px\";\n this._terminal.screenElement.style.height = this.dimensions.canvasHeight + \"px\";\n this.emit('resize', {\n width: this.dimensions.canvasWidth,\n height: this.dimensions.canvasHeight\n });\n };\n Renderer.prototype.onCharSizeChanged = function () {\n this.onResize(this._terminal.cols, this._terminal.rows);\n };\n Renderer.prototype.onBlur = function () {\n var _this = this;\n this._runOperation(function (l) { return l.onBlur(_this._terminal); });\n };\n Renderer.prototype.onFocus = function () {\n var _this = this;\n this._runOperation(function (l) { return l.onFocus(_this._terminal); });\n };\n Renderer.prototype.onSelectionChanged = function (start, end, columnSelectMode) {\n var _this = this;\n if (columnSelectMode === void 0) { columnSelectMode = false; }\n this._runOperation(function (l) { return l.onSelectionChanged(_this._terminal, start, end, columnSelectMode); });\n };\n Renderer.prototype.onCursorMove = function () {\n var _this = this;\n this._runOperation(function (l) { return l.onCursorMove(_this._terminal); });\n };\n Renderer.prototype.onOptionsChanged = function () {\n var _this = this;\n this.colorManager.allowTransparency = this._terminal.options.allowTransparency;\n this._runOperation(function (l) { return l.onOptionsChanged(_this._terminal); });\n };\n Renderer.prototype.clear = function () {\n var _this = this;\n this._runOperation(function (l) { return l.reset(_this._terminal); });\n };\n Renderer.prototype._runOperation = function (operation) {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n }\n else {\n this._renderLayers.forEach(function (l) { return operation(l); });\n }\n };\n Renderer.prototype.refreshRows = function (start, end) {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n return;\n }\n this._renderDebouncer.refresh(start, end);\n };\n Renderer.prototype._renderRows = function (start, end) {\n var _this = this;\n this._renderLayers.forEach(function (l) { return l.onGridChanged(_this._terminal, start, end); });\n this._terminal.emit('refresh', { start: start, end: end });\n };\n Renderer.prototype._updateDimensions = function () {\n if (!this._terminal.charMeasure.width || !this._terminal.charMeasure.height) {\n return;\n }\n this.dimensions.scaledCharWidth = Math.floor(this._terminal.charMeasure.width * window.devicePixelRatio);\n this.dimensions.scaledCharHeight = Math.ceil(this._terminal.charMeasure.height * window.devicePixelRatio);\n this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._terminal.options.lineHeight);\n this.dimensions.scaledCharTop = this._terminal.options.lineHeight === 1 ? 0 : Math.round((this.dimensions.scaledCellHeight - this.dimensions.scaledCharHeight) / 2);\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._terminal.options.letterSpacing);\n this.dimensions.scaledCharLeft = Math.floor(this._terminal.options.letterSpacing / 2);\n this.dimensions.scaledCanvasHeight = this._terminal.rows * this.dimensions.scaledCellHeight;\n this.dimensions.scaledCanvasWidth = this._terminal.cols * this.dimensions.scaledCellWidth;\n this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._terminal.rows;\n this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._terminal.cols;\n };\n Renderer.prototype.registerCharacterJoiner = function (handler) {\n return this._characterJoinerRegistry.registerCharacterJoiner(handler);\n };\n Renderer.prototype.deregisterCharacterJoiner = function (joinerId) {\n return this._characterJoinerRegistry.deregisterCharacterJoiner(joinerId);\n };\n return Renderer;\n}(EventEmitter_1.EventEmitter));\nexports.Renderer = Renderer;\n//# sourceMappingURL=Renderer.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"id\":\"dialog\",\"max-width\":\"850px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"primary--text mr-1\",attrs:{\"text\":\"\",\"outlined\":\"\",\"x-small\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Proxy \"+_vm._s(_vm.hostPort)+\" \")])]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"ml-3\"},[_vm._v(\"Proxy local port to device\")]),_c('v-card-text',{staticClass:\"mt-2\"},[_c('span',{staticClass:\"ml-3\"},[_vm._v(\"To connect locally to the port, run:\")]),_c('v-container',{staticClass:\"mt-2 mb-2\",attrs:{\"fluid\":\"\"}},[_c('markup',{attrs:{\"language\":\"bash\",\"code\":_vm.command(),\"inline\":false}})],1),_c('span',{staticClass:\"ml-3\"},[_vm._v(\"To listen on a different port (16000) locally:\")]),_c('v-container',{staticClass:\"mt-2 mb-2\",attrs:{\"fluid\":\"\"}},[_c('markup',{attrs:{\"language\":\"bash\",\"code\":_vm.command(16000),\"inline\":false}})],1),_c('span',{staticClass:\"ml-3\"},[_vm._v(\"Once connected, use 'localhost:\"+_vm._s(_vm.hostPort)+\"' to connect, for example:\")]),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" HTTP - \"),_c('a',{attrs:{\"href\":(\"http://localhost:\" + _vm.hostPort),\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"http://localhost:\"+_vm._s(_vm.hostPort))])])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" MySQL - jdbc:mariadb://localhost:\"+_vm._s(_vm.hostPort)+\" \")])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" MySQL - jdbc:mariadb://localhost:\"+_vm._s(_vm.hostPort)+\" \")])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Postgres - jdbc:postgresql://localhost:\"+_vm._s(_vm.hostPort)+\"/postgres \")])],1)],1)],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"secondary--text\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"Close\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyPort.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyPort.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProxyPort.vue?vue&type=template&id=478268d2&\"\nimport script from \"./ProxyPort.vue?vue&type=script&lang=js&\"\nexport * from \"./ProxyPort.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProxyPort.vue?vue&type=style&index=0&lang=stylus&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VContainer,VDialog,VList,VListItem,VListItemContent,VListItemTitle,VRow,VSpacer})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EscapeSequences_1 = require(\"../../common/data/EscapeSequences\");\nvar KEYCODE_KEY_MAPPINGS = {\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: ['\\'', '\"']\n};\nfunction evaluateKeyboardEvent(ev, applicationCursorMode, isMac, macOptionIsMeta) {\n var result = {\n type: 0,\n cancel: false,\n key: undefined\n };\n var modifiers = (ev.shiftKey ? 1 : 0) | (ev.altKey ? 2 : 0) | (ev.ctrlKey ? 4 : 0) | (ev.metaKey ? 8 : 0);\n switch (ev.keyCode) {\n case 0:\n if (ev.key === 'UIKeyInputUpArrow') {\n if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OA';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[A';\n }\n }\n else if (ev.key === 'UIKeyInputLeftArrow') {\n if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OD';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[D';\n }\n }\n else if (ev.key === 'UIKeyInputRightArrow') {\n if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OC';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[C';\n }\n }\n else if (ev.key === 'UIKeyInputDownArrow') {\n if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OB';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[B';\n }\n }\n break;\n case 8:\n if (ev.shiftKey) {\n result.key = EscapeSequences_1.C0.BS;\n break;\n }\n else if (ev.altKey) {\n result.key = EscapeSequences_1.C0.ESC + EscapeSequences_1.C0.DEL;\n break;\n }\n result.key = EscapeSequences_1.C0.DEL;\n break;\n case 9:\n if (ev.shiftKey) {\n result.key = EscapeSequences_1.C0.ESC + '[Z';\n break;\n }\n result.key = EscapeSequences_1.C0.HT;\n result.cancel = true;\n break;\n case 13:\n result.key = EscapeSequences_1.C0.CR;\n result.cancel = true;\n break;\n case 27:\n result.key = EscapeSequences_1.C0.ESC;\n result.cancel = true;\n break;\n case 37:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'D';\n if (result.key === EscapeSequences_1.C0.ESC + '[1;3D') {\n result.key = isMac ? EscapeSequences_1.C0.ESC + 'b' : EscapeSequences_1.C0.ESC + '[1;5D';\n }\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OD';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[D';\n }\n break;\n case 39:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'C';\n if (result.key === EscapeSequences_1.C0.ESC + '[1;3C') {\n result.key = isMac ? EscapeSequences_1.C0.ESC + 'f' : EscapeSequences_1.C0.ESC + '[1;5C';\n }\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OC';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[C';\n }\n break;\n case 38:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'A';\n if (result.key === EscapeSequences_1.C0.ESC + '[1;3A') {\n result.key = EscapeSequences_1.C0.ESC + '[1;5A';\n }\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OA';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[A';\n }\n break;\n case 40:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'B';\n if (result.key === EscapeSequences_1.C0.ESC + '[1;3B') {\n result.key = EscapeSequences_1.C0.ESC + '[1;5B';\n }\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OB';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[B';\n }\n break;\n case 45:\n if (!ev.shiftKey && !ev.ctrlKey) {\n result.key = EscapeSequences_1.C0.ESC + '[2~';\n }\n break;\n case 46:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[3;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[3~';\n }\n break;\n case 36:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'H';\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OH';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[H';\n }\n break;\n case 35:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'F';\n }\n else if (applicationCursorMode) {\n result.key = EscapeSequences_1.C0.ESC + 'OF';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[F';\n }\n break;\n case 33:\n if (ev.shiftKey) {\n result.type = 2;\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[5~';\n }\n break;\n case 34:\n if (ev.shiftKey) {\n result.type = 3;\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[6~';\n }\n break;\n case 112:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'P';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + 'OP';\n }\n break;\n case 113:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'Q';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + 'OQ';\n }\n break;\n case 114:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'R';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + 'OR';\n }\n break;\n case 115:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'S';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + 'OS';\n }\n break;\n case 116:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[15;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[15~';\n }\n break;\n case 117:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[17;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[17~';\n }\n break;\n case 118:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[18;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[18~';\n }\n break;\n case 119:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[19;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[19~';\n }\n break;\n case 120:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[20;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[20~';\n }\n break;\n case 121:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[21;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[21~';\n }\n break;\n case 122:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[23;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[23~';\n }\n break;\n case 123:\n if (modifiers) {\n result.key = EscapeSequences_1.C0.ESC + '[24;' + (modifiers + 1) + '~';\n }\n else {\n result.key = EscapeSequences_1.C0.ESC + '[24~';\n }\n break;\n default:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n result.key = String.fromCharCode(ev.keyCode - 64);\n }\n else if (ev.keyCode === 32) {\n result.key = String.fromCharCode(0);\n }\n else if (ev.keyCode >= 51 && ev.keyCode <= 55) {\n result.key = String.fromCharCode(ev.keyCode - 51 + 27);\n }\n else if (ev.keyCode === 56) {\n result.key = String.fromCharCode(127);\n }\n else if (ev.keyCode === 219) {\n result.key = String.fromCharCode(27);\n }\n else if (ev.keyCode === 220) {\n result.key = String.fromCharCode(28);\n }\n else if (ev.keyCode === 221) {\n result.key = String.fromCharCode(29);\n }\n }\n else if ((!isMac || macOptionIsMeta) && ev.altKey && !ev.metaKey) {\n var keyMapping = KEYCODE_KEY_MAPPINGS[ev.keyCode];\n var key = keyMapping && keyMapping[!ev.shiftKey ? 0 : 1];\n if (key) {\n result.key = EscapeSequences_1.C0.ESC + key;\n }\n else if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n var keyCode = ev.ctrlKey ? ev.keyCode - 64 : ev.keyCode + 32;\n result.key = EscapeSequences_1.C0.ESC + String.fromCharCode(keyCode);\n }\n }\n else if (isMac && !ev.altKey && !ev.ctrlKey && ev.metaKey) {\n if (ev.keyCode === 65) {\n result.type = 1;\n }\n }\n break;\n }\n return result;\n}\nexports.evaluateKeyboardEvent = evaluateKeyboardEvent;\n//# sourceMappingURL=Keyboard.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAR_ATLAS_CELL_SPACING = 1;\n//# sourceMappingURL=Types.js.map","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CharAtlasUtils_1 = require(\"./CharAtlasUtils\");\nvar DynamicCharAtlas_1 = require(\"./DynamicCharAtlas\");\nvar NoneCharAtlas_1 = require(\"./NoneCharAtlas\");\nvar StaticCharAtlas_1 = require(\"./StaticCharAtlas\");\nvar charAtlasImplementations = {\n 'none': NoneCharAtlas_1.default,\n 'static': StaticCharAtlas_1.default,\n 'dynamic': DynamicCharAtlas_1.default\n};\nvar charAtlasCache = [];\nfunction acquireCharAtlas(terminal, colors, scaledCharWidth, scaledCharHeight) {\n var newConfig = CharAtlasUtils_1.generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors);\n for (var i = 0; i < charAtlasCache.length; i++) {\n var entry = charAtlasCache[i];\n var ownedByIndex = entry.ownedBy.indexOf(terminal);\n if (ownedByIndex >= 0) {\n if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {\n return entry.atlas;\n }\n if (entry.ownedBy.length === 1) {\n charAtlasCache.splice(i, 1);\n }\n else {\n entry.ownedBy.splice(ownedByIndex, 1);\n }\n break;\n }\n }\n for (var i = 0; i < charAtlasCache.length; i++) {\n var entry = charAtlasCache[i];\n if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {\n entry.ownedBy.push(terminal);\n return entry.atlas;\n }\n }\n var newEntry = {\n atlas: new charAtlasImplementations[terminal.options.experimentalCharAtlas](document, newConfig),\n config: newConfig,\n ownedBy: [terminal]\n };\n charAtlasCache.push(newEntry);\n return newEntry.atlas;\n}\nexports.acquireCharAtlas = acquireCharAtlas;\nfunction removeTerminalFromCache(terminal) {\n for (var i = 0; i < charAtlasCache.length; i++) {\n var index = charAtlasCache[i].ownedBy.indexOf(terminal);\n if (index !== -1) {\n if (charAtlasCache[i].ownedBy.length === 1) {\n charAtlasCache.splice(i, 1);\n }\n else {\n charAtlasCache[i].ownedBy.splice(index, 1);\n }\n break;\n }\n }\n}\nexports.removeTerminalFromCache = removeTerminalFromCache;\n//# sourceMappingURL=CharAtlasCache.js.map","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_BELL_SOUND = 'data:audio/wav;base64,UklGRigBAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQBAADpAFgCwAMlBZoG/wdmCcoKRAypDQ8PbRDBEQQTOxRtFYcWlBePGIUZXhoiG88bcBz7HHIdzh0WHlMeZx51HmkeUx4WHs8dah0AHXwc3hs9G4saxRnyGBIYGBcQFv8U4RPAEoYRQBACD70NWwwHC6gJOwjWBloF7gOBAhABkf8b/qv8R/ve+Xf4Ife79W/0JfPZ8Z/wde9N7ijtE+wU6xvqM+lb6H7nw+YX5mrlxuQz5Mzje+Ma49fioeKD4nXiYeJy4pHitOL04j/jn+MN5IPkFOWs5U3mDefM55/ogOl36m7rdOyE7abuyu8D8Unyj/Pg9D/2qfcb+Yn6/vuK/Qj/lAAlAg==';\nvar SoundManager = (function () {\n function SoundManager(_terminal) {\n this._terminal = _terminal;\n }\n SoundManager.prototype.playBellSound = function () {\n var audioContextCtor = window.AudioContext || window.webkitAudioContext;\n if (!this._audioContext && audioContextCtor) {\n this._audioContext = new audioContextCtor();\n }\n if (this._audioContext) {\n var bellAudioSource_1 = this._audioContext.createBufferSource();\n var context_1 = this._audioContext;\n this._audioContext.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._terminal.options.bellSound)), function (buffer) {\n bellAudioSource_1.buffer = buffer;\n bellAudioSource_1.connect(context_1.destination);\n bellAudioSource_1.start(0);\n });\n }\n else {\n console.warn('Sorry, but the Web Audio API is not supported by your browser. Please, consider upgrading to the latest version');\n }\n };\n SoundManager.prototype._base64ToArrayBuffer = function (base64) {\n var binaryString = window.atob(base64);\n var len = binaryString.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n };\n SoundManager.prototype._removeMimeType = function (dataURI) {\n var splitUri = dataURI.split(',');\n return splitUri[1];\n };\n return SoundManager;\n}());\nexports.SoundManager = SoundManager;\n//# sourceMappingURL=SoundManager.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"./Types\");\nvar BaseCharAtlas_1 = require(\"./BaseCharAtlas\");\nvar ColorManager_1 = require(\"../ColorManager\");\nvar CharAtlasGenerator_1 = require(\"../../shared/atlas/CharAtlasGenerator\");\nvar LRUMap_1 = require(\"./LRUMap\");\nvar Browser_1 = require(\"../../shared/utils/Browser\");\nvar TEXTURE_WIDTH = 1024;\nvar TEXTURE_HEIGHT = 1024;\nvar TRANSPARENT_COLOR = {\n css: 'rgba(0, 0, 0, 0)',\n rgba: 0\n};\nvar FRAME_CACHE_DRAW_LIMIT = 100;\nvar GLYPH_BITMAP_COMMIT_DELAY = 100;\nfunction getGlyphCacheKey(glyph) {\n return glyph.code << 21 | glyph.bg << 12 | glyph.fg << 3 | (glyph.bold ? 0 : 4) + (glyph.dim ? 0 : 2) + (glyph.italic ? 0 : 1);\n}\nvar DynamicCharAtlas = (function (_super) {\n __extends(DynamicCharAtlas, _super);\n function DynamicCharAtlas(document, _config) {\n var _this = _super.call(this) || this;\n _this._config = _config;\n _this._drawToCacheCount = 0;\n _this._glyphsWaitingOnBitmap = [];\n _this._bitmapCommitTimeout = null;\n _this._bitmap = null;\n _this._cacheCanvas = document.createElement('canvas');\n _this._cacheCanvas.width = TEXTURE_WIDTH;\n _this._cacheCanvas.height = TEXTURE_HEIGHT;\n _this._cacheCtx = _this._cacheCanvas.getContext('2d', { alpha: true });\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = _this._config.scaledCharWidth;\n tmpCanvas.height = _this._config.scaledCharHeight;\n _this._tmpCtx = tmpCanvas.getContext('2d', { alpha: _this._config.allowTransparency });\n _this._width = Math.floor(TEXTURE_WIDTH / _this._config.scaledCharWidth);\n _this._height = Math.floor(TEXTURE_HEIGHT / _this._config.scaledCharHeight);\n var capacity = _this._width * _this._height;\n _this._cacheMap = new LRUMap_1.default(capacity);\n _this._cacheMap.prealloc(capacity);\n return _this;\n }\n DynamicCharAtlas.prototype.dispose = function () {\n if (this._bitmapCommitTimeout !== null) {\n window.clearTimeout(this._bitmapCommitTimeout);\n this._bitmapCommitTimeout = null;\n }\n };\n DynamicCharAtlas.prototype.beginFrame = function () {\n this._drawToCacheCount = 0;\n };\n DynamicCharAtlas.prototype.draw = function (ctx, glyph, x, y) {\n if (glyph.code === 32) {\n return true;\n }\n var glyphKey = getGlyphCacheKey(glyph);\n var cacheValue = this._cacheMap.get(glyphKey);\n if (cacheValue !== null && cacheValue !== undefined) {\n this._drawFromCache(ctx, cacheValue, x, y);\n return true;\n }\n else if (this._canCache(glyph) && this._drawToCacheCount < FRAME_CACHE_DRAW_LIMIT) {\n var index = void 0;\n if (this._cacheMap.size < this._cacheMap.capacity) {\n index = this._cacheMap.size;\n }\n else {\n index = this._cacheMap.peek().index;\n }\n var cacheValue_1 = this._drawToCache(glyph, index);\n this._cacheMap.set(glyphKey, cacheValue_1);\n this._drawFromCache(ctx, cacheValue_1, x, y);\n return true;\n }\n return false;\n };\n DynamicCharAtlas.prototype._canCache = function (glyph) {\n return glyph.code < 256;\n };\n DynamicCharAtlas.prototype._toCoordinateX = function (index) {\n return (index % this._width) * this._config.scaledCharWidth;\n };\n DynamicCharAtlas.prototype._toCoordinateY = function (index) {\n return Math.floor(index / this._width) * this._config.scaledCharHeight;\n };\n DynamicCharAtlas.prototype._drawFromCache = function (ctx, cacheValue, x, y) {\n if (cacheValue.isEmpty) {\n return;\n }\n var cacheX = this._toCoordinateX(cacheValue.index);\n var cacheY = this._toCoordinateY(cacheValue.index);\n ctx.drawImage(cacheValue.inBitmap ? this._bitmap : this._cacheCanvas, cacheX, cacheY, this._config.scaledCharWidth, this._config.scaledCharHeight, x, y, this._config.scaledCharWidth, this._config.scaledCharHeight);\n };\n DynamicCharAtlas.prototype._getColorFromAnsiIndex = function (idx) {\n if (idx < this._config.colors.ansi.length) {\n return this._config.colors.ansi[idx];\n }\n return ColorManager_1.DEFAULT_ANSI_COLORS[idx];\n };\n DynamicCharAtlas.prototype._getBackgroundColor = function (glyph) {\n if (this._config.allowTransparency) {\n return TRANSPARENT_COLOR;\n }\n else if (glyph.bg === Types_1.INVERTED_DEFAULT_COLOR) {\n return this._config.colors.foreground;\n }\n else if (glyph.bg < 256) {\n return this._getColorFromAnsiIndex(glyph.bg);\n }\n return this._config.colors.background;\n };\n DynamicCharAtlas.prototype._getForegroundColor = function (glyph) {\n if (glyph.fg === Types_1.INVERTED_DEFAULT_COLOR) {\n return this._config.colors.background;\n }\n else if (glyph.fg < 256) {\n return this._getColorFromAnsiIndex(glyph.fg);\n }\n return this._config.colors.foreground;\n };\n DynamicCharAtlas.prototype._drawToCache = function (glyph, index) {\n this._drawToCacheCount++;\n this._tmpCtx.save();\n var backgroundColor = this._getBackgroundColor(glyph);\n this._tmpCtx.globalCompositeOperation = 'copy';\n this._tmpCtx.fillStyle = backgroundColor.css;\n this._tmpCtx.fillRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n this._tmpCtx.globalCompositeOperation = 'source-over';\n var fontWeight = glyph.bold ? this._config.fontWeightBold : this._config.fontWeight;\n var fontStyle = glyph.italic ? 'italic' : '';\n this._tmpCtx.font =\n fontStyle + \" \" + fontWeight + \" \" + this._config.fontSize * this._config.devicePixelRatio + \"px \" + this._config.fontFamily;\n this._tmpCtx.textBaseline = 'top';\n this._tmpCtx.fillStyle = this._getForegroundColor(glyph).css;\n if (glyph.dim) {\n this._tmpCtx.globalAlpha = Types_1.DIM_OPACITY;\n }\n this._tmpCtx.fillText(glyph.chars, 0, 0);\n this._tmpCtx.restore();\n var imageData = this._tmpCtx.getImageData(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n var isEmpty = false;\n if (!this._config.allowTransparency) {\n isEmpty = CharAtlasGenerator_1.clearColor(imageData, backgroundColor);\n }\n var x = this._toCoordinateX(index);\n var y = this._toCoordinateY(index);\n this._cacheCtx.putImageData(imageData, x, y);\n var cacheValue = {\n index: index,\n isEmpty: isEmpty,\n inBitmap: false\n };\n this._addGlyphToBitmap(cacheValue);\n return cacheValue;\n };\n DynamicCharAtlas.prototype._addGlyphToBitmap = function (cacheValue) {\n var _this = this;\n if (!('createImageBitmap' in window) || Browser_1.isFirefox || Browser_1.isSafari) {\n return;\n }\n this._glyphsWaitingOnBitmap.push(cacheValue);\n if (this._bitmapCommitTimeout !== null) {\n return;\n }\n this._bitmapCommitTimeout = window.setTimeout(function () { return _this._generateBitmap(); }, GLYPH_BITMAP_COMMIT_DELAY);\n };\n DynamicCharAtlas.prototype._generateBitmap = function () {\n var _this = this;\n var glyphsMovingToBitmap = this._glyphsWaitingOnBitmap;\n this._glyphsWaitingOnBitmap = [];\n window.createImageBitmap(this._cacheCanvas).then(function (bitmap) {\n _this._bitmap = bitmap;\n for (var i = 0; i < glyphsMovingToBitmap.length; i++) {\n var value = glyphsMovingToBitmap[i];\n value.inBitmap = true;\n }\n });\n this._bitmapCommitTimeout = null;\n };\n return DynamicCharAtlas;\n}(BaseCharAtlas_1.default));\nexports.default = DynamicCharAtlas;\n//# sourceMappingURL=DynamicCharAtlas.js.map","// 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 = global || self, 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 = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\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() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\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 = 50;\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 // 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, isRTL = direction == \"rtl\" ? 1 : 0;\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)); at += isRTL; }\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 at += isRTL;\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 = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[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 = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[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;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 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 start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.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 // 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 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 if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.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 // 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\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\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\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, from, to, marker) {\n var line = getLine(doc, lineNo);\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 // 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 || attributes) {\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 gutterWrap.setAttribute(\"aria-hidden\", \"true\");\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.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, 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 var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { 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\" + (widget.className ? \" \" + widget.className : \"\"));\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\", \"CodeMirror-line-like\"));\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, 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.length; i += 3) {\n mStart = map[i];\n mEnd = map[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.length - 3 || ch == mEnd && map[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[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(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 = outside; }\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, -1, -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, 1, 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 || found.outside > 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, 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 = 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, 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; box.bottom += widgetHeight;\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 <= 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, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, 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, 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, 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\", null, \"CodeMirror-line-like\");\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], \"CodeMirror-line-like\");\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 var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = 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$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (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 // 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 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 = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range, 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, 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.from(), sTo = range.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 () {\n if (!cm.hasFocus()) { onBlur(cm); }\n 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.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { 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 // 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 end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : 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 gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\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 + gutterSpace - (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) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\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 = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.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.max(0, 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.max(0, 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 = 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 != 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 markArrays: null // Used by addMarkedSpan\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 // 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 for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.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 (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\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 } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\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(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\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 // 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.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\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, options) {\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 d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\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 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.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 out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.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) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\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)); }\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));\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 cm.options.direction = doc.direction;\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(prev) {\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 = prev ? prev.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 = prev ? prev.maxGeneration : 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 this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.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 && doc.cm.getOption(\"readOnly\") != \"nocursor\")\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\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? 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 ? preventCursorRight : preventCursorLeft)\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 ? preventCursorLeft : preventCursorRight)\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 if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\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 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;\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 for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.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 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; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\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;\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 this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.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.height -= oldHeight - child.height;\n if (sz == rm) { this.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 for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.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.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.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 for (var i = 0; i < this.children.length; ++i) {\n var child = this.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 if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\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) { 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, 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 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.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.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.collapsed && !lineIsHidden(this.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.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 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.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\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), doc.cm && doc.cm.curOp);\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 this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.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 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.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 if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\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 ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, 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 parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.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 changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.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, 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() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\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);\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 = 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 == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\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 = 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;\n });\n return clipPos(this, Pos(lineNo, 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 if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\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 markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(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$1){}\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: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 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 \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"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, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.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 != \"Mod\") { 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 if (cm.doc.direction == \"rtl\") { dir = -dir; }\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, \"codepoint\"); },\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(start.ch, 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 if (e.target && e.target != cm.display.input.getField()) { return }\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 if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\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 (e.target && e.target != cm.display.input.getField()) { return }\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 if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\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 && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); 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 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 cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\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 if (ie) { delayBlurEvent(cm); }\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 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\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 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.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 // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\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) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\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 : 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$1) { 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.display.gutterSpecs.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.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, 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\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/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 updateGutters(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, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(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, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, 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\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\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 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\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, options);\n display.wrapper.CodeMirror = 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(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, 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); }\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 on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\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 = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.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\") == textLines.join(\"\\n\"))\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 = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.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.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.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 ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\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, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\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 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.state.modeGen++;\n regChange(this);\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 ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\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 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) && 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 = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.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 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.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) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.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) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\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, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, 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) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == 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, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.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 = this.display.viewFrom;\n this.doc.iter(lineNo, 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, \"widget\"); break } } }\n ++lineNo;\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.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\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 // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\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 \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true 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 var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\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 (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else 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, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\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 div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || 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 (!belongsToInput(e) || 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 = activeElt();\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.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\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 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.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() || activeElt() != this.div)\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.display.gutterSpecs.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;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.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 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[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.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\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 this.textarea.readOnly = !!val;\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 (!options.leaveSubmitMethodAlone && 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.61.1\";\n\n return CodeMirror;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Terminal_1 = require(\"../Terminal\");\nvar Strings = require(\"../Strings\");\nvar Terminal = (function () {\n function Terminal(options) {\n this._core = new Terminal_1.Terminal(options);\n }\n Object.defineProperty(Terminal.prototype, \"element\", {\n get: function () { return this._core.element; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"textarea\", {\n get: function () { return this._core.textarea; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"rows\", {\n get: function () { return this._core.rows; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"cols\", {\n get: function () { return this._core.cols; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"markers\", {\n get: function () { return this._core.markers; },\n enumerable: true,\n configurable: true\n });\n Terminal.prototype.blur = function () {\n this._core.blur();\n };\n Terminal.prototype.focus = function () {\n this._core.focus();\n };\n Terminal.prototype.on = function (type, listener) {\n this._core.on(type, listener);\n };\n Terminal.prototype.off = function (type, listener) {\n this._core.off(type, listener);\n };\n Terminal.prototype.emit = function (type, data) {\n this._core.emit(type, data);\n };\n Terminal.prototype.addDisposableListener = function (type, handler) {\n return this._core.addDisposableListener(type, handler);\n };\n Terminal.prototype.resize = function (columns, rows) {\n this._core.resize(columns, rows);\n };\n Terminal.prototype.writeln = function (data) {\n this._core.writeln(data);\n };\n Terminal.prototype.open = function (parent) {\n this._core.open(parent);\n };\n Terminal.prototype.attachCustomKeyEventHandler = function (customKeyEventHandler) {\n this._core.attachCustomKeyEventHandler(customKeyEventHandler);\n };\n Terminal.prototype.registerLinkMatcher = function (regex, handler, options) {\n return this._core.registerLinkMatcher(regex, handler, options);\n };\n Terminal.prototype.deregisterLinkMatcher = function (matcherId) {\n this._core.deregisterLinkMatcher(matcherId);\n };\n Terminal.prototype.registerCharacterJoiner = function (handler) {\n return this._core.registerCharacterJoiner(handler);\n };\n Terminal.prototype.deregisterCharacterJoiner = function (joinerId) {\n this._core.deregisterCharacterJoiner(joinerId);\n };\n Terminal.prototype.addMarker = function (cursorYOffset) {\n return this._core.addMarker(cursorYOffset);\n };\n Terminal.prototype.hasSelection = function () {\n return this._core.hasSelection();\n };\n Terminal.prototype.getSelection = function () {\n return this._core.getSelection();\n };\n Terminal.prototype.clearSelection = function () {\n this._core.clearSelection();\n };\n Terminal.prototype.selectAll = function () {\n this._core.selectAll();\n };\n Terminal.prototype.selectLines = function (start, end) {\n this._core.selectLines(start, end);\n };\n Terminal.prototype.dispose = function () {\n this._core.dispose();\n };\n Terminal.prototype.destroy = function () {\n this._core.destroy();\n };\n Terminal.prototype.scrollLines = function (amount) {\n this._core.scrollLines(amount);\n };\n Terminal.prototype.scrollPages = function (pageCount) {\n this._core.scrollPages(pageCount);\n };\n Terminal.prototype.scrollToTop = function () {\n this._core.scrollToTop();\n };\n Terminal.prototype.scrollToBottom = function () {\n this._core.scrollToBottom();\n };\n Terminal.prototype.scrollToLine = function (line) {\n this._core.scrollToLine(line);\n };\n Terminal.prototype.clear = function () {\n this._core.clear();\n };\n Terminal.prototype.write = function (data) {\n this._core.write(data);\n };\n Terminal.prototype.getOption = function (key) {\n return this._core.getOption(key);\n };\n Terminal.prototype.setOption = function (key, value) {\n this._core.setOption(key, value);\n };\n Terminal.prototype.refresh = function (start, end) {\n this._core.refresh(start, end);\n };\n Terminal.prototype.reset = function () {\n this._core.reset();\n };\n Terminal.applyAddon = function (addon) {\n addon.apply(Terminal);\n };\n Object.defineProperty(Terminal, \"strings\", {\n get: function () {\n return Strings;\n },\n enumerable: true,\n configurable: true\n });\n return Terminal;\n}());\nexports.Terminal = Terminal;\n//# sourceMappingURL=Terminal.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-data-table',{staticClass:\"elevation-1\",attrs:{\"hide-default-header\":_vm.hideHeader,\"hide-default-footer\":\"\",\"headers\":_vm.headers,\"items\":_vm.device.applications,\"sort-by\":\"key\"},scopedSlots:_vm._u([{key:\"item.name\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('router-link',{attrs:{\"to\":{\n name: 'applicationDetails',\n params: {\n project: item.projectId,\n namespace: item.namespaceId,\n application: item.id,\n },\n }}},[_vm._v(_vm._s(item.name))])]}},{key:\"item.containers\",fn:function(ref){\n var item = ref.item;\nreturn [_c('div',{staticClass:\"mt-3\"},[_vm._l((item.spec.containers),function(container,i){return [_c('container-status',{key:i,attrs:{\"application\":item,\"device\":_vm.device,\"containers\":item.spec.containers,\"applicationStatus\":_vm.getContainerStatus(item, container.name)}})]})],2)]}},{key:\"item.status\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-tooltip',{key:((item.applicationId) + \"-\" + (item.id)),attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var tooltip = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"mr-2\"},Object.assign({}, tooltip)),[(\n item.deploymentStatus.available == item.deploymentStatus.total\n )?_c('v-icon',{attrs:{\"color\":\"green accent-3\"}},[_vm._v(\"check_circle_outline\")]):_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"error_outline\")])],1)]}}],null,true)},[(item.deploymentStatus.status && item.deploymentStatus.status.lastSeen)?_c('span',[_vm._v(\" Last reported: \"+_vm._s(_vm._f(\"date\")(item.deploymentStatus.status.lastSeen))+\" \")]):_c('span',[_vm._v(\" Waiting for deployment status to be reported by device \")])])]}},{key:\"item.allocation\",fn:function(ref){\n var item = ref.item;\nreturn [_c('router-link',{attrs:{\"to\":{\n name: 'applicationAllocations',\n params: {\n project: item.projectId,\n namespace: item.namespaceId,\n application: item.id,\n },\n }}},[_vm._v(\" \"+_vm._s(item.deploymentStatus.available)+\"/\"+_vm._s(item.deploymentStatus.total)+\" \")])]}},{key:\"item.actions\",fn:function(ref){\n var item = ref.item;\nreturn [_c('ApplicationLogsDialog',{attrs:{\"device\":_vm.device,\"application\":item}})]}},{key:\"no-data\",fn:function(){return [_vm._v(\"No applications running on this device\")]},proxy:true}],null,true)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","