ext-inline_autocomplete-4ec6fe06.js.map 207 KB

1
  1. {"version":3,"file":"ext-inline_autocomplete-4ec6fe06.js","sources":["../../node_modules/ace-builds/src-noconflict/ext-inline_autocomplete.js"],"sourcesContent":["ace.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 if (options.range && options.range.compareRange(range) === 0) {\n range = options.range;\n }\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 (options.range && !(options.range instanceof Range))\n options.range = Range.fromPoints(options.range.start, options.range.end);\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 = [], 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 if (index === 0)\n this.detach();\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 tabstops.forEach(function (ts, index) {\n var dest = this.$openTabstops[index] || ts;\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.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\",[\"require\",\"exports\",\"module\",\"ace/snippets\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\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 }\n if (!editor || !completion) {\n return false;\n }\n var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value;\n if (!displayText || !displayText.startsWith(prefix)) {\n return false;\n }\n this.editor = editor;\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 };\n return AceInline;\n}());\nexports.AceInline = AceInline;\n\n});\n\nace.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\"], 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 getAriaId = function (index) {\n return \"suggest-aria-id:\".concat(index);\n};\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 = new $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.container.setAttribute(\"role\", \"listbox\");\n popup.renderer.container.setAttribute(\"aria-label\", nls(\"Autocomplete suggestions\"));\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 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 = t.element.childNodes[row - t.config.firstRow];\n var el = document.activeElement; // Active element is textarea of main editor\n if (selected !== t.selectedNode && t.selectedNode) {\n dom.removeCssClass(t.selectedNode, \"ace_selected\");\n el.removeAttribute(\"aria-activedescendant\");\n t.selectedNode.removeAttribute(\"id\");\n }\n t.selectedNode = selected;\n if (selected) {\n dom.addCssClass(selected, \"ace_selected\");\n var ariaId = getAriaId(row);\n selected.id = ariaId;\n popup.renderer.container.setAttribute(\"aria-activedescendant\", ariaId);\n el.setAttribute(\"aria-activedescendant\", ariaId);\n selected.setAttribute(\"role\", \"option\");\n selected.setAttribute(\"aria-label\", popup.getData(row).value);\n selected.setAttribute(\"aria-setsize\", popup.data.length);\n selected.setAttribute(\"aria-posinset\", row);\n selected.setAttribute(\"aria-describedby\", \"doc-tooltip\");\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\", hideHoverMarker);\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.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 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\", \"autocompletion.css\", false);\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\nexports.getAriaId = getAriaId;\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\"], 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 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.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 }\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.$onPopupChange.bind(this));\n this.popup.on(\"hide\", this.$onHidePopup.bind(this));\n this.popup.on(\"select\", this.$onPopupChange.bind(this));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\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 };\n Autocomplete.prototype.$onPopupChange = function (hide) {\n if (this.inlineRenderer && this.inlineEnabled) {\n var completion = hide ? null : this.popup.getData(this.popup.getRow());\n var prefix = util.getCompletionPrefix(this.editor);\n if (!this.inlineRenderer.show(this.editor, completion, prefix)) {\n this.inlineRenderer.hide();\n }\n this.$updatePopupPosition();\n }\n this.tooltipTimer.call(null, null);\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 if (this.popup.tryShow(posGhostText, 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 if (!this.popup)\n this.$init();\n if (this.inlineEnabled && !this.inlineRenderer)\n this.$initInline();\n this.popup.autoSelect = this.autoSelect;\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 this.popup.setRow(this.autoSelect ? 0 : -1);\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.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.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 this.detach();\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 () {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider();\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 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 = { exactMatch: this.exactMatch };\n this.getCompletionProvider().provideCompletions(this.editor, completionOptions, function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\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: this.emptyMessage(prefix),\n value: \"\"\n }];\n this.completions = new FilteredList(completionsForEmpty);\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n return this.detach();\n }\n if (filtered.length == 1 && filtered[0].value == prefix && !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 = completions;\n this.openPopup(this.editor, prefix, keepPopupPosition);\n }.bind(this));\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 = popup.data;\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.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 }\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() {\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 if (this.completions.filterText) {\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 -= this.completions.filterText.length;\n editor.session.remove(range);\n }\n }\n if (data.snippet)\n snippetManager.insertSnippet(editor, data.snippet, { range: data.range });\n else {\n this.$insertString(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 if (data.range) {\n if (editor.inVirtualSelectionMode) {\n return editor.session.replace(data.range, text);\n }\n editor.forEachSelection(function () {\n var range = editor.getSelectionRange();\n if (data.range.compareRange(range) === 0) {\n editor.session.replace(data.range, text);\n }\n else {\n editor.insert(text);\n }\n }, null, { keepOrder: true });\n }\n else {\n editor.execCommand(\"insertstring\", text);\n }\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 (!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/command_bar\",[\"require\",\"exports\",\"module\",\"ace/tooltip\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/useragent\"], function(require, exports, module){var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar useragent = require(\"../lib/useragent\");\nvar BUTTON_CLASS_NAME = 'command_bar_tooltip_button';\nvar VALUE_CLASS_NAME = 'command_bar_button_value';\nvar CAPTION_CLASS_NAME = 'command_bar_button_caption';\nvar KEYBINDING_CLASS_NAME = 'command_bar_keybinding';\nvar TOOLTIP_CLASS_NAME = 'command_bar_tooltip';\nvar MORE_OPTIONS_BUTTON_ID = 'MoreOptionsButton';\nvar defaultDelay = 100;\nvar defaultMaxElements = 4;\nvar minPosition = function (posA, posB) {\n if (posB.row > posA.row) {\n return posA;\n }\n else if (posB.row === posA.row && posB.column > posA.column) {\n return posA;\n }\n return posB;\n};\nvar keyDisplayMap = {\n \"Ctrl\": { mac: \"^\" },\n \"Option\": { mac: \"⌥\" },\n \"Command\": { mac: \"⌘\" },\n \"Cmd\": { mac: \"⌘\" },\n \"Shift\": \"⇧\",\n \"Left\": \"←\",\n \"Right\": \"→\",\n \"Up\": \"↑\",\n \"Down\": \"↓\"\n};\nvar CommandBarTooltip = /** @class */ (function () {\n function CommandBarTooltip(parentNode, options) {\n var e_1, _a;\n options = options || {};\n this.parentNode = parentNode;\n this.tooltip = new Tooltip(this.parentNode);\n this.moreOptions = new Tooltip(this.parentNode);\n this.maxElementsOnTooltip = options.maxElementsOnTooltip || defaultMaxElements;\n this.$alwaysShow = options.alwaysShow || false;\n this.eventListeners = {};\n this.elements = {};\n this.commands = {};\n this.tooltipEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME }], this.tooltip.getElement());\n this.moreOptionsEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME + \" tooltip_more_options\" }], this.moreOptions.getElement());\n this.$showTooltipTimer = lang.delayedCall(this.$showTooltip.bind(this), options.showDelay || defaultDelay);\n this.$hideTooltipTimer = lang.delayedCall(this.$hideTooltip.bind(this), options.hideDelay || defaultDelay);\n this.$tooltipEnter = this.$tooltipEnter.bind(this);\n this.$onMouseMove = this.$onMouseMove.bind(this);\n this.$onChangeScroll = this.$onChangeScroll.bind(this);\n this.$onEditorChangeSession = this.$onEditorChangeSession.bind(this);\n this.$scheduleTooltipForHide = this.$scheduleTooltipForHide.bind(this);\n this.$preventMouseEvent = this.$preventMouseEvent.bind(this);\n try {\n for (var _b = __values([\"mousedown\", \"mouseup\", \"click\"]), _c = _b.next(); !_c.done; _c = _b.next()) {\n var event = _c.value;\n this.tooltip.getElement().addEventListener(event, this.$preventMouseEvent);\n this.moreOptions.getElement().addEventListener(event, this.$preventMouseEvent);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n CommandBarTooltip.prototype.registerCommand = function (id, command) {\n var registerForMainTooltip = Object.keys(this.commands).length < this.maxElementsOnTooltip;\n if (!registerForMainTooltip && !this.elements[MORE_OPTIONS_BUTTON_ID]) {\n this.$createCommand(MORE_OPTIONS_BUTTON_ID, {\n name: \"···\",\n exec: function () {\n this.$shouldHideMoreOptions = false;\n this.$setMoreOptionsVisibility(!this.isMoreOptionsShown());\n }.bind(this),\n type: \"checkbox\",\n getValue: function () {\n return this.isMoreOptionsShown();\n }.bind(this),\n enabled: true\n }, true);\n }\n this.$createCommand(id, command, registerForMainTooltip);\n if (this.isShown()) {\n this.updatePosition();\n }\n };\n CommandBarTooltip.prototype.isShown = function () {\n return !!this.tooltip && this.tooltip.isOpen;\n };\n CommandBarTooltip.prototype.isMoreOptionsShown = function () {\n return !!this.moreOptions && this.moreOptions.isOpen;\n };\n CommandBarTooltip.prototype.getAlwaysShow = function () {\n return this.$alwaysShow;\n };\n CommandBarTooltip.prototype.setAlwaysShow = function (alwaysShow) {\n this.$alwaysShow = alwaysShow;\n this.$updateOnHoverHandlers(!this.$alwaysShow);\n this._signal(\"alwaysShow\", this.$alwaysShow);\n };\n CommandBarTooltip.prototype.attach = function (editor) {\n if (!editor || (this.isShown() && this.editor === editor)) {\n return;\n }\n this.detach();\n this.editor = editor;\n this.editor.on(\"changeSession\", this.$onEditorChangeSession);\n if (this.editor.session) {\n this.editor.session.on(\"changeScrollLeft\", this.$onChangeScroll);\n this.editor.session.on(\"changeScrollTop\", this.$onChangeScroll);\n }\n if (this.getAlwaysShow()) {\n this.$showTooltip();\n }\n else {\n this.$updateOnHoverHandlers(true);\n }\n };\n CommandBarTooltip.prototype.updatePosition = function () {\n if (!this.editor) {\n return;\n }\n var renderer = this.editor.renderer;\n var ranges;\n if (this.editor.selection.getAllRanges) {\n ranges = this.editor.selection.getAllRanges();\n }\n else {\n ranges = [this.editor.getSelectionRange()];\n }\n if (!ranges.length) {\n return;\n }\n var minPos = minPosition(ranges[0].start, ranges[0].end);\n for (var i = 0, range; range = ranges[i]; i++) {\n minPos = minPosition(minPos, minPosition(range.start, range.end));\n }\n var pos = renderer.$cursorLayer.getPixelPosition(minPos, true);\n var tooltipEl = this.tooltip.getElement();\n var screenWidth = window.innerWidth;\n var screenHeight = window.innerHeight;\n var rect = this.editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left + renderer.gutterWidth - renderer.scrollLeft;\n var cursorVisible = pos.top >= rect.top && pos.top <= rect.bottom &&\n pos.left >= rect.left + renderer.gutterWidth && pos.left <= rect.right;\n if (!cursorVisible && this.isShown()) {\n this.$hideTooltip();\n return;\n }\n else if (cursorVisible && !this.isShown() && this.getAlwaysShow()) {\n this.$showTooltip();\n return;\n }\n var top = pos.top - tooltipEl.offsetHeight;\n var left = Math.min(screenWidth - tooltipEl.offsetWidth, pos.left);\n var tooltipFits = top >= 0 && top + tooltipEl.offsetHeight <= screenHeight &&\n left >= 0 && left + tooltipEl.offsetWidth <= screenWidth;\n if (!tooltipFits) {\n this.$hideTooltip();\n return;\n }\n this.tooltip.setPosition(left, top);\n if (this.isMoreOptionsShown()) {\n top = top + tooltipEl.offsetHeight;\n left = this.elements[MORE_OPTIONS_BUTTON_ID].getBoundingClientRect().left;\n var moreOptionsEl = this.moreOptions.getElement();\n var screenHeight = window.innerHeight;\n if (top + moreOptionsEl.offsetHeight > screenHeight) {\n top -= tooltipEl.offsetHeight + moreOptionsEl.offsetHeight;\n }\n if (left + moreOptionsEl.offsetWidth > screenWidth) {\n left = screenWidth - moreOptionsEl.offsetWidth;\n }\n this.moreOptions.setPosition(left, top);\n }\n };\n CommandBarTooltip.prototype.update = function () {\n Object.keys(this.elements).forEach(this.$updateElement.bind(this));\n };\n CommandBarTooltip.prototype.detach = function () {\n this.tooltip.hide();\n this.moreOptions.hide();\n this.$updateOnHoverHandlers(false);\n if (this.editor) {\n this.editor.off(\"changeSession\", this.$onEditorChangeSession);\n if (this.editor.session) {\n this.editor.session.off(\"changeScrollLeft\", this.$onChangeScroll);\n this.editor.session.off(\"changeScrollTop\", this.$onChangeScroll);\n }\n }\n this.$mouseInTooltip = false;\n this.editor = null;\n };\n CommandBarTooltip.prototype.destroy = function () {\n if (this.tooltip && this.moreOptions) {\n this.detach();\n this.tooltip.destroy();\n this.moreOptions.destroy();\n }\n this.eventListeners = {};\n this.commands = {};\n this.elements = {};\n this.tooltip = this.moreOptions = this.parentNode = null;\n };\n CommandBarTooltip.prototype.$createCommand = function (id, command, forMainTooltip) {\n var parentEl = forMainTooltip ? this.tooltipEl : this.moreOptionsEl;\n var keyParts = [];\n var bindKey = command.bindKey;\n if (bindKey) {\n if (typeof bindKey === 'object') {\n bindKey = useragent.isMac ? bindKey.mac : bindKey.win;\n }\n bindKey = bindKey.split(\"|\")[0];\n keyParts = bindKey.split(\"-\");\n keyParts = keyParts.map(function (key) {\n if (keyDisplayMap[key]) {\n if (typeof keyDisplayMap[key] === 'string') {\n return keyDisplayMap[key];\n }\n else if (useragent.isMac && keyDisplayMap[key].mac) {\n return keyDisplayMap[key].mac;\n }\n }\n return key;\n });\n }\n var buttonNode;\n if (forMainTooltip && command.iconCssClass) {\n buttonNode = [\n 'div',\n {\n class: [\"ace_icon_svg\", command.iconCssClass].join(\" \"),\n \"aria-label\": command.name + \" (\" + command.bindKey + \")\"\n }\n ];\n }\n else {\n buttonNode = [\n ['div', { class: VALUE_CLASS_NAME }],\n ['div', { class: CAPTION_CLASS_NAME }, command.name]\n ];\n if (keyParts.length) {\n buttonNode.push([\n 'div',\n { class: KEYBINDING_CLASS_NAME },\n keyParts.map(function (keyPart) {\n return ['div', keyPart];\n })\n ]);\n }\n }\n dom.buildDom(['div', { class: [BUTTON_CLASS_NAME, command.cssClass || \"\"].join(\" \"), ref: id }, buttonNode], parentEl, this.elements);\n this.commands[id] = command;\n var eventListener = function (e) {\n if (this.editor) {\n this.editor.focus();\n }\n this.$shouldHideMoreOptions = this.isMoreOptionsShown();\n if (!this.elements[id].disabled && command.exec) {\n command.exec(this.editor);\n }\n if (this.$shouldHideMoreOptions) {\n this.$setMoreOptionsVisibility(false);\n }\n this.update();\n e.preventDefault();\n }.bind(this);\n this.eventListeners[id] = eventListener;\n this.elements[id].addEventListener('click', eventListener.bind(this));\n this.$updateElement(id);\n };\n CommandBarTooltip.prototype.$setMoreOptionsVisibility = function (visible) {\n if (visible) {\n this.moreOptions.setTheme(this.editor.renderer.theme);\n this.moreOptions.setClassName(TOOLTIP_CLASS_NAME + \"_wrapper\");\n this.moreOptions.show();\n this.update();\n this.updatePosition();\n }\n else {\n this.moreOptions.hide();\n }\n };\n CommandBarTooltip.prototype.$onEditorChangeSession = function (e) {\n if (e.oldSession) {\n e.oldSession.off(\"changeScrollTop\", this.$onChangeScroll);\n e.oldSession.off(\"changeScrollLeft\", this.$onChangeScroll);\n }\n this.detach();\n };\n CommandBarTooltip.prototype.$onChangeScroll = function () {\n if (this.editor.renderer && (this.isShown() || this.getAlwaysShow())) {\n this.editor.renderer.once(\"afterRender\", this.updatePosition.bind(this));\n }\n };\n CommandBarTooltip.prototype.$onMouseMove = function (e) {\n if (this.$mouseInTooltip) {\n return;\n }\n var cursorPosition = this.editor.getCursorPosition();\n var cursorScreenPosition = this.editor.renderer.textToScreenCoordinates(cursorPosition.row, cursorPosition.column);\n var lineHeight = this.editor.renderer.lineHeight;\n var isInCurrentLine = e.clientY >= cursorScreenPosition.pageY && e.clientY < cursorScreenPosition.pageY + lineHeight;\n if (isInCurrentLine) {\n if (!this.isShown() && !this.$showTooltipTimer.isPending()) {\n this.$showTooltipTimer.delay();\n }\n if (this.$hideTooltipTimer.isPending()) {\n this.$hideTooltipTimer.cancel();\n }\n }\n else {\n if (this.isShown() && !this.$hideTooltipTimer.isPending()) {\n this.$hideTooltipTimer.delay();\n }\n if (this.$showTooltipTimer.isPending()) {\n this.$showTooltipTimer.cancel();\n }\n }\n };\n CommandBarTooltip.prototype.$preventMouseEvent = function (e) {\n if (this.editor) {\n this.editor.focus();\n }\n e.preventDefault();\n };\n CommandBarTooltip.prototype.$scheduleTooltipForHide = function () {\n this.$mouseInTooltip = false;\n this.$showTooltipTimer.cancel();\n this.$hideTooltipTimer.delay();\n };\n CommandBarTooltip.prototype.$tooltipEnter = function () {\n this.$mouseInTooltip = true;\n if (this.$showTooltipTimer.isPending()) {\n this.$showTooltipTimer.cancel();\n }\n if (this.$hideTooltipTimer.isPending()) {\n this.$hideTooltipTimer.cancel();\n }\n };\n CommandBarTooltip.prototype.$updateOnHoverHandlers = function (enableHover) {\n var tooltipEl = this.tooltip.getElement();\n var moreOptionsEl = this.moreOptions.getElement();\n if (enableHover) {\n if (this.editor) {\n this.editor.on(\"mousemove\", this.$onMouseMove);\n this.editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.$scheduleTooltipForHide, true);\n }\n tooltipEl.addEventListener('mouseenter', this.$tooltipEnter);\n tooltipEl.addEventListener('mouseleave', this.$scheduleTooltipForHide);\n moreOptionsEl.addEventListener('mouseenter', this.$tooltipEnter);\n moreOptionsEl.addEventListener('mouseleave', this.$scheduleTooltipForHide);\n }\n else {\n if (this.editor) {\n this.editor.off(\"mousemove\", this.$onMouseMove);\n this.editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.$scheduleTooltipForHide, true);\n }\n tooltipEl.removeEventListener('mouseenter', this.$tooltipEnter);\n tooltipEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide);\n moreOptionsEl.removeEventListener('mouseenter', this.$tooltipEnter);\n moreOptionsEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide);\n }\n };\n CommandBarTooltip.prototype.$showTooltip = function () {\n if (this.isShown()) {\n return;\n }\n this.tooltip.setTheme(this.editor.renderer.theme);\n this.tooltip.setClassName(TOOLTIP_CLASS_NAME + \"_wrapper\");\n this.tooltip.show();\n this.update();\n this.updatePosition();\n this._signal(\"show\");\n };\n CommandBarTooltip.prototype.$hideTooltip = function () {\n this.$mouseInTooltip = false;\n if (!this.isShown()) {\n return;\n }\n this.moreOptions.hide();\n this.tooltip.hide();\n this._signal(\"hide\");\n };\n CommandBarTooltip.prototype.$updateElement = function (id) {\n var command = this.commands[id];\n if (!command) {\n return;\n }\n var el = this.elements[id];\n var commandEnabled = command.enabled;\n if (typeof commandEnabled === 'function') {\n commandEnabled = commandEnabled(this.editor);\n }\n if (typeof command.getValue === 'function') {\n var value = command.getValue(this.editor);\n if (command.type === 'text') {\n el.textContent = value;\n }\n else if (command.type === 'checkbox') {\n var domCssFn = value ? dom.addCssClass : dom.removeCssClass;\n var isOnTooltip = el.parentElement === this.tooltipEl;\n el.ariaChecked = value;\n if (isOnTooltip) {\n domCssFn(el, \"ace_selected\");\n }\n else {\n el = el.querySelector(\".\" + VALUE_CLASS_NAME);\n domCssFn(el, \"ace_checkmark\");\n }\n }\n }\n if (commandEnabled && el.disabled) {\n dom.removeCssClass(el, \"ace_disabled\");\n el.ariaDisabled = el.disabled = false;\n el.removeAttribute(\"disabled\");\n }\n else if (!commandEnabled && !el.disabled) {\n dom.addCssClass(el, \"ace_disabled\");\n el.ariaDisabled = el.disabled = true;\n el.setAttribute(\"disabled\", \"\");\n }\n };\n return CommandBarTooltip;\n}());\noop.implement(CommandBarTooltip.prototype, EventEmitter);\ndom.importCssString(\"\\n.ace_tooltip.\".concat(TOOLTIP_CLASS_NAME, \"_wrapper {\\n padding: 0;\\n}\\n\\n.ace_tooltip .\").concat(TOOLTIP_CLASS_NAME, \" {\\n padding: 1px 5px;\\n display: flex;\\n pointer-events: auto;\\n}\\n\\n.ace_tooltip .\").concat(TOOLTIP_CLASS_NAME, \".tooltip_more_options {\\n padding: 1px;\\n flex-direction: column;\\n}\\n\\ndiv.\").concat(BUTTON_CLASS_NAME, \" {\\n display: inline-flex;\\n cursor: pointer;\\n margin: 1px;\\n border-radius: 2px;\\n padding: 2px 5px;\\n align-items: center;\\n}\\n\\ndiv.\").concat(BUTTON_CLASS_NAME, \".ace_selected,\\ndiv.\").concat(BUTTON_CLASS_NAME, \":hover:not(.ace_disabled) {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n\\ndiv.\").concat(BUTTON_CLASS_NAME, \".ace_disabled {\\n color: #777;\\n pointer-events: none;\\n}\\n\\ndiv.\").concat(BUTTON_CLASS_NAME, \" .ace_icon_svg {\\n height: 12px;\\n background-color: #000;\\n}\\n\\ndiv.\").concat(BUTTON_CLASS_NAME, \".ace_disabled .ace_icon_svg {\\n background-color: #777;\\n}\\n\\n.\").concat(TOOLTIP_CLASS_NAME, \".tooltip_more_options .\").concat(BUTTON_CLASS_NAME, \" {\\n display: flex;\\n}\\n\\n.\").concat(TOOLTIP_CLASS_NAME, \".\").concat(VALUE_CLASS_NAME, \" {\\n display: none;\\n}\\n\\n.\").concat(TOOLTIP_CLASS_NAME, \".tooltip_more_options .\").concat(VALUE_CLASS_NAME, \" {\\n display: inline-block;\\n width: 12px;\\n}\\n\\n.\").concat(CAPTION_CLASS_NAME, \" {\\n display: inline-block;\\n}\\n\\n.\").concat(KEYBINDING_CLASS_NAME, \" {\\n margin: 0 2px;\\n display: inline-block;\\n font-size: 8px;\\n}\\n\\n.\").concat(TOOLTIP_CLASS_NAME, \".tooltip_more_options .\").concat(KEYBINDING_CLASS_NAME, \" {\\n margin-left: auto;\\n}\\n\\n.\").concat(KEYBINDING_CLASS_NAME, \" div {\\n display: inline-block;\\n min-width: 8px;\\n padding: 2px;\\n margin: 0 1px;\\n border-radius: 2px;\\n background-color: #ccc;\\n text-align: center;\\n}\\n\\n.ace_dark.ace_tooltip .\").concat(TOOLTIP_CLASS_NAME, \" {\\n background-color: #373737;\\n color: #eee;\\n}\\n\\n.ace_dark div.\").concat(BUTTON_CLASS_NAME, \".ace_disabled {\\n color: #979797;\\n}\\n\\n.ace_dark div.\").concat(BUTTON_CLASS_NAME, \".ace_selected,\\n.ace_dark div.\").concat(BUTTON_CLASS_NAME, \":hover:not(.ace_disabled) {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n\\n.ace_dark div.\").concat(BUTTON_CLASS_NAME, \" .ace_icon_svg {\\n background-color: #eee;\\n}\\n\\n.ace_dark div.\").concat(BUTTON_CLASS_NAME, \".ace_disabled .ace_icon_svg {\\n background-color: #979797;\\n}\\n\\n.ace_dark .\").concat(BUTTON_CLASS_NAME, \".ace_disabled {\\n color: #979797;\\n}\\n\\n.ace_dark .\").concat(KEYBINDING_CLASS_NAME, \" div {\\n background-color: #575757;\\n}\\n\\n.ace_checkmark::before {\\n content: '\\u2713';\\n}\\n\"), \"commandbar.css\", false);\nexports.CommandBarTooltip = CommandBarTooltip;\nexports.TOOLTIP_CLASS_NAME = TOOLTIP_CLASS_NAME;\nexports.BUTTON_CLASS_NAME = BUTTON_CLASS_NAME;\n\n});\n\nace.define(\"ace/autocomplete/text_completer\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){var Range = require(\"../range\").Range;\nvar splitRegex = /[^a-zA-Z_0-9\\$\\-\\u00C0-\\u1FFF\\u2C00-\\uD7FF\\w]+/;\nfunction getWordIndex(doc, pos) {\n var textBefore = doc.getTextRange(Range.fromPoints({\n row: 0,\n column: 0\n }, pos));\n return textBefore.split(splitRegex).length - 1;\n}\nfunction wordDistance(doc, pos) {\n var prefixPos = getWordIndex(doc, pos);\n var words = doc.getValue().split(splitRegex);\n var wordScores = Object.create(null);\n var currentWord = words[prefixPos];\n words.forEach(function (word, idx) {\n if (!word || word === currentWord)\n return;\n var distance = Math.abs(prefixPos - idx);\n var score = words.length - distance;\n if (wordScores[word]) {\n wordScores[word] = Math.max(score, wordScores[word]);\n }\n else {\n wordScores[word] = score;\n }\n });\n return wordScores;\n}\nexports.getCompletions = function (editor, session, pos, prefix, callback) {\n var wordScore = wordDistance(session, pos);\n var wordList = Object.keys(wordScore);\n callback(null, wordList.map(function (word) {\n return {\n caption: word,\n value: word,\n score: wordScore[word],\n meta: \"local\"\n };\n }));\n};\n\n});\n\nace.define(\"ace/ext/language_tools\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete\",\"ace/config\",\"ace/lib/lang\",\"ace/autocomplete/util\",\"ace/autocomplete/text_completer\",\"ace/editor\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar Autocomplete = require(\"../autocomplete\").Autocomplete;\nvar config = require(\"../config\");\nvar lang = require(\"../lib/lang\");\nvar util = require(\"../autocomplete/util\");\nvar textCompleter = require(\"../autocomplete/text_completer\");\nvar keyWordCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n if (session.$mode.completer) {\n return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);\n }\n var state = editor.session.getState(pos.row);\n var completions = session.$mode.getCompletions(state, session, pos, prefix);\n completions = completions.map(function (el) {\n el.completerId = keyWordCompleter.id;\n return el;\n });\n callback(null, completions);\n },\n id: \"keywordCompleter\"\n};\nvar transformSnippetTooltip = function (str) {\n var record = {};\n return str.replace(/\\${(\\d+)(:(.*?))?}/g, function (_, p1, p2, p3) {\n return (record[p1] = p3 || '');\n }).replace(/\\$(\\d+?)/g, function (_, p1) {\n return record[p1];\n });\n};\nvar snippetCompleter = {\n getCompletions: function (editor, session, pos, prefix, callback) {\n var scopes = [];\n var token = session.getTokenAt(pos.row, pos.column);\n if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\\.xml$/))\n scopes.push('html-tag');\n else\n scopes = snippetManager.getActiveScopes(editor);\n var snippetMap = snippetManager.snippetMap;\n var completions = [];\n scopes.forEach(function (scope) {\n var snippets = snippetMap[scope] || [];\n for (var i = snippets.length; i--;) {\n var s = snippets[i];\n var caption = s.name || s.tabTrigger;\n if (!caption)\n continue;\n completions.push({\n caption: caption,\n snippet: s.content,\n meta: s.tabTrigger && !s.name ? s.tabTrigger + \"\\u21E5 \" : \"snippet\",\n completerId: snippetCompleter.id\n });\n }\n }, this);\n callback(null, completions);\n },\n getDocTooltip: function (item) {\n if (item.snippet && !item.docHTML) {\n item.docHTML = [\n \"<b>\", lang.escapeHTML(item.caption), \"</b>\", \"<hr></hr>\",\n lang.escapeHTML(transformSnippetTooltip(item.snippet))\n ].join(\"\");\n }\n },\n id: \"snippetCompleter\"\n};\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nexports.setCompleters = function (val) {\n completers.length = 0;\n if (val)\n completers.push.apply(completers, val);\n};\nexports.addCompleter = function (completer) {\n completers.push(completer);\n};\nexports.textCompleter = textCompleter;\nexports.keyWordCompleter = keyWordCompleter;\nexports.snippetCompleter = snippetCompleter;\nvar expandSnippet = {\n name: \"expandSnippet\",\n exec: function (editor) {\n return snippetManager.expandWithTab(editor);\n },\n bindKey: \"Tab\"\n};\nvar onChangeMode = function (e, editor) {\n loadSnippetsForMode(editor.session.$mode);\n};\nvar loadSnippetsForMode = function (mode) {\n if (typeof mode == \"string\")\n mode = config.$modes[mode];\n if (!mode)\n return;\n if (!snippetManager.files)\n snippetManager.files = {};\n loadSnippetFile(mode.$id, mode.snippetFileId);\n if (mode.modes)\n mode.modes.forEach(loadSnippetsForMode);\n};\nvar loadSnippetFile = function (id, snippetFilePath) {\n if (!snippetFilePath || !id || snippetManager.files[id])\n return;\n snippetManager.files[id] = {};\n config.loadModule(snippetFilePath, function (m) {\n if (!m)\n return;\n snippetManager.files[id] = m;\n if (!m.snippets && m.snippetText)\n m.snippets = snippetManager.parseSnippetFile(m.snippetText);\n snippetManager.register(m.snippets || [], m.scope);\n if (m.includeScopes) {\n snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;\n m.includeScopes.forEach(function (x) {\n loadSnippetsForMode(\"ace/mode/\" + x);\n });\n }\n });\n};\nvar doLiveAutocomplete = function (e) {\n var editor = e.editor;\n var hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === \"backspace\") {\n if (hasCompleter && !util.getCompletionPrefix(editor))\n editor.completer.detach();\n }\n else if (e.command.name === \"insertstring\" && !hasCompleter) {\n lastExecEvent = e;\n var delay = e.editor.$liveAutocompletionDelay;\n if (delay) {\n liveAutocompleteTimer.delay(delay);\n }\n else {\n showLiveAutocomplete(e);\n }\n }\n};\nvar lastExecEvent;\nvar liveAutocompleteTimer = lang.delayedCall(function () {\n showLiveAutocomplete(lastExecEvent);\n}, 0);\nvar showLiveAutocomplete = function (e) {\n var editor = e.editor;\n var prefix = util.getCompletionPrefix(editor);\n var triggerAutocomplete = util.triggerAutocomplete(editor);\n if ((prefix || triggerAutocomplete) && prefix.length >= editor.$liveAutocompletionThreshold) {\n var completer = Autocomplete.for(editor);\n completer.autoShown = true;\n completer.showPopup(editor);\n }\n};\nvar Editor = require(\"../editor\").Editor;\nrequire(\"../config\").defineOptions(Editor.prototype, \"editor\", {\n enableBasicAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.addCommand(Autocomplete.startCommand);\n }\n else {\n this.commands.removeCommand(Autocomplete.startCommand);\n }\n },\n value: false\n },\n enableLiveAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.on('afterExec', doLiveAutocomplete);\n }\n else {\n this.commands.off('afterExec', doLiveAutocomplete);\n }\n },\n value: false\n },\n liveAutocompletionDelay: {\n initialValue: 0\n },\n liveAutocompletionThreshold: {\n initialValue: 0\n },\n enableSnippets: {\n set: function (val) {\n if (val) {\n this.commands.addCommand(expandSnippet);\n this.on(\"changeMode\", onChangeMode);\n onChangeMode(null, this);\n }\n else {\n this.commands.removeCommand(expandSnippet);\n this.off(\"changeMode\", onChangeMode);\n }\n },\n value: false\n }\n});\n\n});\n\nace.define(\"ace/ext/inline_autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/inline\",\"ace/autocomplete\",\"ace/autocomplete\",\"ace/editor\",\"ace/autocomplete/util\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/ext/command_bar\",\"ace/ext/command_bar\",\"ace/ext/language_tools\",\"ace/ext/language_tools\",\"ace/ext/language_tools\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar AceInline = require(\"../autocomplete/inline\").AceInline;\nvar FilteredList = require(\"../autocomplete\").FilteredList;\nvar CompletionProvider = require(\"../autocomplete\").CompletionProvider;\nvar Editor = require(\"../editor\").Editor;\nvar util = require(\"../autocomplete/util\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar CommandBarTooltip = require(\"./command_bar\").CommandBarTooltip;\nvar BUTTON_CLASS_NAME = require(\"./command_bar\").BUTTON_CLASS_NAME;\nvar snippetCompleter = require(\"./language_tools\").snippetCompleter;\nvar textCompleter = require(\"./language_tools\").textCompleter;\nvar keyWordCompleter = require(\"./language_tools\").keyWordCompleter;\nvar destroyCompleter = function (e, editor) {\n editor.completer && editor.completer.destroy();\n};\nvar InlineAutocomplete = /** @class */ (function () {\n function InlineAutocomplete(editor) {\n this.editor = editor;\n this.keyboardHandler = new HashHandler(this.commands);\n this.$index = -1;\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.changeTimer = lang.delayedCall(function () {\n this.updateCompletions();\n }.bind(this));\n }\n InlineAutocomplete.prototype.getInlineRenderer = function () {\n if (!this.inlineRenderer)\n this.inlineRenderer = new AceInline();\n return this.inlineRenderer;\n };\n InlineAutocomplete.prototype.getInlineTooltip = function () {\n if (!this.inlineTooltip) {\n this.inlineTooltip = InlineAutocomplete.createInlineTooltip(document.body || document.documentElement);\n }\n return this.inlineTooltip;\n };\n InlineAutocomplete.prototype.show = function (options) {\n this.activated = true;\n if (this.editor.completer !== this) {\n if (this.editor.completer)\n this.editor.completer.detach();\n this.editor.completer = this;\n }\n this.editor.on(\"changeSelection\", this.changeListener);\n this.editor.on(\"blur\", this.blurListener);\n this.updateCompletions(options);\n };\n InlineAutocomplete.prototype.$open = function () {\n if (this.editor.textInput.setAriaOptions) {\n this.editor.textInput.setAriaOptions({});\n }\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n this.getInlineTooltip().attach(this.editor);\n if (this.$index === -1) {\n this.setIndex(0);\n }\n else {\n this.$showCompletion();\n }\n this.changeTimer.cancel();\n };\n InlineAutocomplete.prototype.insertMatch = function () {\n var result = this.getCompletionProvider().insertByIndex(this.editor, this.$index);\n this.detach();\n return result;\n };\n InlineAutocomplete.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 InlineAutocomplete.prototype.blurListener = function (e) {\n this.detach();\n };\n InlineAutocomplete.prototype.goTo = function (where) {\n if (!this.completions || !this.completions.filtered) {\n return;\n }\n var completionLength = this.completions.filtered.length;\n switch (where.toLowerCase()) {\n case \"prev\":\n this.setIndex((this.$index - 1 + completionLength) % completionLength);\n break;\n case \"next\":\n this.setIndex((this.$index + 1 + completionLength) % completionLength);\n break;\n case \"first\":\n this.setIndex(0);\n break;\n case \"last\":\n this.setIndex(this.completions.filtered.length - 1);\n break;\n }\n };\n InlineAutocomplete.prototype.getLength = function () {\n if (!this.completions || !this.completions.filtered) {\n return 0;\n }\n return this.completions.filtered.length;\n };\n InlineAutocomplete.prototype.getData = function (index) {\n if (index == undefined || index === null) {\n return this.completions.filtered[this.$index];\n }\n else {\n return this.completions.filtered[index];\n }\n };\n InlineAutocomplete.prototype.getIndex = function () {\n return this.$index;\n };\n InlineAutocomplete.prototype.isOpen = function () {\n return this.$index >= 0;\n };\n InlineAutocomplete.prototype.setIndex = function (value) {\n if (!this.completions || !this.completions.filtered) {\n return;\n }\n var newIndex = Math.max(-1, Math.min(this.completions.filtered.length - 1, value));\n if (newIndex !== this.$index) {\n this.$index = newIndex;\n this.$showCompletion();\n }\n };\n InlineAutocomplete.prototype.getCompletionProvider = function () {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider();\n return this.completionProvider;\n };\n InlineAutocomplete.prototype.$showCompletion = function () {\n if (!this.getInlineRenderer().show(this.editor, this.completions.filtered[this.$index], this.completions.filterText)) {\n this.getInlineRenderer().hide();\n }\n if (this.inlineTooltip && this.inlineTooltip.isShown()) {\n this.inlineTooltip.update();\n }\n };\n InlineAutocomplete.prototype.$updatePrefix = function () {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({ start: this.base, end: pos });\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.$open(this.editor, prefix);\n return prefix;\n };\n InlineAutocomplete.prototype.updateCompletions = function (options) {\n var prefix = \"\";\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 return this.$open(this.editor, \"\");\n }\n if (this.base && this.completions) {\n prefix = this.$updatePrefix();\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 options = {\n exactMatch: true,\n ignoreCaption: true\n };\n this.getCompletionProvider().provideCompletions(this.editor, options, function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\n if (finished) {\n if (!filtered.length)\n return this.detach();\n if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet)\n return this.detach();\n }\n this.completions = completions;\n this.$open(this.editor, prefix);\n }.bind(this));\n };\n InlineAutocomplete.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 }\n this.changeTimer.cancel();\n if (this.inlineTooltip) {\n this.inlineTooltip.detach();\n }\n this.setIndex(-1);\n if (this.completionProvider) {\n this.completionProvider.detach();\n }\n if (this.inlineRenderer && this.inlineRenderer.isOpen()) {\n this.inlineRenderer.hide();\n }\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completionProvider = this.completions = this.base = null;\n };\n InlineAutocomplete.prototype.destroy = function () {\n this.detach();\n if (this.inlineRenderer)\n this.inlineRenderer.destroy();\n if (this.inlineTooltip)\n this.inlineTooltip.destroy();\n if (this.editor && this.editor.completer == this) {\n this.editor.off(\"destroy\", destroyCompleter);\n this.editor.completer = null;\n }\n this.inlineTooltip = this.editor = this.inlineRenderer = null;\n };\n return InlineAutocomplete;\n}());\nInlineAutocomplete.prototype.commands = {\n \"Previous\": {\n bindKey: \"Alt-[\",\n name: \"Previous\",\n exec: function (editor) {\n editor.completer.goTo(\"prev\");\n }\n },\n \"Next\": {\n bindKey: \"Alt-]\",\n name: \"Next\",\n exec: function (editor) {\n editor.completer.goTo(\"next\");\n }\n },\n \"Accept\": {\n bindKey: { win: \"Tab|Ctrl-Right\", mac: \"Tab|Cmd-Right\" },\n name: \"Accept\",\n exec: function (editor) {\n return editor.completer.insertMatch();\n }\n },\n \"Close\": {\n bindKey: \"Esc\",\n name: \"Close\",\n exec: function (editor) {\n editor.completer.detach();\n }\n }\n};\nInlineAutocomplete.for = function (editor) {\n if (editor.completer instanceof InlineAutocomplete) {\n return editor.completer;\n }\n if (editor.completer) {\n editor.completer.destroy();\n editor.completer = null;\n }\n editor.completer = new InlineAutocomplete(editor);\n editor.once(\"destroy\", destroyCompleter);\n return editor.completer;\n};\nInlineAutocomplete.startCommand = {\n name: \"startInlineAutocomplete\",\n exec: function (editor, options) {\n var completer = InlineAutocomplete.for(editor);\n completer.show(options);\n },\n bindKey: { win: \"Alt-C\", mac: \"Option-C\" }\n};\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nrequire(\"../config\").defineOptions(Editor.prototype, \"editor\", {\n enableInlineAutocompletion: {\n set: function (val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val) ? val : completers;\n this.commands.addCommand(InlineAutocomplete.startCommand);\n }\n else {\n this.commands.removeCommand(InlineAutocomplete.startCommand);\n }\n },\n value: false\n }\n});\nInlineAutocomplete.createInlineTooltip = function (parentEl) {\n var inlineTooltip = new CommandBarTooltip(parentEl);\n inlineTooltip.registerCommand(\"Previous\", Object.assign({}, InlineAutocomplete.prototype.commands[\"Previous\"], {\n enabled: true,\n type: \"button\",\n iconCssClass: \"ace_arrow_rotated\"\n }));\n inlineTooltip.registerCommand(\"Position\", {\n enabled: false,\n getValue: function (editor) {\n return editor ? [editor.completer.getIndex() + 1, editor.completer.getLength()].join(\"/\") : \"\";\n },\n type: \"text\",\n cssClass: \"completion_position\"\n });\n inlineTooltip.registerCommand(\"Next\", Object.assign({}, InlineAutocomplete.prototype.commands[\"Next\"], {\n enabled: true,\n type: \"button\",\n iconCssClass: \"ace_arrow\"\n }));\n inlineTooltip.registerCommand(\"Accept\", Object.assign({}, InlineAutocomplete.prototype.commands[\"Accept\"], {\n enabled: function (editor) {\n return !!editor && editor.completer.getIndex() >= 0;\n },\n type: \"button\"\n }));\n inlineTooltip.registerCommand(\"ShowTooltip\", {\n name: \"Always Show Tooltip\",\n exec: function () {\n inlineTooltip.setAlwaysShow(!inlineTooltip.getAlwaysShow());\n },\n enabled: true,\n getValue: function () {\n return inlineTooltip.getAlwaysShow();\n },\n type: \"checkbox\"\n });\n return inlineTooltip;\n};\ndom.importCssString(\"\\n\\n.ace_icon_svg.ace_arrow,\\n.ace_icon_svg.ace_arrow_rotated {\\n -webkit-mask-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuODM3MDEgMTVMNC41ODc1MSAxMy43MTU1TDEwLjE0NjggOEw0LjU4NzUxIDIuMjg0NDZMNS44MzcwMSAxTDEyLjY0NjUgOEw1LjgzNzAxIDE1WiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=\\\");\\n}\\n\\n.ace_icon_svg.ace_arrow_rotated {\\n transform: rotate(180deg);\\n}\\n\\ndiv.\".concat(BUTTON_CLASS_NAME, \".completion_position {\\n padding: 0;\\n}\\n\"), \"inlineautocomplete.css\", false);\nexports.InlineAutocomplete = InlineAutocomplete;\n\n}); (function() {\n ace.require([\"ace/ext/inline_autocomplete\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"names":["require","exports","module","dom","oop","EventEmitter","lang","Range","RangeList","HashHandler","Tokenizer","clipboard","VARIABLES","editor","name","indentation","text","mode","date","dateFormat","str","SnippetManager","TabstopToken","escape","ch","formatMatcher","val","state","stack","ts","t","choices","operator","value","next","token","startState","x","flag","re","fmtTokens","_self","formatted","oldArgs","fmtParts","gChangeCase","i","snippet","result","afterNewLine","j","gotoNext","i1","snippetText","processedSnippet","processSnippetText","options","range","end","tabstopManager","TabstopManager","selectionId","self","scope","c","scopes","snippetMap","cursor","line","before","after","snippets","snippetList","s","snippetNameMap","wrapRegexp","src","guardedRegexp","guard","opening","addSnippet","map","old","key","removeSnippet","nameMap","list","m","guardRe","tabString","indentString","tokens","tabstops","p","id","isNested","expanding","copyValue","copy","parentId","row","column","lines","delta","isRemove","selectedTabstop","parents","active","parentActive","startIndex","endIndex","toRemove","session","original","fmt","e","lead","anchor","isEmpty","containsLead","containsAnchor","dir","max","index","sel","start","useLink","moveRelative","arg","ranges","dest","movePoint","point","diff","Editor","content","snippetManager","AceInline","completion","prefix","displayText","Renderer","event","nls","getAriaId","$singleLineEditor","el","renderer","AcePopup","parentNode","popup","noop","pos","selectionMarker","lastMouseEvent","hoverMarker","setHoverMarker","selected","ariaId","hideHoverMarker","suppressRedraw","data","bgTokenizer","caption","addToken","className","lower","filterText","lastIndex","lastI","sub","lineHeight","forceShow","screenHeight","screenWidth","maxH","dims","spaceBelow","spaceAbove","fitsX","left","topdownOnly","where","array","fn","callback","completed","arLength","err","ID_REGEX","regex","buf","completer","identifierRegex","previousChar","util","config","destroyCompleter","Autocomplete","hide","elements","_this","rect","posGhostText","keepPopupPosition","fromTooltip","container","completions","CompletionProvider","FilteredList","completionOptions","finished","filtered","emptyMessage","completionsForEmpty","all","doc","completersLength","item","theme","tooltipNode","a","matches","total","results","processResults","isImmediate","immediateResults","b","prev","items","needle","upper","loop","matchMask","penalty","distance","fullMatchIndex","i2","__values","o","Tooltip","useragent","BUTTON_CLASS_NAME","VALUE_CLASS_NAME","CAPTION_CLASS_NAME","KEYBINDING_CLASS_NAME","TOOLTIP_CLASS_NAME","MORE_OPTIONS_BUTTON_ID","defaultDelay","defaultMaxElements","minPosition","posA","posB","keyDisplayMap","CommandBarTooltip","e_1","_a","_b","_c","e_1_1","command","registerForMainTooltip","alwaysShow","minPos","tooltipEl","cursorVisible","top","tooltipFits","moreOptionsEl","forMainTooltip","parentEl","keyParts","bindKey","buttonNode","keyPart","eventListener","visible","cursorPosition","cursorScreenPosition","isInCurrentLine","enableHover","commandEnabled","domCssFn","isOnTooltip","splitRegex","getWordIndex","textBefore","wordDistance","prefixPos","words","wordScores","currentWord","word","idx","score","wordScore","wordList","textCompleter","keyWordCompleter","transformSnippetTooltip","record","_","p1","p2","p3","snippetCompleter","completers","expandSnippet","onChangeMode","loadSnippetsForMode","loadSnippetFile","snippetFilePath","doLiveAutocomplete","hasCompleter","lastExecEvent","delay","liveAutocompleteTimer","showLiveAutocomplete","triggerAutocomplete","InlineAutocomplete","completionLength","newIndex","inlineTooltip"],"mappings":"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","x_google_ignoreList":[0]}