web-interface.assets.b17c9c857280ad767bbcaf6728eb4fb1.js.map Maven / Gradle / Ivy
{"version":3,"sources":["webpack://graylog-web-interface/b17c9c857280ad767bbcaf6728eb4fb1.js"],"sourcesContent":["ace.define(\"ace/autocomplete/popup\",[\"require\",\"exports\",\"module\",\"ace/virtual_renderer\",\"ace/editor\",\"ace/range\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar Renderer = require(\"../virtual_renderer\").VirtualRenderer;\nvar Editor = require(\"../editor\").Editor;\nvar Range = require(\"../range\").Range;\nvar event = require(\"../lib/event\");\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\nvar nls = require(\"../config\").nls;\nvar userAgent = require(\"./../lib/useragent\");\nvar getAriaId = function (index) {\n return \"suggest-aria-id:\".concat(index);\n};\nvar popupAriaRole = userAgent.isSafari ? \"menu\" : \"listbox\";\nvar optionAriaRole = userAgent.isSafari ? \"menuitem\" : \"option\";\nvar ariaActiveState = userAgent.isSafari ? \"aria-current\" : \"aria-selected\";\nvar $singleLineEditor = function (el) {\n var renderer = new Renderer(el);\n renderer.$maxLines = 4;\n var editor = new Editor(renderer);\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n editor.$mouseHandler.$focusTimeout = 0;\n editor.$highlightTagPending = true;\n return editor;\n};\nvar AcePopup = /** @class */ (function () {\n function AcePopup(parentNode) {\n var el = dom.createElement(\"div\");\n var popup = $singleLineEditor(el);\n if (parentNode) {\n parentNode.appendChild(el);\n }\n el.style.display = \"none\";\n popup.renderer.content.style.cursor = \"default\";\n popup.renderer.setStyle(\"ace_autocomplete\");\n popup.renderer.$textLayer.element.setAttribute(\"role\", popupAriaRole);\n popup.renderer.$textLayer.element.setAttribute(\"aria-roledescription\", nls(\"Autocomplete suggestions\"));\n popup.renderer.$textLayer.element.setAttribute(\"aria-label\", nls(\"Autocomplete suggestions\"));\n popup.renderer.textarea.setAttribute(\"aria-hidden\", \"true\");\n popup.setOption(\"displayIndentGuides\", false);\n popup.setOption(\"dragDelay\", 150);\n var noop = function () { };\n popup.focus = noop;\n popup.$isFocused = true;\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = \"0\";\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n popup.setHighlightActiveLine(false);\n popup.session.highlight(\"\");\n popup.session.$searchHighlight.clazz = \"ace_highlight-marker\";\n popup.on(\"mousedown\", function (e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n var lastMouseEvent;\n var hoverMarker = new Range(-1, 0, -1, Infinity);\n var selectionMarker = new Range(-1, 0, -1, Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, \"ace_active-line\", \"fullLine\");\n popup.setSelectOnHover = function (val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, \"ace_line-hover\", \"fullLine\");\n }\n else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on(\"mousemove\", function (e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n popup.isMouseOver = true;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on(\"beforeRender\", function () {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on(\"afterRender\", function () {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]);\n var el = document.activeElement; // Active element is textarea of main editor\n if (selected !== popup.selectedNode && popup.selectedNode) {\n dom.removeCssClass(popup.selectedNode, \"ace_selected\");\n el.removeAttribute(\"aria-activedescendant\");\n popup.selectedNode.removeAttribute(ariaActiveState);\n popup.selectedNode.removeAttribute(\"id\");\n }\n popup.selectedNode = selected;\n if (selected) {\n dom.addCssClass(selected, \"ace_selected\");\n var ariaId = getAriaId(row);\n selected.id = ariaId;\n t.element.setAttribute(\"aria-activedescendant\", ariaId);\n el.setAttribute(\"aria-activedescendant\", ariaId);\n selected.setAttribute(\"role\", optionAriaRole);\n selected.setAttribute(\"aria-roledescription\", nls(\"item\"));\n selected.setAttribute(\"aria-label\", popup.getData(row).caption || popup.getData(row).value);\n selected.setAttribute(\"aria-setsize\", popup.data.length);\n selected.setAttribute(\"aria-posinset\", row + 1);\n selected.setAttribute(\"aria-describedby\", \"doc-tooltip\");\n selected.setAttribute(ariaActiveState, \"true\");\n }\n });\n var hideHoverMarker = function () { setHoverMarker(-1); };\n var setHoverMarker = function (row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit(\"changeBackMarker\");\n popup._emit(\"changeHoverMarker\");\n }\n };\n popup.getHoveredRow = function () {\n return hoverMarker.start.row;\n };\n event.addListener(popup.container, \"mouseout\", function () {\n popup.isMouseOver = false;\n hideHoverMarker();\n });\n popup.on(\"hide\", hideHoverMarker);\n popup.on(\"changeSelection\", hideHoverMarker);\n popup.session.doc.getLength = function () {\n return popup.data.length;\n };\n popup.session.doc.getLine = function (i) {\n var data = popup.data[i];\n if (typeof data == \"string\")\n return data;\n return (data && data.value) || \"\";\n };\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function (row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == \"string\")\n data = { value: data };\n var caption = data.caption || data.value || data.name;\n function addToken(value, className) {\n value && tokens.push({\n type: (data.className || \"\") + (className || \"\"),\n value: value\n });\n }\n var lower = caption.toLowerCase();\n var filterText = (popup.filterText || \"\").toLowerCase();\n var lastIndex = 0;\n var lastI = 0;\n for (var i = 0; i <= filterText.length; i++) {\n if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) {\n var sub = filterText.slice(lastI, i);\n lastI = i;\n var index = lower.indexOf(sub, lastIndex);\n if (index == -1)\n continue;\n addToken(caption.slice(lastIndex, index), \"\");\n lastIndex = index + sub.length;\n addToken(caption.slice(index, lastIndex), \"completion-highlight\");\n }\n }\n addToken(caption.slice(lastIndex, caption.length), \"\");\n tokens.push({ type: \"completion-spacer\", value: \" \" });\n if (data.meta)\n tokens.push({ type: \"completion-meta\", value: data.meta });\n if (data.message)\n tokens.push({ type: \"completion-message\", value: data.message });\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n popup.session.$computeWidth = function () {\n return this.screenWidth = 0;\n };\n popup.isOpen = false;\n popup.isTopdown = false;\n popup.autoSelect = true;\n popup.filterText = \"\";\n popup.isMouseOver = false;\n popup.data = [];\n popup.setData = function (list, filterText) {\n popup.filterText = filterText || \"\";\n popup.setValue(lang.stringRepeat(\"\\n\", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function (row) {\n return popup.data[row];\n };\n popup.getRow = function () {\n return selectionMarker.start.row;\n };\n popup.setRow = function (line) {\n line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit(\"changeBackMarker\");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal(\"select\");\n }\n };\n popup.on(\"changeSelection\", function () {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n popup.hide = function () {\n this.container.style.display = \"none\";\n popup.anchorPos = null;\n popup.anchor = null;\n if (popup.isOpen) {\n popup.isOpen = false;\n this._signal(\"hide\");\n }\n };\n popup.tryShow = function (pos, lineHeight, anchor, forceShow) {\n if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor &&\n popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left &&\n popup.anchor === anchor) {\n return true;\n }\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var dims = { top: 0, bottom: 0, left: 0 };\n var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight;\n var spaceAbove = pos.top - 3 * this.$borderSize;\n if (!anchor) {\n if (spaceAbove <= spaceBelow || spaceBelow >= maxH) {\n anchor = \"bottom\";\n }\n else {\n anchor = \"top\";\n }\n }\n if (anchor === \"top\") {\n dims.bottom = pos.top - this.$borderSize;\n dims.top = dims.bottom - maxH;\n }\n else if (anchor === \"bottom\") {\n dims.top = pos.top + lineHeight + this.$borderSize;\n dims.bottom = dims.top + maxH;\n }\n var fitsX = dims.top >= 0 && dims.bottom <= screenHeight;\n if (!forceShow && !fitsX) {\n return false;\n }\n if (!fitsX) {\n if (anchor === \"top\") {\n renderer.$maxPixelHeight = spaceAbove;\n }\n else {\n renderer.$maxPixelHeight = spaceBelow;\n }\n }\n else {\n renderer.$maxPixelHeight = null;\n }\n if (anchor === \"top\") {\n el.style.top = \"\";\n el.style.bottom = (screenHeight - dims.bottom) + \"px\";\n popup.isTopdown = false;\n }\n else {\n el.style.top = dims.top + \"px\";\n el.style.bottom = \"\";\n popup.isTopdown = true;\n }\n el.style.display = \"\";\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n el.style.left = left + \"px\";\n el.style.right = \"\";\n if (!popup.isOpen) {\n popup.isOpen = true;\n this._signal(\"show\");\n lastMouseEvent = null;\n }\n popup.anchorPos = pos;\n popup.anchor = anchor;\n return true;\n };\n popup.show = function (pos, lineHeight, topdownOnly) {\n this.tryShow(pos, lineHeight, topdownOnly ? \"bottom\" : undefined, true);\n };\n popup.goTo = function (where) {\n var row = this.getRow();\n var max = this.session.getLength() - 1;\n switch (where) {\n case \"up\":\n row = row <= 0 ? max : row - 1;\n break;\n case \"down\":\n row = row >= max ? -1 : row + 1;\n break;\n case \"start\":\n row = 0;\n break;\n case \"end\":\n row = max;\n break;\n }\n this.setRow(row);\n };\n popup.getTextLeftOffset = function () {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n return popup;\n }\n return AcePopup;\n}());\ndom.importCssString(\"\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #CAD6FA;\\n z-index: 1;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #3a674e;\\n}\\n.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid #abbffe;\\n margin-top: -1px;\\n background: rgba(233,233,253,0.4);\\n position: absolute;\\n z-index: 2;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid rgba(109, 150, 13, 0.8);\\n background: rgba(58, 103, 78, 0.62);\\n}\\n.ace_completion-meta {\\n opacity: 0.5;\\n margin-left: 0.9em;\\n}\\n.ace_completion-message {\\n margin-left: 0.9em;\\n color: blue;\\n}\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #2d69c7;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #93ca12;\\n}\\n.ace_editor.ace_autocomplete {\\n width: 300px;\\n z-index: 200000;\\n border: 1px lightgray solid;\\n position: fixed;\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n line-height: 1.4;\\n background: #fefefe;\\n color: #111;\\n}\\n.ace_dark.ace_editor.ace_autocomplete {\\n border: 1px #484747 solid;\\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\\n line-height: 1.4;\\n background: #25282c;\\n color: #c1c1c1;\\n}\\n.ace_autocomplete .ace_text-layer {\\n width: calc(100% - 8px);\\n}\\n.ace_autocomplete .ace_line {\\n display: flex;\\n align-items: center;\\n}\\n.ace_autocomplete .ace_line > * {\\n min-width: 0;\\n flex: 0 0 auto;\\n}\\n.ace_autocomplete .ace_line .ace_ {\\n flex: 0 1 auto;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ace_autocomplete .ace_completion-spacer {\\n flex: 1;\\n}\\n.ace_autocomplete.ace_loading:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0px;\\n height: 2px;\\n width: 8%;\\n background: blue;\\n z-index: 100;\\n animation: ace_progress 3s infinite linear;\\n animation-delay: 300ms;\\n transform: translateX(-100%) scaleX(1);\\n}\\n@keyframes ace_progress {\\n 0% { transform: translateX(-100%) scaleX(1) }\\n 50% { transform: translateX(625%) scaleX(2) } \\n 100% { transform: translateX(1500%) scaleX(3) } \\n}\\n@media (prefers-reduced-motion) {\\n .ace_autocomplete.ace_loading:after {\\n transform: translateX(625%) scaleX(2);\\n animation: none;\\n }\\n}\\n\", \"autocompletion.css\", false);\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\nexports.getAriaId = getAriaId;\n\n});\n\nace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/range_list\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/clipboard\",\"ace/editor\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar RangeList = require(\"./range_list\").RangeList;\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = require(\"./tokenizer\").Tokenizer;\nvar clipboard = require(\"./clipboard\");\nvar VARIABLES = {\n CURRENT_WORD: function (editor) {\n return editor.session.getTextRange(editor.session.getWordRange());\n },\n SELECTION: function (editor, name, indentation) {\n var text = editor.session.getTextRange();\n if (indentation)\n return text.replace(/\\n\\r?([ \\t]*\\S)/g, \"\\n\" + indentation + \"$1\");\n return text;\n },\n CURRENT_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row);\n },\n PREV_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row - 1);\n },\n LINE_INDEX: function (editor) {\n return editor.getCursorPosition().row;\n },\n LINE_NUMBER: function (editor) {\n return editor.getCursorPosition().row + 1;\n },\n SOFT_TABS: function (editor) {\n return editor.session.getUseSoftTabs() ? \"YES\" : \"NO\";\n },\n TAB_SIZE: function (editor) {\n return editor.session.getTabSize();\n },\n CLIPBOARD: function (editor) {\n return clipboard.getText && clipboard.getText();\n },\n FILENAME: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0];\n },\n FILENAME_BASE: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\\.[^.]*$/, \"\");\n },\n DIRECTORY: function (editor) {\n return this.FILEPATH(editor).replace(/[^/\\\\]*$/, \"\");\n },\n FILEPATH: function (editor) { return \"/not implemented.txt\"; },\n WORKSPACE_NAME: function () { return \"Unknown\"; },\n FULLNAME: function () { return \"Unknown\"; },\n BLOCK_COMMENT_START: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.start || \"\";\n },\n BLOCK_COMMENT_END: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.end || \"\";\n },\n LINE_COMMENT: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.lineCommentStart || \"\";\n },\n CURRENT_YEAR: date.bind(null, { year: \"numeric\" }),\n CURRENT_YEAR_SHORT: date.bind(null, { year: \"2-digit\" }),\n CURRENT_MONTH: date.bind(null, { month: \"numeric\" }),\n CURRENT_MONTH_NAME: date.bind(null, { month: \"long\" }),\n CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: \"short\" }),\n CURRENT_DATE: date.bind(null, { day: \"2-digit\" }),\n CURRENT_DAY_NAME: date.bind(null, { weekday: \"long\" }),\n CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: \"short\" }),\n CURRENT_HOUR: date.bind(null, { hour: \"2-digit\", hour12: false }),\n CURRENT_MINUTE: date.bind(null, { minute: \"2-digit\" }),\n CURRENT_SECOND: date.bind(null, { second: \"2-digit\" })\n};\nVARIABLES.SELECTED_TEXT = VARIABLES.SELECTION;\nfunction date(dateFormat) {\n var str = new Date().toLocaleString(\"en-us\", dateFormat);\n return str.length == 1 ? \"0\" + str : str;\n}\nvar SnippetManager = /** @class */ (function () {\n function SnippetManager() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.variables = VARIABLES;\n }\n SnippetManager.prototype.getTokenizer = function () {\n return SnippetManager[\"$tokenizer\"] || this.createTokenizer();\n };\n SnippetManager.prototype.createTokenizer = function () {\n function TabstopToken(str) {\n str = str.substr(1);\n if (/^\\d+$/.test(str))\n return [{ tabstopId: parseInt(str, 10) }];\n return [{ text: str }];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n var formatMatcher = {\n regex: \"/(\" + escape(\"/\") + \"+)/\",\n onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.fmtString = true;\n ts.guard = val.slice(1, -1);\n ts.flag = \"\";\n return \"\";\n },\n next: \"formatString\"\n };\n SnippetManager[\"$tokenizer\"] = new Tokenizer({\n start: [\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n }\n else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n }\n return [val];\n } },\n { regex: /}/, onMatch: function (val, state, stack) {\n return [stack.length ? stack.shift() : val];\n } },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken },\n { regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function (str, state, stack) {\n var t = TabstopToken(str.substr(1));\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\" },\n { regex: /\\n/, token: \"newline\", merge: false }\n ],\n snippetVar: [\n { regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function (val, state, stack) {\n var choices = val.slice(1, -1).replace(/\\\\[,|\\\\]|,/g, function (operator) {\n return operator.length == 2 ? operator[1] : \"\\x00\";\n }).split(\"\\x00\").map(function (value) {\n return { value: value };\n });\n stack[0].choices = choices;\n return [choices[0]];\n }, next: \"start\" },\n formatMatcher,\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\" }\n ],\n formatString: [\n { regex: /:/, onMatch: function (val, state, stack) {\n if (stack.length && stack[0].expectElse) {\n stack[0].expectElse = false;\n stack[0].ifEnd = { elseEnd: stack[0] };\n return [stack[0].ifEnd];\n }\n return \":\";\n } },\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length)\n val = ch;\n else if (\"`$\\\\\".indexOf(ch) != -1)\n val = ch;\n else if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\t\";\n else if (\"ulULE\".indexOf(ch) != -1)\n val = { changeCase: ch, local: ch > \"a\" };\n return [val];\n } },\n { regex: \"/\\\\w*}\", onMatch: function (val, state, stack) {\n var next = stack.shift();\n if (next)\n next.flag = val.slice(1, -1);\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: function (val, state, stack) {\n return [{ text: val.slice(1) }];\n } },\n { regex: /\\${\\w+/, onMatch: function (val, state, stack) {\n var token = { text: val.slice(2) };\n stack.unshift(token);\n return [token];\n }, next: \"formatStringVar\" },\n { regex: /\\n/, token: \"newline\", merge: false },\n { regex: /}/, onMatch: function (val, state, stack) {\n var next = stack.shift();\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" }\n ],\n formatStringVar: [\n { regex: /:\\/\\w+}/, onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.formatFunction = val.slice(2, -1);\n return [stack.shift()];\n }, next: \"formatString\" },\n formatMatcher,\n { regex: /:[\\?\\-+]?/, onMatch: function (val, state, stack) {\n if (val[1] == \"+\")\n stack[0].ifEnd = stack[0];\n if (val[1] == \"?\")\n stack[0].expectElse = true;\n }, next: \"formatString\" },\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"formatString\" }\n ]\n });\n return SnippetManager[\"$tokenizer\"];\n };\n SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) {\n return x.value || x;\n });\n };\n SnippetManager.prototype.getVariableValue = function (editor, name, indentation) {\n if (/^\\d+$/.test(name))\n return (this.variables.__ || {})[name] || \"\";\n if (/^[A-Z]\\d+$/.test(name))\n return (this.variables[name[0] + \"__\"] || {})[name.substr(1)] || \"\";\n name = name.replace(/^TM_/, \"\");\n if (!this.variables.hasOwnProperty(name))\n return \"\";\n var value = this.variables[name];\n if (typeof value == \"function\")\n value = this.variables[name](editor, name, indentation);\n return value == null ? \"\" : value;\n };\n SnippetManager.prototype.tmStrFormat = function (str, ch, editor) {\n if (!ch.fmt)\n return str;\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gim]/g, \"\"));\n var fmtTokens = typeof ch.fmt == \"string\" ? this.tokenizeTmSnippet(ch.fmt, \"formatString\") : ch.fmt;\n var _self = this;\n var formatted = str.replace(re, function () {\n var oldArgs = _self.variables.__;\n _self.variables.__ = [].slice.call(arguments);\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n }\n else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n }\n else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n }\n else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n _self.variables.__ = oldArgs;\n return fmtParts.join(\"\");\n });\n return formatted;\n };\n SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) {\n if (ch.formatFunction == \"upcase\")\n return str.toUpperCase();\n if (ch.formatFunction == \"downcase\")\n return str.toLowerCase();\n return str;\n };\n SnippetManager.prototype.resolveVariables = function (snippet, editor) {\n var result = [];\n var indentation = \"\";\n var afterNewLine = true;\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n if (ch == \"\\n\") {\n afterNewLine = true;\n indentation = \"\";\n }\n else if (afterNewLine) {\n indentation = /^\\t*/.exec(ch)[0];\n afterNewLine = /\\S/.test(ch);\n }\n continue;\n }\n if (!ch)\n continue;\n afterNewLine = false;\n if (ch.fmtString) {\n var j = snippet.indexOf(ch, i + 1);\n if (j == -1)\n j = snippet.length;\n ch.fmt = snippet.slice(i + 1, j);\n i = j;\n }\n if (ch.text) {\n var value = this.getVariableValue(editor, ch.text, indentation) + \"\";\n if (ch.fmtString)\n value = this.tmStrFormat(value, ch, editor);\n if (ch.formatFunction)\n value = this.tmFormatFunction(value, ch, editor);\n if (value && !ch.ifEnd) {\n result.push(value);\n gotoNext(ch);\n }\n else if (!value && ch.ifEnd) {\n gotoNext(ch.ifEnd);\n }\n }\n else if (ch.elseEnd) {\n gotoNext(ch.elseEnd);\n }\n else if (ch.tabstopId != null) {\n result.push(ch);\n }\n else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) {\n var processedSnippet = processSnippetText.call(this, editor, snippetText);\n return processedSnippet.text;\n };\n SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var processedSnippet = processSnippetText.call(this, editor, snippetText, options);\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, processedSnippet.text);\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId);\n };\n SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText, options);\n editor.forEachSelection(function () {\n self.insertSnippetForSelection(editor, snippetText, options);\n }, null, { keepOrder: true });\n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n SnippetManager.prototype.$getScope = function (editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp)\n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n return scope;\n };\n SnippetManager.prototype.getActiveScopes = function (editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n SnippetManager.prototype.expandWithTab = function (editor, options) {\n var self = this;\n var result = editor.forEachSelection(function () {\n return self.expandSnippetForSelection(editor, options);\n }, null, { keepOrder: true });\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n SnippetManager.prototype.expandSnippetForSelection = function (editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length);\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n SnippetManager.prototype.register = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n if (!snippets)\n snippets = [];\n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n }\n else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n if (s.prefix)\n s.tabTrigger = s.prefix;\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n }\n else {\n Object.keys(snippets).forEach(function (key) {\n addSnippet(snippets[key]);\n });\n }\n this._signal(\"registerSnippets\", { scope: scope });\n };\n SnippetManager.prototype.unregister = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope || scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope || scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n SnippetManager.prototype.parseSnippetFile = function (str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], /**@type{Snippet}*/ snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n }\n catch (e) { }\n }\n if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n }\n else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n }\n else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n }\n else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n SnippetManager.prototype.getSnippetByName = function (name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n return SnippetManager;\n}());\noop.implement(SnippetManager.prototype, EventEmitter);\nvar processSnippetText = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function (x) {\n if (x == \"\\n\" && !options.excludeExtraIndent)\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function (p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function (t) { return typeof t === \"object\"; });\n if (isNested && !ts.value) {\n ts.value = value;\n }\n else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function (ts) { ts.length = 0; });\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || { tabstopId: p.tabstopId };\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function (parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function (t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1) {\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n }\n else\n column += t.length;\n text += t;\n }\n else if (t) {\n if (!t.start)\n t.start = { row: row, column: column };\n else\n t.end = { row: row, column: column };\n }\n });\n return {\n text: text,\n tabstops: tabstops,\n tokens: tokens\n };\n};\nvar TabstopManager = /** @class */ (function () {\n function TabstopManager(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n }\n TabstopManager.prototype.attach = function (editor) {\n this.$openTabstops = null;\n this.selectedTabstop = null;\n this.editor = editor;\n this.session = editor.session;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n TabstopManager.prototype.detach = function () {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges.length = 0;\n this.tabstops.length = 0;\n this.selectedTabstop = null;\n this.editor.off(\"change\", this.$onChange);\n this.editor.off(\"changeSelection\", this.$onChangeSelection);\n this.editor.off(\"changeSession\", this.$onChangeSession);\n this.editor.commands.off(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.session = null;\n this.editor = null;\n };\n TabstopManager.prototype.onChange = function (delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = this.tabstops.slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n TabstopManager.prototype.updateLinkedFields = function () {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n TabstopManager.prototype.onAfterExec = function (e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n TabstopManager.prototype.onChangeSelection = function () {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n TabstopManager.prototype.onChangeSession = function () {\n this.detach();\n };\n TabstopManager.prototype.tabNext = function (dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n this.updateTabstopMarkers();\n if (index === 0) {\n this.detach();\n }\n };\n TabstopManager.prototype.selectTabstop = function (index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n this.selectedTabstop = ts;\n var range = ts.firstNonLinked || ts;\n if (ts.choices)\n range.cursor = range.start;\n if (!this.editor.inVirtualSelectionMode) {\n var sel = this.editor.multiSelect;\n sel.toSingleRange(range);\n for (var i = 0; i < ts.length; i++) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n }\n else {\n this.editor.selection.fromOrientedRange(range);\n }\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n if (this.selectedTabstop && this.selectedTabstop.choices)\n this.editor.execCommand(\"startAutocomplete\", { matches: this.selectedTabstop.choices });\n };\n TabstopManager.prototype.addTabstops = function (tabstops, start, end) {\n var useLink = this.useLink || !this.editor.getOption(\"enableMultiselect\");\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n var snippetId = this.snippetId = (this.snippetId || 0) + 1;\n tabstops.forEach(function (ts, index) {\n var dest = this.$openTabstops[index] || ts;\n dest.snippetId = snippetId;\n for (var i = 0; i < ts.length; i++) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString || (dest.firstNonLinked && useLink)) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n }\n else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n dest.rangeList = dest.rangeList || new RangeList();\n dest.rangeList.$bias = 0;\n dest.rangeList.addList(dest);\n }, this);\n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n TabstopManager.prototype.addTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n TabstopManager.prototype.removeTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n TabstopManager.prototype.updateTabstopMarkers = function () {\n if (!this.selectedTabstop)\n return;\n var currentSnippetId = this.selectedTabstop.snippetId;\n if (this.selectedTabstop.index === 0) {\n currentSnippetId--;\n }\n this.tabstops.forEach(function (ts) {\n if (ts.snippetId === currentSnippetId)\n this.addTabstopMarkers(ts);\n else\n this.removeTabstopMarkers(ts);\n }, this);\n };\n TabstopManager.prototype.removeRange = function (range) {\n var i = range.tabstop.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n if (i != -1)\n this.ranges.splice(i, 1);\n i = range.tabstop.rangeList.ranges.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n this.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n return TabstopManager;\n}());\nTabstopManager.prototype.keyboardHandler = new HashHandler();\nTabstopManager.prototype.keyboardHandler.bindKeys({\n \"Tab\": function (editor) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(editor))\n return;\n editor.tabstopManager.tabNext(1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Shift-Tab\": function (editor) {\n editor.tabstopManager.tabNext(-1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Esc\": function (editor) {\n editor.tabstopManager.detach();\n }\n});\nvar movePoint = function (point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\nvar moveRelative = function (point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\ndom.importCssString(\"\\n.ace_snippet-marker {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n background: rgba(194, 193, 208, 0.09);\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\n position: absolute;\\n}\", \"snippets.css\", false);\nexports.snippetManager = new SnippetManager();\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.insertSnippet = function (content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function (options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/autocomplete/inline_screenreader\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar AceInlineScreenReader = /** @class */ (function () {\n function AceInlineScreenReader(editor) {\n this.editor = editor;\n this.screenReaderDiv = document.createElement(\"div\");\n this.screenReaderDiv.classList.add(\"ace_screenreader-only\");\n this.editor.container.appendChild(this.screenReaderDiv);\n }\n AceInlineScreenReader.prototype.setScreenReaderContent = function (content) {\n if (!this.popup && this.editor.completer && /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup) {\n this.popup = /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup;\n this.popup.renderer.on(\"afterRender\", function () {\n var row = this.popup.getRow();\n var t = this.popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected) {\n var idString = \"doc-tooltip \";\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n idString += \"ace-inline-screenreader-line-\".concat(lineIndex, \" \");\n }\n selected.setAttribute(\"aria-describedby\", idString);\n }\n }.bind(this));\n }\n while (this.screenReaderDiv.firstChild) {\n this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild);\n }\n this._lines = content.split(/\\r\\n|\\r|\\n/);\n var codeElement = this.createCodeBlock();\n this.screenReaderDiv.appendChild(codeElement);\n };\n AceInlineScreenReader.prototype.destroy = function () {\n this.screenReaderDiv.remove();\n };\n AceInlineScreenReader.prototype.createCodeBlock = function () {\n var container = document.createElement(\"pre\");\n container.setAttribute(\"id\", \"ace-inline-screenreader\");\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n var codeElement = document.createElement(\"code\");\n codeElement.setAttribute(\"id\", \"ace-inline-screenreader-line-\".concat(lineIndex));\n var line = document.createTextNode(this._lines[lineIndex]);\n codeElement.appendChild(line);\n container.appendChild(codeElement);\n }\n return container;\n };\n return AceInlineScreenReader;\n}());\nexports.AceInlineScreenReader = AceInlineScreenReader;\n\n});\n\nace.define(\"ace/autocomplete/inline\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete/inline_screenreader\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar AceInlineScreenReader = require(\"./inline_screenreader\").AceInlineScreenReader;\nvar AceInline = /** @class */ (function () {\n function AceInline() {\n this.editor = null;\n }\n AceInline.prototype.show = function (editor, completion, prefix) {\n prefix = prefix || \"\";\n if (editor && this.editor && this.editor !== editor) {\n this.hide();\n this.editor = null;\n this.inlineScreenReader = null;\n }\n if (!editor || !completion) {\n return false;\n }\n if (!this.inlineScreenReader) {\n this.inlineScreenReader = new AceInlineScreenReader(editor);\n }\n var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value;\n if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) {\n return false;\n }\n this.editor = editor;\n this.inlineScreenReader.setScreenReaderContent(displayText);\n displayText = displayText.slice(prefix.length);\n if (displayText === \"\") {\n editor.removeGhostText();\n }\n else {\n editor.setGhostText(displayText);\n }\n return true;\n };\n AceInline.prototype.isOpen = function () {\n if (!this.editor) {\n return false;\n }\n return !!this.editor.renderer.$ghostText;\n };\n AceInline.prototype.hide = function () {\n if (!this.editor) {\n return false;\n }\n this.editor.removeGhostText();\n return true;\n };\n AceInline.prototype.destroy = function () {\n this.hide();\n this.editor = null;\n if (this.inlineScreenReader) {\n this.inlineScreenReader.destroy();\n this.inlineScreenReader = null;\n }\n };\n return AceInline;\n}());\nexports.AceInline = AceInline;\n\n});\n\nace.define(\"ace/autocomplete/util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.parForEach = function (array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function (result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\u2000\\u2070-\\uFFFF]/;\nexports.retrievePrecedingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos - 1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join(\"\");\n};\nexports.retrieveFollowingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\nexports.getCompletionPrefix = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function (completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function (identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }.bind(this));\n }\n }.bind(this));\n return prefix || this.retrievePrecedingIdentifier(line, pos.column);\n};\nexports.triggerAutocomplete = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var column = (pos.column === 0) ? 0 : pos.column - 1;\n var previousChar = line[column];\n return editor.completers.some(function (el) {\n if (el.triggerCharacters && Array.isArray(el.triggerCharacters)) {\n return el.triggerCharacters.includes(previousChar);\n }\n });\n};\n\n});\n\nace.define(\"ace/autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/popup\",\"ace/autocomplete/inline\",\"ace/autocomplete/popup\",\"ace/autocomplete/util\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/snippets\",\"ace/config\",\"ace/lib/event\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar AcePopup = require(\"./autocomplete/popup\").AcePopup;\nvar AceInline = require(\"./autocomplete/inline\").AceInline;\nvar getAriaId = require(\"./autocomplete/popup\").getAriaId;\nvar util = require(\"./autocomplete/util\");\nvar lang = require(\"./lib/lang\");\nvar dom = require(\"./lib/dom\");\nvar snippetManager = require(\"./snippets\").snippetManager;\nvar config = require(\"./config\");\nvar event = require(\"./lib/event\");\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar destroyCompleter = function (e, editor) {\n editor.completer && editor.completer.destroy();\n};\nvar Autocomplete = /** @class */ (function () {\n function Autocomplete() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.autoShown = false;\n this.exactMatch = false;\n this.inlineEnabled = false;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n this.parentNode = null;\n this.setSelectOnHover = false;\n this.hasSeen = new Set();\n this.showLoadingState = false;\n this.stickySelectionDelay = 500;\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n this.onLayoutChange = this.onLayoutChange.bind(this);\n this.changeTimer = lang.delayedCall(function () {\n this.updateCompletions(true);\n }.bind(this));\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50);\n this.stickySelectionTimer = lang.delayedCall(function () {\n this.stickySelection = true;\n }.bind(this), this.stickySelectionDelay);\n this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () {\n var initialPosition = this.completionProvider && this.completionProvider.initialPosition;\n if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0)\n return;\n this.completions = new FilteredList(Autocomplete.completionsForLoading);\n this.openPopup(this.editor, initialPosition.prefix, false);\n this.popup.renderer.setStyle(\"ace_loading\", true);\n }.bind(this), this.stickySelectionDelay);\n }\n Object.defineProperty(Autocomplete, \"completionsForLoading\", {\n get: function () {\n return [{\n caption: config.nls(\"Loading...\"),\n value: \"\"\n }];\n },\n enumerable: false,\n configurable: true\n });\n Autocomplete.prototype.$init = function () {\n this.popup = new AcePopup(this.parentNode || document.body || document.documentElement);\n this.popup.on(\"click\", function (e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on(\"show\", this.$onPopupShow.bind(this));\n this.popup.on(\"hide\", this.$onHidePopup.bind(this));\n this.popup.on(\"select\", this.$onPopupChange.bind(this));\n event.addListener(this.popup.container, \"mouseout\", this.mouseOutListener.bind(this));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\n this.popup.renderer.on(\"afterRender\", this.$onPopupRender.bind(this));\n return this.popup;\n };\n Autocomplete.prototype.$initInline = function () {\n if (!this.inlineEnabled || this.inlineRenderer)\n return;\n this.inlineRenderer = new AceInline();\n return this.inlineRenderer;\n };\n Autocomplete.prototype.getPopup = function () {\n return this.popup || this.$init();\n };\n Autocomplete.prototype.$onHidePopup = function () {\n if (this.inlineRenderer) {\n this.inlineRenderer.hide();\n }\n this.hideDocTooltip();\n this.stickySelectionTimer.cancel();\n this.popupTimer.cancel();\n this.stickySelection = false;\n };\n Autocomplete.prototype.$seen = function (completion) {\n if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === \"function\") {\n completion.completer.onSeen(this.editor, completion);\n this.hasSeen.add(completion);\n }\n };\n Autocomplete.prototype.$onPopupChange = function (hide) {\n if (this.inlineRenderer && this.inlineEnabled) {\n var completion = hide ? null : this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n if (this.popup.isMouseOver && this.setSelectOnHover) {\n this.tooltipTimer.call(null, null);\n return;\n }\n this.popupTimer.schedule();\n this.tooltipTimer.schedule();\n }\n else {\n this.popupTimer.call(null, null);\n this.tooltipTimer.call(null, null);\n }\n };\n Autocomplete.prototype.$updateGhostText = function (completion) {\n var row = this.base.row;\n var column = this.base.column;\n var cursorColumn = this.editor.getCursorPosition().column;\n var prefix = this.editor.session.getLine(row).slice(column, cursorColumn);\n if (!this.inlineRenderer.show(this.editor, completion, prefix)) {\n this.inlineRenderer.hide();\n }\n else {\n this.$seen(completion);\n }\n };\n Autocomplete.prototype.$onPopupRender = function () {\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) {\n for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) {\n var completion = this.popup.getData(i);\n if (completion && (!inlineEnabled || completion.hideInlinePreview)) {\n this.$seen(completion);\n }\n }\n }\n };\n Autocomplete.prototype.$onPopupShow = function (hide) {\n this.$onPopupChange(hide);\n this.stickySelection = false;\n if (this.stickySelectionDelay >= 0)\n this.stickySelectionTimer.schedule(this.stickySelectionDelay);\n };\n Autocomplete.prototype.observeLayoutChanges = function () {\n if (this.$elements || !this.editor)\n return;\n window.addEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.addEventListener(\"wheel\", this.mousewheelListener);\n var el = this.editor.container.parentNode;\n var elements = [];\n while (el) {\n elements.push(el);\n el.addEventListener(\"scroll\", this.onLayoutChange, { passive: true });\n el = el.parentNode;\n }\n this.$elements = elements;\n };\n Autocomplete.prototype.unObserveLayoutChanges = function () {\n var _this = this;\n window.removeEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.removeEventListener(\"wheel\", this.mousewheelListener);\n this.$elements && this.$elements.forEach(function (el) {\n el.removeEventListener(\"scroll\", _this.onLayoutChange, { passive: true });\n });\n this.$elements = null;\n };\n Autocomplete.prototype.onLayoutChange = function () {\n if (!this.popup.isOpen)\n return this.unObserveLayoutChanges();\n this.$updatePopupPosition();\n this.updateDocTooltip();\n };\n Autocomplete.prototype.$updatePopupPosition = function () {\n var editor = this.editor;\n var renderer = editor.renderer;\n var lineHeight = renderer.layerConfig.lineHeight;\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n var posGhostText = {\n top: pos.top,\n left: pos.left\n };\n if (renderer.$ghostText && renderer.$ghostTextWidget) {\n if (this.base.row === renderer.$ghostText.position.row) {\n posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight;\n }\n }\n var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight;\n var lowestPosition = editorContainerBottom < posGhostText.top ?\n { top: editorContainerBottom, left: posGhostText.left } :\n posGhostText;\n if (this.popup.tryShow(lowestPosition, lineHeight, \"bottom\")) {\n return;\n }\n if (this.popup.tryShow(pos, lineHeight, \"top\")) {\n return;\n }\n this.popup.show(pos, lineHeight);\n };\n Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) {\n this.$firstOpenTimer.cancel();\n if (!this.popup)\n this.$init();\n if (this.inlineEnabled && !this.inlineRenderer)\n this.$initInline();\n this.popup.autoSelect = this.autoSelect;\n this.popup.setSelectOnHover(this.setSelectOnHover);\n var oldRow = this.popup.getRow();\n var previousSelectedItem = this.popup.data[oldRow];\n this.popup.setData(this.completions.filtered, this.completions.filterText);\n if (this.editor.textInput.setAriaOptions) {\n this.editor.textInput.setAriaOptions({\n activeDescendant: getAriaId(this.popup.getRow()),\n inline: this.inlineEnabled\n });\n }\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n var newRow;\n if (this.stickySelection)\n newRow = this.popup.data.indexOf(previousSelectedItem);\n if (!newRow || newRow === -1)\n newRow = 0;\n this.popup.setRow(this.autoSelect ? newRow : -1);\n if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow])\n this.$onPopupChange();\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (newRow === oldRow && inlineEnabled) {\n var completion = this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n }\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n this.$updatePopupPosition();\n if (this.tooltipNode) {\n this.updateDocTooltip();\n }\n }\n else if (keepPopupPosition && !prefix) {\n this.detach();\n }\n this.changeTimer.cancel();\n this.observeLayoutChanges();\n };\n Autocomplete.prototype.detach = function () {\n if (this.editor) {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off(\"changeSelection\", this.changeListener);\n this.editor.off(\"blur\", this.blurListener);\n this.editor.off(\"mousedown\", this.mousedownListener);\n this.editor.off(\"mousewheel\", this.mousewheelListener);\n }\n this.$firstOpenTimer.cancel();\n this.changeTimer.cancel();\n this.hideDocTooltip();\n if (this.completionProvider) {\n this.completionProvider.detach();\n }\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n if (this.popup && this.popup.renderer) {\n this.popup.renderer.off(\"afterRender\", this.$onPopupRender);\n }\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completionProvider = this.completions = this.base = null;\n this.unObserveLayoutChanges();\n };\n Autocomplete.prototype.changeListener = function (e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n Autocomplete.prototype.blurListener = function (e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget);\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text) {\n this.detach();\n }\n };\n Autocomplete.prototype.mousedownListener = function (e) {\n this.detach();\n };\n Autocomplete.prototype.mousewheelListener = function (e) {\n if (!this.popup.isMouseOver)\n this.detach();\n };\n Autocomplete.prototype.mouseOutListener = function (e) {\n if (this.popup.isOpen)\n this.$updatePopupPosition();\n };\n Autocomplete.prototype.goTo = function (where) {\n this.popup.goTo(where);\n };\n Autocomplete.prototype.insertMatch = function (data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n if (data.value === \"\") // Explicitly given nothing to insert, e.g. \"No suggestion state\"\n return this.detach();\n var completions = this.completions;\n var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options);\n if (this.completions == completions)\n this.detach();\n return result;\n };\n Autocomplete.prototype.showPopup = function (editor, options) {\n if (this.editor)\n this.detach();\n this.activated = true;\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n editor.on(\"changeSelection\", this.changeListener);\n editor.on(\"blur\", this.blurListener);\n editor.on(\"mousedown\", this.mousedownListener);\n editor.on(\"mousewheel\", this.mousewheelListener);\n this.updateCompletions(false, options);\n };\n Autocomplete.prototype.getCompletionProvider = function (initialPosition) {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider(initialPosition);\n return this.completionProvider;\n };\n Autocomplete.prototype.gatherCompletions = function (editor, callback) {\n return this.getCompletionProvider().gatherCompletions(editor, callback);\n };\n Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({ start: this.base, end: pos });\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n if (options && options.matches) {\n var pos = this.editor.getSelectionRange().start;\n this.base = this.editor.session.doc.createAnchor(pos.row, pos.column);\n this.base.$insertRight = true;\n this.completions = new FilteredList(options.matches);\n this.getCompletionProvider().completions = this.completions;\n return this.openPopup(this.editor, \"\", keepPopupPosition);\n }\n var session = this.editor.getSession();\n var pos = this.editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(this.editor);\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n var completionOptions = {\n exactMatch: this.exactMatch,\n ignoreCaption: this.ignoreCaption\n };\n this.getCompletionProvider({\n prefix: prefix,\n pos: pos\n }).provideCompletions(this.editor, completionOptions, \n function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\n this.$firstOpenTimer.cancel();\n if (finished) {\n if (!filtered.length) {\n var emptyMessage = !this.autoShown && this.emptyMessage;\n if (typeof emptyMessage == \"function\")\n emptyMessage = this.emptyMessage(prefix);\n if (emptyMessage) {\n var completionsForEmpty = [{\n caption: emptyMessage,\n value: \"\"\n }\n ];\n this.completions = new FilteredList(completionsForEmpty);\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", false);\n return;\n }\n return this.detach();\n }\n if (filtered.length == 1 && filtered[0].value == prefix\n && !filtered[0].snippet)\n return this.detach();\n if (this.autoInsert && !this.autoShown && filtered.length == 1)\n return this.insertMatch(filtered[0]);\n }\n this.completions = !finished && this.showLoadingState ?\n new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) :\n completions;\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", !finished);\n }.bind(this));\n if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) {\n this.$firstOpenTimer.delay(this.stickySelectionDelay / 2);\n }\n };\n Autocomplete.prototype.cancelContextMenu = function () {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n Autocomplete.prototype.updateDocTooltip = function () {\n var popup = this.popup;\n var all = this.completions.filtered;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n var completersLength = this.editor.completers.length;\n for (var i = 0; i < completersLength; i++) {\n var completer = this.editor.completers[i];\n if (completer.getDocTooltip && selected.completerId === completer.id) {\n doc = completer.getDocTooltip(selected);\n break;\n }\n }\n if (!doc && typeof selected != \"string\")\n doc = selected;\n if (typeof doc == \"string\")\n doc = { docText: doc };\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n Autocomplete.prototype.showDocTooltip = function (item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement(\"div\");\n this.tooltipNode.style.margin = \"0\";\n this.tooltipNode.style.pointerEvents = \"auto\";\n this.tooltipNode.style.overscrollBehavior = \"contain\";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n this.tooltipNode.onclick = this.onTooltipClick.bind(this);\n this.tooltipNode.id = \"doc-tooltip\";\n this.tooltipNode.setAttribute(\"role\", \"tooltip\");\n this.tooltipNode.addEventListener(\"wheel\", preventParentScroll);\n }\n var theme = this.editor.renderer.theme;\n this.tooltipNode.className = \"ace_tooltip ace_doc-tooltip \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n }\n else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n if (!tooltipNode.parentNode)\n this.popup.container.appendChild(this.tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n tooltipNode.style.display = \"block\";\n if (window.innerWidth - rect.right < 320) {\n if (rect.left < 320) {\n if (popup.isTopdown) {\n tooltipNode.style.top = rect.bottom + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n else {\n tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n }\n else {\n tooltipNode.style.right = window.innerWidth - rect.left + \"px\";\n tooltipNode.style.left = \"\";\n }\n }\n else {\n tooltipNode.style.left = (rect.right + 1) + \"px\";\n tooltipNode.style.right = \"\";\n }\n };\n Autocomplete.prototype.hideDocTooltip = function () {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode)\n return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n Autocomplete.prototype.onTooltipClick = function (e) {\n var a = e.target;\n while (a && a != this.tooltipNode) {\n if (a.nodeName == \"A\" && a.href) {\n a.rel = \"noreferrer\";\n a.target = \"_blank\";\n break;\n }\n a = a.parentNode;\n }\n };\n Autocomplete.prototype.destroy = function () {\n this.detach();\n if (this.popup) {\n this.popup.destroy();\n var el = this.popup.container;\n if (el && el.parentNode)\n el.parentNode.removeChild(el);\n }\n if (this.editor && this.editor.completer == this) {\n this.editor.off(\"destroy\", destroyCompleter);\n this.editor.completer = null;\n }\n this.inlineRenderer = this.popup = this.editor = null;\n };\n return Autocomplete;\n}());\nAutocomplete.prototype.commands = {\n \"Up\": function (editor) { editor.completer.goTo(\"up\"); },\n \"Down\": function (editor) { editor.completer.goTo(\"down\"); },\n \"Ctrl-Up|Ctrl-Home\": function (editor) { editor.completer.goTo(\"start\"); },\n \"Ctrl-Down|Ctrl-End\": function (editor) { editor.completer.goTo(\"end\"); },\n \"Esc\": function (editor) { editor.completer.detach(); },\n \"Return\": function (editor) { return editor.completer.insertMatch(); },\n \"Shift-Return\": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); },\n \"Tab\": function (editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo(\"down\");\n else\n return result;\n },\n \"PageUp\": function (editor) { editor.completer.popup.gotoPageUp(); },\n \"PageDown\": function (editor) { editor.completer.popup.gotoPageDown(); }\n};\nAutocomplete.for = function (editor) {\n if (editor.completer instanceof Autocomplete) {\n return editor.completer;\n }\n if (editor.completer) {\n editor.completer.destroy();\n editor.completer = null;\n }\n if (config.get(\"sharedPopups\")) {\n if (!Autocomplete[\"$sharedInstance\"])\n Autocomplete[\"$sharedInstance\"] = new Autocomplete();\n editor.completer = Autocomplete[\"$sharedInstance\"];\n }\n else {\n editor.completer = new Autocomplete();\n editor.once(\"destroy\", destroyCompleter);\n }\n return editor.completer;\n};\nAutocomplete.startCommand = {\n name: \"startAutocomplete\",\n exec: function (editor, options) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.autoSelect = true;\n completer.autoShown = false;\n completer.showPopup(editor, options);\n completer.cancelContextMenu();\n },\n bindKey: \"Ctrl-Space|Ctrl-Shift-Space|Alt-Space\"\n};\nvar CompletionProvider = /** @class */ (function () {\n function CompletionProvider(initialPosition) {\n this.initialPosition = initialPosition;\n this.active = true;\n }\n CompletionProvider.prototype.insertByIndex = function (editor, index, options) {\n if (!this.completions || !this.completions.filtered) {\n return false;\n }\n return this.insertMatch(editor, this.completions.filtered[index], options);\n };\n CompletionProvider.prototype.insertMatch = function (editor, data, options) {\n if (!data)\n return false;\n editor.startOperation({ command: { name: \"insertMatch\" } });\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(editor, data);\n }\n else {\n if (!this.completions)\n return false;\n var replaceBefore = this.completions.filterText.length;\n var replaceAfter = 0;\n if (data.range && data.range.start.row === data.range.end.row) {\n replaceBefore -= this.initialPosition.prefix.length;\n replaceBefore += this.initialPosition.pos.column - data.range.start.column;\n replaceAfter += data.range.end.column - this.initialPosition.pos.column;\n }\n if (replaceBefore || replaceAfter) {\n var ranges;\n if (editor.selection.getAllRanges) {\n ranges = editor.selection.getAllRanges();\n }\n else {\n ranges = [editor.getSelectionRange()];\n }\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= replaceBefore;\n range.end.column += replaceAfter;\n editor.session.remove(range);\n }\n }\n if (data.snippet) {\n snippetManager.insertSnippet(editor, data.snippet);\n }\n else {\n this.$insertString(editor, data);\n }\n if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == \"function\") {\n data.completer.onInsert(editor, data);\n }\n if (data.command && data.command === \"startAutocomplete\") {\n editor.execCommand(data.command);\n }\n }\n editor.endOperation();\n return true;\n };\n CompletionProvider.prototype.$insertString = function (editor, data) {\n var text = data.value || data;\n editor.execCommand(\"insertstring\", text);\n };\n CompletionProvider.prototype.gatherCompletions = function (editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(editor);\n var matches = [];\n this.completers = editor.completers;\n var total = editor.completers.length;\n editor.completers.forEach(function (completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function (err, results) {\n if (completer.hideInlinePreview)\n results = results.map(function (result) {\n return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview });\n });\n if (!err && results)\n matches = matches.concat(results);\n callback(null, {\n prefix: util.getCompletionPrefix(editor),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n CompletionProvider.prototype.provideCompletions = function (editor, options, callback) {\n var processResults = function (results) {\n var prefix = results.prefix;\n var matches = results.matches;\n this.completions = new FilteredList(matches);\n if (options.exactMatch)\n this.completions.exactMatch = true;\n if (options.ignoreCaption)\n this.completions.ignoreCaption = true;\n this.completions.setFilter(prefix);\n if (results.finished || this.completions.filtered.length)\n callback(null, this.completions, results.finished);\n }.bind(this);\n var isImmediate = true;\n var immediateResults = null;\n this.gatherCompletions(editor, function (err, results) {\n if (!this.active) {\n return;\n }\n if (err) {\n callback(err, [], true);\n this.detach();\n }\n var prefix = results.prefix;\n if (prefix.indexOf(results.prefix) !== 0)\n return;\n if (isImmediate) {\n immediateResults = results;\n return;\n }\n processResults(results);\n }.bind(this));\n isImmediate = false;\n if (immediateResults) {\n var results = immediateResults;\n immediateResults = null;\n processResults(results);\n }\n };\n CompletionProvider.prototype.detach = function () {\n this.active = false;\n this.completers && this.completers.forEach(function (completer) {\n if (typeof completer.cancel === \"function\") {\n completer.cancel();\n }\n });\n };\n return CompletionProvider;\n}());\nvar FilteredList = /** @class */ (function () {\n function FilteredList(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || \"\";\n this.exactMatch = false;\n this.ignoreCaption = false;\n }\n FilteredList.prototype.setFilter = function (str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function (a, b) {\n return b.exactMatch - a.exactMatch || b.$score - a.$score\n || (a.caption || a.value).localeCompare(b.caption || b.value);\n });\n var prev = null;\n matches = matches.filter(function (item) {\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev)\n return false;\n prev = caption;\n return true;\n });\n this.filtered = matches;\n };\n FilteredList.prototype.filterCompletions = function (items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet;\n if (!caption)\n continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }\n else {\n var fullMatchIndex = caption.toLowerCase().indexOf(lower);\n if (fullMatchIndex > -1) {\n penalty = fullMatchIndex;\n }\n else {\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n matchMask = matchMask | (1 << j);\n }\n lastIndex = index;\n }\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.$score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n return FilteredList;\n}());\nexports.Autocomplete = Autocomplete;\nexports.CompletionProvider = CompletionProvider;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define(\"ace/ext/menu_tools/settings_menu.css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"#ace_settingsmenu, #kbshortcutmenu {\\n background-color: #F7F7F7;\\n color: black;\\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\\n padding: 1em 0.5em 2em 1em;\\n overflow: auto;\\n position: absolute;\\n margin: 0;\\n bottom: 0;\\n right: 0;\\n top: 0;\\n z-index: 9991;\\n cursor: default;\\n}\\n\\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\\n background-color: rgba(255, 255, 255, 0.6);\\n color: black;\\n}\\n\\n.ace_optionsMenuEntry:hover {\\n background-color: rgba(100, 100, 100, 0.1);\\n transition: all 0.3s\\n}\\n\\n.ace_closeButton {\\n background: rgba(245, 146, 146, 0.5);\\n border: 1px solid #F48A8A;\\n border-radius: 50%;\\n padding: 7px;\\n position: absolute;\\n right: -8px;\\n top: -8px;\\n z-index: 100000;\\n}\\n.ace_closeButton{\\n background: rgba(245, 146, 146, 0.9);\\n}\\n.ace_optionsMenuKey {\\n color: darkslateblue;\\n font-weight: bold;\\n}\\n.ace_optionsMenuCommand {\\n color: darkcyan;\\n font-weight: normal;\\n}\\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\\n vertical-align: middle;\\n}\\n\\n.ace_optionsMenuEntry button[ace_selected_button=true] {\\n background: #e7e7e7;\\n box-shadow: 1px 0px 2px 0px #adadad inset;\\n border-color: #adadad;\\n}\\n.ace_optionsMenuEntry button {\\n background: white;\\n border: 1px solid lightgray;\\n margin: 0px;\\n}\\n.ace_optionsMenuEntry button:hover{\\n background: #f0f0f0;\\n}\";\n\n});\n\nace.define(\"ace/ext/menu_tools/overlay_page\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/ext/menu_tools/settings_menu.css\"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/\n'use strict';\nvar dom = require(\"../../lib/dom\");\nvar cssText = require(\"./settings_menu.css\");\ndom.importCssString(cssText, \"settings_menu.css\", false);\nmodule.exports.overlayPage = function overlayPage(editor, contentElement, callback) {\n var closer = document.createElement('div');\n var ignoreFocusOut = false;\n function documentEscListener(e) {\n if (e.keyCode === 27) {\n close();\n }\n }\n function close() {\n if (!closer)\n return;\n document.removeEventListener('keydown', documentEscListener);\n closer.parentNode.removeChild(closer);\n if (editor) {\n editor.focus();\n }\n closer = null;\n callback && callback();\n }\n function setIgnoreFocusOut(ignore) {\n ignoreFocusOut = ignore;\n if (ignore) {\n closer.style.pointerEvents = \"none\";\n contentElement.style.pointerEvents = \"auto\";\n }\n }\n closer.style.cssText = 'margin: 0; padding: 0; ' +\n 'position: fixed; top:0; bottom:0; left:0; right:0;' +\n 'z-index: 9990; ' +\n (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : '');\n closer.addEventListener('click', function (e) {\n if (!ignoreFocusOut) {\n close();\n }\n });\n document.addEventListener('keydown', documentEscListener);\n contentElement.addEventListener('click', function (e) {\n e.stopPropagation();\n });\n closer.appendChild(contentElement);\n document.body.appendChild(closer);\n if (editor) {\n editor.blur();\n }\n return {\n close: close,\n setIgnoreFocusOut: setIgnoreFocusOut\n };\n};\n\n});\n\nace.define(\"ace/ext/modelist\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar modes = [];\nfunction getModeForPath(path) {\n var mode = modesByName.text;\n var fileName = path.split(/[\\/\\\\]/).pop();\n for (var i = 0; i < modes.length; i++) {\n if (modes[i].supportsFile(fileName)) {\n mode = modes[i];\n break;\n }\n }\n return mode;\n}\nvar Mode = /** @class */ (function () {\n function Mode(name, caption, extensions) {\n this.name = name;\n this.caption = caption;\n this.mode = \"ace/mode/\" + name;\n this.extensions = extensions;\n var re;\n if (/\\^/.test(extensions)) {\n re = extensions.replace(/\\|(\\^)?/g, function (a, b) {\n return \"$|\" + (b ? \"^\" : \"^.*\\\\.\");\n }) + \"$\";\n }\n else {\n re = \"^.*\\\\.(\" + extensions + \")$\";\n }\n this.extRe = new RegExp(re, \"gi\");\n }\n Mode.prototype.supportsFile = function (filename) {\n return filename.match(this.extRe);\n };\n return Mode;\n}());\nvar supportedModes = {\n ABAP: [\"abap\"],\n ABC: [\"abc\"],\n ActionScript: [\"as\"],\n ADA: [\"ada|adb\"],\n Alda: [\"alda\"],\n Apache_Conf: [\"^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd\"],\n Apex: [\"apex|cls|trigger|tgr\"],\n AQL: [\"aql\"],\n AsciiDoc: [\"asciidoc|adoc\"],\n ASL: [\"dsl|asl|asl.json\"],\n Assembly_ARM32: [\"s\"],\n Assembly_x86: [\"asm|a\"],\n Astro: [\"astro\"],\n AutoHotKey: [\"ahk\"],\n BatchFile: [\"bat|cmd\"],\n BibTeX: [\"bib\"],\n C_Cpp: [\"cpp|c|cc|cxx|h|hh|hpp|ino\"],\n C9Search: [\"c9search_results\"],\n Cirru: [\"cirru|cr\"],\n Clojure: [\"clj|cljs\"],\n Cobol: [\"CBL|COB\"],\n coffee: [\"coffee|cf|cson|^Cakefile\"],\n ColdFusion: [\"cfm|cfc\"],\n Crystal: [\"cr\"],\n CSharp: [\"cs\"],\n Csound_Document: [\"csd\"],\n Csound_Orchestra: [\"orc\"],\n Csound_Score: [\"sco\"],\n CSS: [\"css\"],\n Curly: [\"curly\"],\n Cuttlefish: [\"conf\"],\n D: [\"d|di\"],\n Dart: [\"dart\"],\n Diff: [\"diff|patch\"],\n Django: [\"djt|html.djt|dj.html|djhtml\"],\n Dockerfile: [\"^Dockerfile\"],\n Dot: [\"dot\"],\n Drools: [\"drl\"],\n Edifact: [\"edi\"],\n Eiffel: [\"e|ge\"],\n EJS: [\"ejs\"],\n Elixir: [\"ex|exs\"],\n Elm: [\"elm\"],\n Erlang: [\"erl|hrl\"],\n Flix: [\"flix\"],\n Forth: [\"frt|fs|ldr|fth|4th\"],\n Fortran: [\"f|f90\"],\n FSharp: [\"fsi|fs|ml|mli|fsx|fsscript\"],\n FSL: [\"fsl\"],\n FTL: [\"ftl\"],\n Gcode: [\"gcode\"],\n Gherkin: [\"feature\"],\n Gitignore: [\"^.gitignore\"],\n Glsl: [\"glsl|frag|vert\"],\n Gobstones: [\"gbs\"],\n golang: [\"go\"],\n GraphQLSchema: [\"gql\"],\n Groovy: [\"groovy\"],\n HAML: [\"haml\"],\n Handlebars: [\"hbs|handlebars|tpl|mustache\"],\n Haskell: [\"hs\"],\n Haskell_Cabal: [\"cabal\"],\n haXe: [\"hx\"],\n Hjson: [\"hjson\"],\n HTML: [\"html|htm|xhtml|we|wpy\"],\n HTML_Elixir: [\"eex|html.eex\"],\n HTML_Ruby: [\"erb|rhtml|html.erb\"],\n INI: [\"ini|conf|cfg|prefs\"],\n Io: [\"io\"],\n Ion: [\"ion\"],\n Jack: [\"jack\"],\n Jade: [\"jade|pug\"],\n Java: [\"java\"],\n JavaScript: [\"js|jsm|cjs|mjs\"],\n JEXL: [\"jexl\"],\n JSON: [\"json\"],\n JSON5: [\"json5\"],\n JSONiq: [\"jq\"],\n JSP: [\"jsp\"],\n JSSM: [\"jssm|jssm_state\"],\n JSX: [\"jsx\"],\n Julia: [\"jl\"],\n Kotlin: [\"kt|kts\"],\n LaTeX: [\"tex|latex|ltx|bib\"],\n Latte: [\"latte\"],\n LESS: [\"less\"],\n Liquid: [\"liquid\"],\n Lisp: [\"lisp\"],\n LiveScript: [\"ls\"],\n Log: [\"log\"],\n LogiQL: [\"logic|lql\"],\n Logtalk: [\"lgt\"],\n LSL: [\"lsl\"],\n Lua: [\"lua\"],\n LuaPage: [\"lp\"],\n Lucene: [\"lucene\"],\n Makefile: [\"^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make\"],\n Markdown: [\"md|markdown\"],\n Mask: [\"mask\"],\n MATLAB: [\"matlab\"],\n Maze: [\"mz\"],\n MediaWiki: [\"wiki|mediawiki\"],\n MEL: [\"mel\"],\n MIPS: [\"s|asm\"],\n MIXAL: [\"mixal\"],\n MUSHCode: [\"mc|mush\"],\n MySQL: [\"mysql\"],\n Nasal: [\"nas\"],\n Nginx: [\"nginx|conf\"],\n Nim: [\"nim\"],\n Nix: [\"nix\"],\n NSIS: [\"nsi|nsh\"],\n Nunjucks: [\"nunjucks|nunjs|nj|njk\"],\n ObjectiveC: [\"m|mm\"],\n OCaml: [\"ml|mli\"],\n Odin: [\"odin\"],\n PartiQL: [\"partiql|pql\"],\n Pascal: [\"pas|p\"],\n Perl: [\"pl|pm\"],\n pgSQL: [\"pgsql\"],\n PHP: [\"php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module\"],\n PHP_Laravel_blade: [\"blade.php\"],\n Pig: [\"pig\"],\n PLSQL: [\"plsql\"],\n Powershell: [\"ps1\"],\n Praat: [\"praat|praatscript|psc|proc\"],\n Prisma: [\"prisma\"],\n Prolog: [\"plg|prolog\"],\n Properties: [\"properties\"],\n Protobuf: [\"proto\"],\n PRQL: [\"prql\"],\n Puppet: [\"epp|pp\"],\n Python: [\"py\"],\n QML: [\"qml\"],\n R: [\"r\"],\n Raku: [\"raku|rakumod|rakutest|p6|pl6|pm6\"],\n Razor: [\"cshtml|asp\"],\n RDoc: [\"Rd\"],\n Red: [\"red|reds\"],\n RHTML: [\"Rhtml\"],\n Robot: [\"robot|resource\"],\n RST: [\"rst\"],\n Ruby: [\"rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile\"],\n Rust: [\"rs\"],\n SaC: [\"sac\"],\n SASS: [\"sass\"],\n SCAD: [\"scad\"],\n Scala: [\"scala|sbt\"],\n Scheme: [\"scm|sm|rkt|oak|scheme\"],\n Scrypt: [\"scrypt\"],\n SCSS: [\"scss\"],\n SH: [\"sh|bash|^.bashrc\"],\n SJS: [\"sjs\"],\n Slim: [\"slim|skim\"],\n Smarty: [\"smarty|tpl\"],\n Smithy: [\"smithy\"],\n snippets: [\"snippets\"],\n Soy_Template: [\"soy\"],\n Space: [\"space\"],\n SPARQL: [\"rq\"],\n SQL: [\"sql\"],\n SQLServer: [\"sqlserver\"],\n Stylus: [\"styl|stylus\"],\n SVG: [\"svg\"],\n Swift: [\"swift\"],\n Tcl: [\"tcl\"],\n Terraform: [\"tf\", \"tfvars\", \"terragrunt\"],\n Tex: [\"tex\"],\n Text: [\"txt\"],\n Textile: [\"textile\"],\n Toml: [\"toml\"],\n TSX: [\"tsx\"],\n Turtle: [\"ttl\"],\n Twig: [\"twig|swig\"],\n Typescript: [\"ts|mts|cts|typescript|str\"],\n Vala: [\"vala\"],\n VBScript: [\"vbs|vb\"],\n Velocity: [\"vm\"],\n Verilog: [\"v|vh|sv|svh\"],\n VHDL: [\"vhd|vhdl\"],\n Visualforce: [\"vfp|component|page\"],\n Vue: [\"vue\"],\n Wollok: [\"wlk|wpgm|wtest\"],\n XML: [\"xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml\"],\n XQuery: [\"xq\"],\n YAML: [\"yaml|yml\"],\n Zeek: [\"zeek|bro\"],\n Zig: [\"zig\"]\n};\nvar nameOverrides = {\n ObjectiveC: \"Objective-C\",\n CSharp: \"C#\",\n golang: \"Go\",\n C_Cpp: \"C and C++\",\n Csound_Document: \"Csound Document\",\n Csound_Orchestra: \"Csound\",\n Csound_Score: \"Csound Score\",\n coffee: \"CoffeeScript\",\n HTML_Ruby: \"HTML (Ruby)\",\n HTML_Elixir: \"HTML (Elixir)\",\n FTL: \"FreeMarker\",\n PHP_Laravel_blade: \"PHP (Blade Template)\",\n Perl6: \"Perl 6\",\n AutoHotKey: \"AutoHotkey / AutoIt\"\n};\nvar modesByName = {};\nfor (var name in supportedModes) {\n var data = supportedModes[name];\n var displayName = (nameOverrides[name] || name).replace(/_/g, \" \");\n var filename = name.toLowerCase();\n var mode = new Mode(filename, displayName, data[0]);\n modesByName[filename] = mode;\n modes.push(mode);\n}\nmodule.exports = {\n getModeForPath: getModeForPath,\n modes: modes,\n modesByName: modesByName\n};\n\n});\n\nace.define(\"ace/ext/prompt\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/range\",\"ace/lib/dom\",\"ace/autocomplete\",\"ace/autocomplete/popup\",\"ace/autocomplete/popup\",\"ace/undomanager\",\"ace/tokenizer\",\"ace/ext/menu_tools/overlay_page\",\"ace/ext/modelist\"], function(require, exports, module){/**\n * @typedef {import(\"../editor\").Editor} Editor\n */\n\"use strict\";\nvar nls = require(\"../config\").nls;\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar FilteredList = require(\"../autocomplete\").FilteredList;\nvar AcePopup = require('../autocomplete/popup').AcePopup;\nvar $singleLineEditor = require('../autocomplete/popup').$singleLineEditor;\nvar UndoManager = require(\"../undomanager\").UndoManager;\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar overlayPage = require(\"./menu_tools/overlay_page\").overlayPage;\nvar modelist = require(\"./modelist\");\nvar openPrompt;\nfunction prompt(editor, message, options, callback) {\n if (typeof message == \"object\") {\n return prompt(editor, \"\", message, options);\n }\n if (openPrompt) {\n var lastPrompt = openPrompt;\n editor = lastPrompt.editor;\n lastPrompt.close();\n if (lastPrompt.name && lastPrompt.name == options.name)\n return;\n }\n if (options.$type)\n return prompt[options.$type](editor, callback);\n var cmdLine = $singleLineEditor();\n cmdLine.session.setUndoManager(new UndoManager());\n var el = dom.buildDom([\"div\", { class: \"ace_prompt_container\" + (options.hasDescription ? \" input-box-with-description\" : \"\") }]);\n var overlay = overlayPage(editor, el, done);\n el.appendChild(cmdLine.container);\n if (editor) {\n editor.cmdLine = cmdLine;\n cmdLine.setOption(\"fontSize\", editor.getOption(\"fontSize\"));\n }\n if (message) {\n cmdLine.setValue(message, 1);\n }\n if (options.selection) {\n cmdLine.selection.setRange({\n start: cmdLine.session.doc.indexToPosition(options.selection[0]),\n end: cmdLine.session.doc.indexToPosition(options.selection[1])\n });\n }\n if (options.getCompletions) {\n var popup = new AcePopup();\n popup.renderer.setStyle(\"ace_autocomplete_inline\");\n popup.container.style.display = \"block\";\n popup.container.style.maxWidth = \"600px\";\n popup.container.style.width = \"100%\";\n popup.container.style.marginTop = \"3px\";\n popup.renderer.setScrollMargin(2, 2, 0, 0);\n popup.autoSelect = false;\n popup.renderer.$maxLines = 15;\n popup.setRow(-1);\n popup.on(\"click\", function (e) {\n var data = popup.getData(popup.getRow());\n if (!data[\"error\"]) {\n cmdLine.setValue(data.value || data[\"name\"] || data);\n accept();\n e.stop();\n }\n });\n el.appendChild(popup.container);\n updateCompletions();\n }\n if (options.$rules) {\n var tokenizer = new Tokenizer(options.$rules);\n cmdLine.session.bgTokenizer.setTokenizer(tokenizer);\n }\n if (options.placeholder) {\n cmdLine.setOption(\"placeholder\", options.placeholder);\n }\n if (options.hasDescription) {\n var promptTextContainer = dom.buildDom([\"div\", { class: \"ace_prompt_text_container\" }]);\n dom.buildDom(options.prompt || \"Press 'Enter' to confirm or 'Escape' to cancel\", promptTextContainer);\n el.appendChild(promptTextContainer);\n }\n overlay.setIgnoreFocusOut(options.ignoreFocusOut);\n function accept() {\n var val;\n if (popup && popup.getCursorPosition().row > 0) {\n val = valueFromRecentList();\n }\n else {\n val = cmdLine.getValue();\n }\n var curData = popup ? popup.getData(popup.getRow()) : val;\n if (curData && !curData[\"error\"]) {\n done();\n options.onAccept && options.onAccept({\n value: val,\n item: curData\n }, cmdLine);\n }\n }\n var keys = {\n \"Enter\": accept,\n \"Esc|Shift-Esc\": function () {\n options.onCancel && options.onCancel(cmdLine.getValue(), cmdLine);\n done();\n }\n };\n if (popup) {\n Object.assign(keys, {\n \"Up\": function (editor) { popup.goTo(\"up\"); valueFromRecentList(); },\n \"Down\": function (editor) { popup.goTo(\"down\"); valueFromRecentList(); },\n \"Ctrl-Up|Ctrl-Home\": function (editor) { popup.goTo(\"start\"); valueFromRecentList(); },\n \"Ctrl-Down|Ctrl-End\": function (editor) { popup.goTo(\"end\"); valueFromRecentList(); },\n \"Tab\": function (editor) {\n popup.goTo(\"down\");\n valueFromRecentList();\n },\n \"PageUp\": function (editor) { popup.gotoPageUp(); valueFromRecentList(); },\n \"PageDown\": function (editor) { popup.gotoPageDown(); valueFromRecentList(); }\n });\n }\n cmdLine.commands.bindKeys(keys);\n function done() {\n overlay.close();\n callback && callback();\n openPrompt = null;\n }\n cmdLine.on(\"input\", function () {\n options.onInput && options.onInput();\n updateCompletions();\n });\n function updateCompletions() {\n if (options.getCompletions) {\n var prefix;\n if (options.getPrefix) {\n prefix = options.getPrefix(cmdLine);\n }\n var completions = options.getCompletions(cmdLine);\n popup.setData(completions, prefix);\n popup.resize(true);\n }\n }\n function valueFromRecentList() {\n var current = popup.getData(popup.getRow());\n if (current && !current[\"error\"])\n return current.value || current.caption || current;\n }\n cmdLine.resize(true);\n if (popup) {\n popup.resize(true);\n }\n cmdLine.focus();\n openPrompt = {\n close: done,\n name: options.name,\n editor: editor\n };\n}\nprompt.gotoLine = function (editor, callback) {\n function stringifySelection(selection) {\n if (!Array.isArray(selection))\n selection = [selection];\n return selection.map(function (r) {\n var cursor = r.isBackwards ? r.start : r.end;\n var anchor = r.isBackwards ? r.end : r.start;\n var row = anchor.row;\n var s = (row + 1) + \":\" + anchor.column;\n if (anchor.row == cursor.row) {\n if (anchor.column != cursor.column)\n s += \">\" + \":\" + cursor.column;\n }\n else {\n s += \">\" + (cursor.row + 1) + \":\" + cursor.column;\n }\n return s;\n }).reverse().join(\", \");\n }\n prompt(editor, \":\" + stringifySelection(editor.selection.toJSON()), {\n name: \"gotoLine\",\n selection: [1, Number.MAX_VALUE],\n onAccept: function (data) {\n var value = data.value;\n var _history = prompt.gotoLine[\"_history\"];\n if (!_history)\n prompt.gotoLine[\"_history\"] = _history = [];\n if (_history.indexOf(value) != -1)\n _history.splice(_history.indexOf(value), 1);\n _history.unshift(value);\n if (_history.length > 20)\n _history.length = 20;\n var pos = editor.getCursorPosition();\n var ranges = [];\n value.replace(/^:/, \"\").split(/,/).map(function (str) {\n var parts = str.split(/([<>:+-]|c?\\d+)|[^c\\d<>:+-]+/).filter(Boolean);\n var i = 0;\n function readPosition() {\n var c = parts[i++];\n if (!c)\n return;\n if (c[0] == \"c\") {\n var index = parseInt(c.slice(1)) || 0;\n return editor.session.doc.indexToPosition(index);\n }\n var row = pos.row;\n var column = 0;\n if (/\\d/.test(c)) {\n row = parseInt(c) - 1;\n c = parts[i++];\n }\n if (c == \":\") {\n c = parts[i++];\n if (/\\d/.test(c)) {\n column = parseInt(c) || 0;\n }\n }\n return { row: row, column: column };\n }\n pos = readPosition();\n var range = Range.fromPoints(pos, pos);\n if (parts[i] == \">\") {\n i++;\n range.end = readPosition();\n }\n else if (parts[i] == \"<\") {\n i++;\n range.start = readPosition();\n }\n ranges.unshift(range);\n });\n editor.selection.fromJSON(ranges);\n var scrollTop = editor.renderer.scrollTop;\n editor.renderer.scrollSelectionIntoView(editor.selection.anchor, editor.selection.cursor, 0.5);\n editor.renderer.animateScrolling(scrollTop);\n },\n history: function () {\n if (!prompt.gotoLine[\"_history\"])\n return [];\n return prompt.gotoLine[\"_history\"];\n },\n getCompletions: function (cmdLine) {\n var value = cmdLine.getValue();\n var m = value.replace(/^:/, \"\").split(\":\");\n var row = Math.min(parseInt(m[0]) || 1, editor.session.getLength()) - 1;\n var line = editor.session.getLine(row);\n var current = value + \" \" + line;\n return [current].concat(this.history());\n },\n $rules: {\n start: [{\n regex: /\\d+/,\n token: \"string\"\n }, {\n regex: /[:,><+\\-c]/,\n token: \"keyword\"\n }]\n }\n });\n};\nprompt.commands = function (editor, callback) {\n function normalizeName(name) {\n return (name || \"\").replace(/^./, function (x) {\n return x.toUpperCase(x);\n }).replace(/[a-z][A-Z]/g, function (x) {\n return x[0] + \" \" + x[1].toLowerCase(x);\n });\n }\n function getEditorCommandsByName(excludeCommands) {\n var commandsByName = [];\n var commandMap = {};\n editor.keyBinding.$handlers.forEach(function (handler) {\n var platform = handler[\"platform\"];\n var cbn = handler[\"byName\"];\n for (var i in cbn) {\n var key = cbn[i].bindKey;\n if (typeof key !== \"string\") {\n key = key && key[platform] || \"\";\n }\n var commands = cbn[i];\n var description = commands.description || normalizeName(commands.name);\n if (!Array.isArray(commands))\n commands = [commands];\n commands.forEach(function (command) {\n if (typeof command != \"string\")\n command = command.name;\n var needle = excludeCommands.find(function (el) {\n return el === command;\n });\n if (!needle) {\n if (commandMap[command]) {\n commandMap[command].key += \"|\" + key;\n }\n else {\n commandMap[command] = { key: key, command: command, description: description };\n commandsByName.push(commandMap[command]);\n }\n }\n });\n }\n });\n return commandsByName;\n }\n var excludeCommandsList = [\"insertstring\", \"inserttext\", \"setIndentation\", \"paste\"];\n var shortcutsArray = getEditorCommandsByName(excludeCommandsList);\n shortcutsArray = shortcutsArray.map(function (item) {\n return { value: item.description, meta: item.key, command: item.command };\n });\n prompt(editor, \"\", {\n name: \"commands\",\n selection: [0, Number.MAX_VALUE],\n maxHistoryCount: 5,\n onAccept: function (data) {\n if (data.item) {\n var commandName = data.item.command;\n this.addToHistory(data.item);\n editor.execCommand(commandName);\n }\n },\n addToHistory: function (item) {\n var history = this.history();\n history.unshift(item);\n delete item.message;\n for (var i = 1; i < history.length; i++) {\n if (history[i][\"command\"] == item.command) {\n history.splice(i, 1);\n break;\n }\n }\n if (this.maxHistoryCount > 0 && history.length > this.maxHistoryCount) {\n history.splice(history.length - 1, 1);\n }\n prompt.commands[\"history\"] = history;\n },\n history: function () {\n return prompt.commands[\"history\"] || [];\n },\n getPrefix: function (cmdLine) {\n var currentPos = cmdLine.getCursorPosition();\n var filterValue = cmdLine.getValue();\n return filterValue.substring(0, currentPos.column);\n },\n getCompletions: function (cmdLine) {\n function getFilteredCompletions(commands, prefix) {\n var resultCommands = JSON.parse(JSON.stringify(commands));\n var filtered = new FilteredList(resultCommands);\n return filtered.filterCompletions(resultCommands, prefix);\n }\n function getUniqueCommandList(commands, usedCommands) {\n if (!usedCommands || !usedCommands.length) {\n return commands;\n }\n var excludeCommands = [];\n usedCommands.forEach(function (item) {\n excludeCommands.push(item.command);\n });\n var resultCommands = [];\n commands.forEach(function (item) {\n if (excludeCommands.indexOf(item.command) === -1) {\n resultCommands.push(item);\n }\n });\n return resultCommands;\n }\n var prefix = this.getPrefix(cmdLine);\n var recentlyUsedCommands = getFilteredCompletions(this.history(), prefix);\n var otherCommands = getUniqueCommandList(shortcutsArray, recentlyUsedCommands);\n otherCommands = getFilteredCompletions(otherCommands, prefix);\n if (recentlyUsedCommands.length && otherCommands.length) {\n recentlyUsedCommands[0].message = nls(\"Recently used\");\n otherCommands[0].message = nls(\"Other commands\");\n }\n var completions = recentlyUsedCommands.concat(otherCommands);\n return completions.length > 0 ? completions : [{\n value: nls(\"No matching commands\"),\n error: 1\n }];\n }\n });\n};\nprompt.modes = function (editor, callback) {\n var modesArray = modelist.modes;\n modesArray = modesArray.map(function (item) {\n return { value: item.caption, mode: item.name };\n });\n prompt(editor, \"\", {\n name: \"modes\",\n selection: [0, Number.MAX_VALUE],\n onAccept: function (data) {\n if (data.item) {\n var modeName = \"ace/mode/\" + data.item.mode;\n editor.session.setMode(modeName);\n }\n },\n getPrefix: function (cmdLine) {\n var currentPos = cmdLine.getCursorPosition();\n var filterValue = cmdLine.getValue();\n return filterValue.substring(0, currentPos.column);\n },\n getCompletions: function (cmdLine) {\n function getFilteredCompletions(modes, prefix) {\n var resultCommands = JSON.parse(JSON.stringify(modes));\n var filtered = new FilteredList(resultCommands);\n return filtered.filterCompletions(resultCommands, prefix);\n }\n var prefix = this.getPrefix(cmdLine);\n var completions = getFilteredCompletions(modesArray, prefix);\n return completions.length > 0 ? completions : [{\n \"caption\": \"No mode matching\",\n \"value\": \"No mode matching\",\n \"error\": 1\n }];\n }\n });\n};\ndom.importCssString(\".ace_prompt_container {\\n max-width: 603px;\\n width: 100%;\\n margin: 20px auto;\\n padding: 3px;\\n background: white;\\n border-radius: 2px;\\n box-shadow: 0px 2px 3px 0px #555;\\n}\", \"promtp.css\", false);\nexports.prompt = prompt;\n\n}); (function() {\n ace.require([\"ace/ext/prompt\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"mappings":"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","names":["require_b17c9c857280ad767bbcaf6728eb4fb1","__commonJSMin","exports","module","require","Renderer","Editor","Range","event","lang","dom","nls","userAgent","getAriaId","index","popupAriaRole","optionAriaRole","ariaActiveState","$singleLineEditor","el","renderer","editor","AcePopup","parentNode","popup","noop","e","pos","selectionMarker","lastMouseEvent","hoverMarker","val","row","setHoverMarker","t","selected","ariaId","hideHoverMarker","suppressRedraw","i","data","bgTokenizer","tokens","caption","addToken","value","className","lower","filterText","lastIndex","lastI","sub","list","line","lineHeight","anchor","forceShow","screenHeight","screenWidth","maxH","dims","spaceBelow","spaceAbove","fitsX","left","topdownOnly","where","max","oop","EventEmitter","RangeList","HashHandler","Tokenizer","clipboard","VARIABLES","name","indentation","text","mode","date","dateFormat","str","SnippetManager","TabstopToken","escape","ch","formatMatcher","state","stack","ts","choices","operator","next","token","startState","x","flag","re","fmtTokens","_self","formatted","oldArgs","fmtParts","gChangeCase","snippet","result","afterNewLine","j","gotoNext","i1","snippetText","processedSnippet","processSnippetText","options","range","end","tabstopManager","TabstopManager","selectionId","self","scope","c","scopes","snippetMap","cursor","before","after","snippets","snippetList","s","snippetNameMap","wrapRegexp","src","guardedRegexp","guard","opening","addSnippet","map","old","key","removeSnippet","nameMap","m","guardRe","tabString","indentString","tabstops","p","id","isNested","expanding","copyValue","copy","parentId","column","lines","delta","isRemove","selectedTabstop","parents","active","parentActive","startIndex","endIndex","toRemove","session","original","fmt","lead","isEmpty","containsLead","containsAnchor","dir","sel","start","useLink","moveRelative","arg","ranges","snippetId","dest","movePoint","currentSnippetId","point","diff","content","AceInlineScreenReader","idString","lineIndex","codeElement","container","snippetManager","AceInline","completion","prefix","displayText","array","fn","callback","completed","arLength","err","ID_REGEX","regex","buf","completer","identifierRegex","previousChar","util","config","preventParentScroll","destroyCompleter","Autocomplete","initialPosition","FilteredList","hide","cursorColumn","inlineEnabled","elements","_this","rect","posGhostText","editorContainerBottom","lowestPosition","keepPopupPosition","oldRow","previousSelectedItem","newRow","fromTooltip","completions","CompletionProvider","completionOptions","finished","filtered","emptyMessage","completionsForEmpty","all","doc","completersLength","item","theme","tooltipNode","a","replaceBefore","replaceAfter","matches","total","results","processResults","isImmediate","immediateResults","b","prev","items","needle","upper","loop","matchMask","penalty","distance","fullMatchIndex","i2","cssText","contentElement","closer","ignoreFocusOut","documentEscListener","close","setIgnoreFocusOut","ignore","modes","getModeForPath","path","modesByName","fileName","Mode","extensions","filename","supportedModes","nameOverrides","displayName","UndoManager","overlayPage","modelist","openPrompt","prompt","message","lastPrompt","cmdLine","overlay","done","accept","updateCompletions","tokenizer","promptTextContainer","valueFromRecentList","curData","keys","current","stringifySelection","selection","r","_history","parts","readPosition","scrollTop","normalizeName","getEditorCommandsByName","excludeCommands","commandsByName","commandMap","handler","platform","cbn","commands","description","command","excludeCommandsList","shortcutsArray","commandName","history","currentPos","filterValue","getFilteredCompletions","resultCommands","getUniqueCommandList","usedCommands","recentlyUsedCommands","otherCommands","modesArray","modeName"],"sourceRoot":"","file":"b17c9c857280ad767bbcaf6728eb4fb1.js"}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy