@flatbiz/antd 4.4.25 → 4.4.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm/ace-editor-groovy/index.js +1 -1
  2. package/esm/ace-editor-groovy/index.js.map +1 -1
  3. package/esm/ace-editor-java/index.js +1 -1
  4. package/esm/ace-editor-java/index.js.map +1 -1
  5. package/esm/ace-editor-json/index.js +1 -1
  6. package/esm/ace-editor-json/index.js.map +1 -1
  7. package/esm/ace-editor-mysql/index.js +1 -1
  8. package/esm/ace-editor-mysql/index.js.map +1 -1
  9. package/esm/ace-editor-xml/index.js +1 -1
  10. package/esm/ace-editor-xml/index.js.map +1 -1
  11. package/esm/box-grid/index.js +1 -1
  12. package/esm/box-grid/index.js.map +1 -1
  13. package/esm/dialog-drawer/index.js +1 -1
  14. package/esm/dialog-drawer/index.js.map +1 -1
  15. package/esm/drag-form-list/index.js +1 -1
  16. package/esm/editable-field/index.js +1 -1
  17. package/esm/editable-field-provider/index.js +1 -1
  18. package/esm/fba-app/index.js +1 -1
  19. package/esm/fba-app/index.js.map +1 -1
  20. package/esm/fba-hooks/index.js +1 -1
  21. package/esm/form-item-text/index.js +1 -1
  22. package/esm/index.js +1 -1
  23. package/esm/input-search-wrapper/index.js +1 -1
  24. package/esm/json-editor/index.js +1 -1
  25. package/esm/json-editor/index.js.map +1 -1
  26. package/esm/label-value-render/index.js +1 -1
  27. package/esm/label-value-render/index.js.map +1 -1
  28. package/esm/mention-editor/index.js +1 -1
  29. package/esm/mentions-wrapper/index.js +1 -1
  30. package/esm/selector-wrapper/index.js +1 -1
  31. package/esm/selector-wrapper-search/index.js +1 -1
  32. package/esm/selector-wrapper-simple/index.js +1 -1
  33. package/esm/switch-confirm-wrapper/index.js +1 -1
  34. package/esm/table-cell-render/index.js +1 -1
  35. package/esm/table-scrollbar/index.js +1 -1
  36. package/esm/tag-wrapper/index.js +1 -1
  37. package/esm/upload-wrapper/index.js +1 -1
  38. package/index.d.ts +10 -0
  39. package/package.json +3 -1
  40. package/esm/ext-language_tools-0c27f877.js +0 -3
  41. package/esm/ext-language_tools-0c27f877.js.map +0 -1
  42. package/esm/mode-json-062fdb24.js +0 -3
  43. package/esm/mode-json-062fdb24.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ext-language_tools-0c27f877.js","sources":["@flatbiz/antd/node_modules/ace-builds/src-noconflict/ext-language_tools.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 var end = editor.session.replace(range, processedSnippet.text);\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId);\n };\n SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText, options);\n editor.forEachSelection(function () {\n self.insertSnippetForSelection(editor, snippetText, options);\n }, null, { keepOrder: true });\n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n SnippetManager.prototype.$getScope = function (editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp)\n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n return scope;\n };\n SnippetManager.prototype.getActiveScopes = function (editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n SnippetManager.prototype.expandWithTab = function (editor, options) {\n var self = this;\n var result = editor.forEachSelection(function () {\n return self.expandSnippetForSelection(editor, options);\n }, null, { keepOrder: true });\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n SnippetManager.prototype.expandSnippetForSelection = function (editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length);\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n SnippetManager.prototype.register = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n if (!snippets)\n snippets = [];\n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n }\n else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n if (s.prefix)\n s.tabTrigger = s.prefix;\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n }\n else {\n Object.keys(snippets).forEach(function (key) {\n addSnippet(snippets[key]);\n });\n }\n this._signal(\"registerSnippets\", { scope: scope });\n };\n SnippetManager.prototype.unregister = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope || scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope || scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n SnippetManager.prototype.parseSnippetFile = function (str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], /**@type{Snippet}*/ snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n }\n catch (e) { }\n }\n if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n }\n else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n }\n else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n }\n else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n SnippetManager.prototype.getSnippetByName = function (name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n return SnippetManager;\n}());\noop.implement(SnippetManager.prototype, EventEmitter);\nvar processSnippetText = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function (x) {\n if (x == \"\\n\" && !options.excludeExtraIndent)\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function (p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function (t) { return typeof t === \"object\"; });\n if (isNested && !ts.value) {\n ts.value = value;\n }\n else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function (ts) { ts.length = 0; });\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || { tabstopId: p.tabstopId };\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function (parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function (t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1) {\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n }\n else\n column += t.length;\n text += t;\n }\n else if (t) {\n if (!t.start)\n t.start = { row: row, column: column };\n else\n t.end = { row: row, column: column };\n }\n });\n return {\n text: text,\n tabstops: tabstops,\n tokens: tokens\n };\n};\nvar TabstopManager = /** @class */ (function () {\n function TabstopManager(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n }\n TabstopManager.prototype.attach = function (editor) {\n this.$openTabstops = null;\n this.selectedTabstop = null;\n this.editor = editor;\n this.session = editor.session;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n TabstopManager.prototype.detach = function () {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges.length = 0;\n this.tabstops.length = 0;\n this.selectedTabstop = null;\n this.editor.off(\"change\", this.$onChange);\n this.editor.off(\"changeSelection\", this.$onChangeSelection);\n this.editor.off(\"changeSession\", this.$onChangeSession);\n this.editor.commands.off(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.session = null;\n this.editor = null;\n };\n TabstopManager.prototype.onChange = function (delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = this.tabstops.slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n TabstopManager.prototype.updateLinkedFields = function () {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n TabstopManager.prototype.onAfterExec = function (e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n TabstopManager.prototype.onChangeSelection = function () {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n TabstopManager.prototype.onChangeSession = function () {\n this.detach();\n };\n TabstopManager.prototype.tabNext = function (dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n 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/popup\",[\"require\",\"exports\",\"module\",\"ace/virtual_renderer\",\"ace/editor\",\"ace/range\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar Renderer = require(\"../virtual_renderer\").VirtualRenderer;\nvar Editor = require(\"../editor\").Editor;\nvar Range = require(\"../range\").Range;\nvar event = require(\"../lib/event\");\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\nvar nls = require(\"../config\").nls;\nvar userAgent = require(\"./../lib/useragent\");\nvar getAriaId = function (index) {\n return \"suggest-aria-id:\".concat(index);\n};\nvar popupAriaRole = userAgent.isSafari ? \"menu\" : \"listbox\";\nvar optionAriaRole = userAgent.isSafari ? \"menuitem\" : \"option\";\nvar ariaActiveState = userAgent.isSafari ? \"aria-current\" : \"aria-selected\";\nvar $singleLineEditor = function (el) {\n var renderer = new Renderer(el);\n renderer.$maxLines = 4;\n var editor = new Editor(renderer);\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n editor.$mouseHandler.$focusTimeout = 0;\n editor.$highlightTagPending = true;\n return editor;\n};\nvar AcePopup = /** @class */ (function () {\n function AcePopup(parentNode) {\n var el = dom.createElement(\"div\");\n var popup = $singleLineEditor(el);\n if (parentNode) {\n parentNode.appendChild(el);\n }\n el.style.display = \"none\";\n popup.renderer.content.style.cursor = \"default\";\n popup.renderer.setStyle(\"ace_autocomplete\");\n popup.renderer.$textLayer.element.setAttribute(\"role\", popupAriaRole);\n popup.renderer.$textLayer.element.setAttribute(\"aria-roledescription\", nls(\"Autocomplete suggestions\"));\n popup.renderer.$textLayer.element.setAttribute(\"aria-label\", nls(\"Autocomplete suggestions\"));\n popup.renderer.textarea.setAttribute(\"aria-hidden\", \"true\");\n popup.setOption(\"displayIndentGuides\", false);\n popup.setOption(\"dragDelay\", 150);\n var noop = function () { };\n popup.focus = noop;\n popup.$isFocused = true;\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = \"0\";\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n popup.setHighlightActiveLine(false);\n popup.session.highlight(\"\");\n popup.session.$searchHighlight.clazz = \"ace_highlight-marker\";\n popup.on(\"mousedown\", function (e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n var lastMouseEvent;\n var hoverMarker = new Range(-1, 0, -1, Infinity);\n var selectionMarker = new Range(-1, 0, -1, Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, \"ace_active-line\", \"fullLine\");\n popup.setSelectOnHover = function (val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, \"ace_line-hover\", \"fullLine\");\n }\n else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on(\"mousemove\", function (e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n popup.isMouseOver = true;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on(\"beforeRender\", function () {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on(\"afterRender\", function () {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]);\n var el = document.activeElement; // Active element is textarea of main editor\n if (selected !== popup.selectedNode && popup.selectedNode) {\n dom.removeCssClass(popup.selectedNode, \"ace_selected\");\n el.removeAttribute(\"aria-activedescendant\");\n popup.selectedNode.removeAttribute(ariaActiveState);\n popup.selectedNode.removeAttribute(\"id\");\n }\n popup.selectedNode = selected;\n if (selected) {\n dom.addCssClass(selected, \"ace_selected\");\n var ariaId = getAriaId(row);\n selected.id = ariaId;\n t.element.setAttribute(\"aria-activedescendant\", ariaId);\n el.setAttribute(\"aria-activedescendant\", ariaId);\n selected.setAttribute(\"role\", optionAriaRole);\n selected.setAttribute(\"aria-roledescription\", nls(\"item\"));\n selected.setAttribute(\"aria-label\", popup.getData(row).value);\n selected.setAttribute(\"aria-setsize\", popup.data.length);\n selected.setAttribute(\"aria-posinset\", row + 1);\n selected.setAttribute(\"aria-describedby\", \"doc-tooltip\");\n selected.setAttribute(ariaActiveState, \"true\");\n }\n });\n var hideHoverMarker = function () { setHoverMarker(-1); };\n var setHoverMarker = function (row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit(\"changeBackMarker\");\n popup._emit(\"changeHoverMarker\");\n }\n };\n popup.getHoveredRow = function () {\n return hoverMarker.start.row;\n };\n event.addListener(popup.container, \"mouseout\", function () {\n popup.isMouseOver = false;\n hideHoverMarker();\n });\n popup.on(\"hide\", hideHoverMarker);\n popup.on(\"changeSelection\", hideHoverMarker);\n popup.session.doc.getLength = function () {\n return popup.data.length;\n };\n popup.session.doc.getLine = function (i) {\n var data = popup.data[i];\n if (typeof data == \"string\")\n return data;\n return (data && data.value) || \"\";\n };\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function (row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == \"string\")\n data = { value: data };\n var caption = data.caption || data.value || data.name;\n function addToken(value, className) {\n value && tokens.push({\n type: (data.className || \"\") + (className || \"\"),\n value: value\n });\n }\n var lower = caption.toLowerCase();\n var filterText = (popup.filterText || \"\").toLowerCase();\n var lastIndex = 0;\n var lastI = 0;\n for (var i = 0; i <= filterText.length; i++) {\n if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) {\n var sub = filterText.slice(lastI, i);\n lastI = i;\n var index = lower.indexOf(sub, lastIndex);\n if (index == -1)\n continue;\n addToken(caption.slice(lastIndex, index), \"\");\n lastIndex = index + sub.length;\n addToken(caption.slice(index, lastIndex), \"completion-highlight\");\n }\n }\n addToken(caption.slice(lastIndex, caption.length), \"\");\n tokens.push({ type: \"completion-spacer\", value: \" \" });\n if (data.meta)\n tokens.push({ type: \"completion-meta\", value: data.meta });\n if (data.message)\n tokens.push({ type: \"completion-message\", value: data.message });\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n popup.session.$computeWidth = function () {\n return this.screenWidth = 0;\n };\n popup.isOpen = false;\n popup.isTopdown = false;\n popup.autoSelect = true;\n popup.filterText = \"\";\n popup.isMouseOver = false;\n popup.data = [];\n popup.setData = function (list, filterText) {\n popup.filterText = filterText || \"\";\n popup.setValue(lang.stringRepeat(\"\\n\", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function (row) {\n return popup.data[row];\n };\n popup.getRow = function () {\n return selectionMarker.start.row;\n };\n popup.setRow = function (line) {\n line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit(\"changeBackMarker\");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal(\"select\");\n }\n };\n popup.on(\"changeSelection\", function () {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n popup.hide = function () {\n this.container.style.display = \"none\";\n popup.anchorPos = null;\n popup.anchor = null;\n if (popup.isOpen) {\n popup.isOpen = false;\n this._signal(\"hide\");\n }\n };\n popup.tryShow = function (pos, lineHeight, anchor, forceShow) {\n if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor &&\n popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left &&\n popup.anchor === anchor) {\n return true;\n }\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var dims = { top: 0, bottom: 0, left: 0 };\n var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight;\n var spaceAbove = pos.top - 3 * this.$borderSize;\n if (!anchor) {\n if (spaceAbove <= spaceBelow || spaceBelow >= maxH) {\n anchor = \"bottom\";\n }\n else {\n anchor = \"top\";\n }\n }\n if (anchor === \"top\") {\n dims.bottom = pos.top - this.$borderSize;\n dims.top = dims.bottom - maxH;\n }\n else if (anchor === \"bottom\") {\n dims.top = pos.top + lineHeight + this.$borderSize;\n dims.bottom = dims.top + maxH;\n }\n var fitsX = dims.top >= 0 && dims.bottom <= screenHeight;\n if (!forceShow && !fitsX) {\n return false;\n }\n if (!fitsX) {\n if (anchor === \"top\") {\n renderer.$maxPixelHeight = spaceAbove;\n }\n else {\n renderer.$maxPixelHeight = spaceBelow;\n }\n }\n else {\n renderer.$maxPixelHeight = null;\n }\n if (anchor === \"top\") {\n el.style.top = \"\";\n el.style.bottom = (screenHeight - dims.bottom) + \"px\";\n popup.isTopdown = false;\n }\n else {\n el.style.top = dims.top + \"px\";\n el.style.bottom = \"\";\n popup.isTopdown = true;\n }\n el.style.display = \"\";\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n el.style.left = left + \"px\";\n el.style.right = \"\";\n if (!popup.isOpen) {\n popup.isOpen = true;\n this._signal(\"show\");\n lastMouseEvent = null;\n }\n popup.anchorPos = pos;\n popup.anchor = anchor;\n return true;\n };\n popup.show = function (pos, lineHeight, topdownOnly) {\n this.tryShow(pos, lineHeight, topdownOnly ? \"bottom\" : undefined, true);\n };\n popup.goTo = function (where) {\n var row = this.getRow();\n var max = this.session.getLength() - 1;\n switch (where) {\n case \"up\":\n row = row <= 0 ? max : row - 1;\n break;\n case \"down\":\n row = row >= max ? -1 : row + 1;\n break;\n case \"start\":\n row = 0;\n break;\n case \"end\":\n row = max;\n break;\n }\n this.setRow(row);\n };\n popup.getTextLeftOffset = function () {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n return popup;\n }\n return AcePopup;\n}());\ndom.importCssString(\"\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #CAD6FA;\\n z-index: 1;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\n background-color: #3a674e;\\n}\\n.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid #abbffe;\\n margin-top: -1px;\\n background: rgba(233,233,253,0.4);\\n position: absolute;\\n z-index: 2;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\\n border: 1px solid rgba(109, 150, 13, 0.8);\\n background: rgba(58, 103, 78, 0.62);\\n}\\n.ace_completion-meta {\\n opacity: 0.5;\\n margin-left: 0.9em;\\n}\\n.ace_completion-message {\\n margin-left: 0.9em;\\n color: blue;\\n}\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #2d69c7;\\n}\\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\\n color: #93ca12;\\n}\\n.ace_editor.ace_autocomplete {\\n width: 300px;\\n z-index: 200000;\\n border: 1px lightgray solid;\\n position: fixed;\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n line-height: 1.4;\\n background: #fefefe;\\n color: #111;\\n}\\n.ace_dark.ace_editor.ace_autocomplete {\\n border: 1px #484747 solid;\\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\\n line-height: 1.4;\\n background: #25282c;\\n color: #c1c1c1;\\n}\\n.ace_autocomplete .ace_text-layer {\\n width: calc(100% - 8px);\\n}\\n.ace_autocomplete .ace_line {\\n display: flex;\\n align-items: center;\\n}\\n.ace_autocomplete .ace_line > * {\\n min-width: 0;\\n flex: 0 0 auto;\\n}\\n.ace_autocomplete .ace_line .ace_ {\\n flex: 0 1 auto;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ace_autocomplete .ace_completion-spacer {\\n flex: 1;\\n}\\n.ace_autocomplete.ace_loading:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0px;\\n height: 2px;\\n width: 8%;\\n background: blue;\\n z-index: 100;\\n animation: ace_progress 3s infinite linear;\\n animation-delay: 300ms;\\n transform: translateX(-100%) scaleX(1);\\n}\\n@keyframes ace_progress {\\n 0% { transform: translateX(-100%) scaleX(1) }\\n 50% { transform: translateX(625%) scaleX(2) } \\n 100% { transform: translateX(1500%) scaleX(3) } \\n}\\n@media (prefers-reduced-motion) {\\n .ace_autocomplete.ace_loading:after {\\n transform: translateX(625%) scaleX(2);\\n animation: none;\\n }\\n}\\n\", \"autocompletion.css\", false);\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\nexports.getAriaId = getAriaId;\n\n});\n\nace.define(\"ace/autocomplete/inline_screenreader\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar AceInlineScreenReader = /** @class */ (function () {\n function AceInlineScreenReader(editor) {\n this.editor = editor;\n this.screenReaderDiv = document.createElement(\"div\");\n this.screenReaderDiv.classList.add(\"ace_screenreader-only\");\n this.editor.container.appendChild(this.screenReaderDiv);\n }\n AceInlineScreenReader.prototype.setScreenReaderContent = function (content) {\n if (!this.popup && this.editor.completer && /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup) {\n this.popup = /**@type{import(\"../autocomplete\").Autocomplete}*/ (this.editor.completer).popup;\n this.popup.renderer.on(\"afterRender\", function () {\n var row = this.popup.getRow();\n var t = this.popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected) {\n var idString = \"doc-tooltip \";\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n idString += \"ace-inline-screenreader-line-\".concat(lineIndex, \" \");\n }\n selected.setAttribute(\"aria-describedby\", idString);\n }\n }.bind(this));\n }\n while (this.screenReaderDiv.firstChild) {\n this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild);\n }\n this._lines = content.split(/\\r\\n|\\r|\\n/);\n var codeElement = this.createCodeBlock();\n this.screenReaderDiv.appendChild(codeElement);\n };\n AceInlineScreenReader.prototype.destroy = function () {\n this.screenReaderDiv.remove();\n };\n AceInlineScreenReader.prototype.createCodeBlock = function () {\n var container = document.createElement(\"pre\");\n container.setAttribute(\"id\", \"ace-inline-screenreader\");\n for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) {\n var codeElement = document.createElement(\"code\");\n codeElement.setAttribute(\"id\", \"ace-inline-screenreader-line-\".concat(lineIndex));\n var line = document.createTextNode(this._lines[lineIndex]);\n codeElement.appendChild(line);\n container.appendChild(codeElement);\n }\n return container;\n };\n return AceInlineScreenReader;\n}());\nexports.AceInlineScreenReader = AceInlineScreenReader;\n\n});\n\nace.define(\"ace/autocomplete/inline\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete/inline_screenreader\"], function(require, exports, module){\"use strict\";\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar AceInlineScreenReader = require(\"./inline_screenreader\").AceInlineScreenReader;\nvar AceInline = /** @class */ (function () {\n function AceInline() {\n this.editor = null;\n }\n AceInline.prototype.show = function (editor, completion, prefix) {\n prefix = prefix || \"\";\n if (editor && this.editor && this.editor !== editor) {\n this.hide();\n this.editor = null;\n this.inlineScreenReader = null;\n }\n if (!editor || !completion) {\n return false;\n }\n if (!this.inlineScreenReader) {\n this.inlineScreenReader = new AceInlineScreenReader(editor);\n }\n var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value;\n if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) {\n return false;\n }\n this.editor = editor;\n this.inlineScreenReader.setScreenReaderContent(displayText);\n displayText = displayText.slice(prefix.length);\n if (displayText === \"\") {\n editor.removeGhostText();\n }\n else {\n editor.setGhostText(displayText);\n }\n return true;\n };\n AceInline.prototype.isOpen = function () {\n if (!this.editor) {\n return false;\n }\n return !!this.editor.renderer.$ghostText;\n };\n AceInline.prototype.hide = function () {\n if (!this.editor) {\n return false;\n }\n this.editor.removeGhostText();\n return true;\n };\n AceInline.prototype.destroy = function () {\n this.hide();\n this.editor = null;\n if (this.inlineScreenReader) {\n this.inlineScreenReader.destroy();\n this.inlineScreenReader = null;\n }\n };\n return AceInline;\n}());\nexports.AceInline = AceInline;\n\n});\n\nace.define(\"ace/autocomplete/util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.parForEach = function (array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function (result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\u2000\\u2070-\\uFFFF]/;\nexports.retrievePrecedingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos - 1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join(\"\");\n};\nexports.retrieveFollowingIdentifier = function (text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\nexports.getCompletionPrefix = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function (completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function (identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }.bind(this));\n }\n }.bind(this));\n return prefix || this.retrievePrecedingIdentifier(line, pos.column);\n};\nexports.triggerAutocomplete = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var column = (pos.column === 0) ? 0 : pos.column - 1;\n var previousChar = line[column];\n return editor.completers.some(function (el) {\n if (el.triggerCharacters && Array.isArray(el.triggerCharacters)) {\n return el.triggerCharacters.includes(previousChar);\n }\n });\n};\n\n});\n\nace.define(\"ace/autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/popup\",\"ace/autocomplete/inline\",\"ace/autocomplete/popup\",\"ace/autocomplete/util\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/snippets\",\"ace/config\",\"ace/lib/event\",\"ace/lib/scroll\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar AcePopup = require(\"./autocomplete/popup\").AcePopup;\nvar AceInline = require(\"./autocomplete/inline\").AceInline;\nvar getAriaId = require(\"./autocomplete/popup\").getAriaId;\nvar util = require(\"./autocomplete/util\");\nvar lang = require(\"./lib/lang\");\nvar dom = require(\"./lib/dom\");\nvar snippetManager = require(\"./snippets\").snippetManager;\nvar config = require(\"./config\");\nvar event = require(\"./lib/event\");\nvar preventParentScroll = require(\"./lib/scroll\").preventParentScroll;\nvar destroyCompleter = function (e, editor) {\n editor.completer && editor.completer.destroy();\n};\nvar Autocomplete = /** @class */ (function () {\n function Autocomplete() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.autoShown = false;\n this.exactMatch = false;\n this.inlineEnabled = false;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n this.parentNode = null;\n this.setSelectOnHover = false;\n this.hasSeen = new Set();\n this.showLoadingState = false;\n this.stickySelectionDelay = 500;\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n this.onLayoutChange = this.onLayoutChange.bind(this);\n this.changeTimer = lang.delayedCall(function () {\n this.updateCompletions(true);\n }.bind(this));\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50);\n this.stickySelectionTimer = lang.delayedCall(function () {\n this.stickySelection = true;\n }.bind(this), this.stickySelectionDelay);\n this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () {\n var initialPosition = this.completionProvider && this.completionProvider.initialPosition;\n if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0)\n return;\n this.completions = new FilteredList(Autocomplete.completionsForLoading);\n this.openPopup(this.editor, initialPosition.prefix, false);\n this.popup.renderer.setStyle(\"ace_loading\", true);\n }.bind(this), this.stickySelectionDelay);\n }\n Object.defineProperty(Autocomplete, \"completionsForLoading\", {\n get: function () {\n return [{\n caption: config.nls(\"Loading...\"),\n value: \"\"\n }];\n },\n enumerable: false,\n configurable: true\n });\n Autocomplete.prototype.$init = function () {\n this.popup = new AcePopup(this.parentNode || document.body || document.documentElement);\n this.popup.on(\"click\", function (e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on(\"show\", this.$onPopupShow.bind(this));\n this.popup.on(\"hide\", this.$onHidePopup.bind(this));\n this.popup.on(\"select\", this.$onPopupChange.bind(this));\n event.addListener(this.popup.container, \"mouseout\", this.mouseOutListener.bind(this));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\n this.popup.renderer.on(\"afterRender\", this.$onPopupRender.bind(this));\n return this.popup;\n };\n Autocomplete.prototype.$initInline = function () {\n if (!this.inlineEnabled || this.inlineRenderer)\n return;\n this.inlineRenderer = new AceInline();\n return this.inlineRenderer;\n };\n Autocomplete.prototype.getPopup = function () {\n return this.popup || this.$init();\n };\n Autocomplete.prototype.$onHidePopup = function () {\n if (this.inlineRenderer) {\n this.inlineRenderer.hide();\n }\n this.hideDocTooltip();\n this.stickySelectionTimer.cancel();\n this.popupTimer.cancel();\n this.stickySelection = false;\n };\n Autocomplete.prototype.$seen = function (completion) {\n if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === \"function\") {\n completion.completer.onSeen(this.editor, completion);\n this.hasSeen.add(completion);\n }\n };\n Autocomplete.prototype.$onPopupChange = function (hide) {\n if (this.inlineRenderer && this.inlineEnabled) {\n var completion = hide ? null : this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n if (this.popup.isMouseOver && this.setSelectOnHover) {\n this.tooltipTimer.call(null, null);\n return;\n }\n this.popupTimer.schedule();\n this.tooltipTimer.schedule();\n }\n else {\n this.popupTimer.call(null, null);\n this.tooltipTimer.call(null, null);\n }\n };\n Autocomplete.prototype.$updateGhostText = function (completion) {\n var row = this.base.row;\n var column = this.base.column;\n var cursorColumn = this.editor.getCursorPosition().column;\n var prefix = this.editor.session.getLine(row).slice(column, cursorColumn);\n if (!this.inlineRenderer.show(this.editor, completion, prefix)) {\n this.inlineRenderer.hide();\n }\n else {\n this.$seen(completion);\n }\n };\n Autocomplete.prototype.$onPopupRender = function () {\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) {\n for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) {\n var completion = this.popup.getData(i);\n if (completion && (!inlineEnabled || completion.hideInlinePreview)) {\n this.$seen(completion);\n }\n }\n }\n };\n Autocomplete.prototype.$onPopupShow = function (hide) {\n this.$onPopupChange(hide);\n this.stickySelection = false;\n if (this.stickySelectionDelay >= 0)\n this.stickySelectionTimer.schedule(this.stickySelectionDelay);\n };\n Autocomplete.prototype.observeLayoutChanges = function () {\n if (this.$elements || !this.editor)\n return;\n window.addEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.addEventListener(\"wheel\", this.mousewheelListener);\n var el = this.editor.container.parentNode;\n var elements = [];\n while (el) {\n elements.push(el);\n el.addEventListener(\"scroll\", this.onLayoutChange, { passive: true });\n el = el.parentNode;\n }\n this.$elements = elements;\n };\n Autocomplete.prototype.unObserveLayoutChanges = function () {\n var _this = this;\n window.removeEventListener(\"resize\", this.onLayoutChange, { passive: true });\n window.removeEventListener(\"wheel\", this.mousewheelListener);\n this.$elements && this.$elements.forEach(function (el) {\n el.removeEventListener(\"scroll\", _this.onLayoutChange, { passive: true });\n });\n this.$elements = null;\n };\n Autocomplete.prototype.onLayoutChange = function () {\n if (!this.popup.isOpen)\n return this.unObserveLayoutChanges();\n this.$updatePopupPosition();\n this.updateDocTooltip();\n };\n Autocomplete.prototype.$updatePopupPosition = function () {\n var editor = this.editor;\n var renderer = editor.renderer;\n var lineHeight = renderer.layerConfig.lineHeight;\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n var posGhostText = {\n top: pos.top,\n left: pos.left\n };\n if (renderer.$ghostText && renderer.$ghostTextWidget) {\n if (this.base.row === renderer.$ghostText.position.row) {\n posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight;\n }\n }\n var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight;\n var lowestPosition = editorContainerBottom < posGhostText.top ?\n { top: editorContainerBottom, left: posGhostText.left } :\n posGhostText;\n if (this.popup.tryShow(lowestPosition, lineHeight, \"bottom\")) {\n return;\n }\n if (this.popup.tryShow(pos, lineHeight, \"top\")) {\n return;\n }\n this.popup.show(pos, lineHeight);\n };\n Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) {\n this.$firstOpenTimer.cancel();\n if (!this.popup)\n this.$init();\n if (this.inlineEnabled && !this.inlineRenderer)\n this.$initInline();\n this.popup.autoSelect = this.autoSelect;\n this.popup.setSelectOnHover(this.setSelectOnHover);\n var oldRow = this.popup.getRow();\n var previousSelectedItem = this.popup.data[oldRow];\n this.popup.setData(this.completions.filtered, this.completions.filterText);\n if (this.editor.textInput.setAriaOptions) {\n this.editor.textInput.setAriaOptions({\n activeDescendant: getAriaId(this.popup.getRow()),\n inline: this.inlineEnabled\n });\n }\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n var newRow;\n if (this.stickySelection)\n newRow = this.popup.data.indexOf(previousSelectedItem);\n if (!newRow || newRow === -1)\n newRow = 0;\n this.popup.setRow(this.autoSelect ? newRow : -1);\n if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow])\n this.$onPopupChange();\n var inlineEnabled = this.inlineRenderer && this.inlineEnabled;\n if (newRow === oldRow && inlineEnabled) {\n var completion = this.popup.getData(this.popup.getRow());\n this.$updateGhostText(completion);\n }\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n this.$updatePopupPosition();\n if (this.tooltipNode) {\n this.updateDocTooltip();\n }\n }\n else if (keepPopupPosition && !prefix) {\n this.detach();\n }\n this.changeTimer.cancel();\n this.observeLayoutChanges();\n };\n Autocomplete.prototype.detach = function () {\n if (this.editor) {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off(\"changeSelection\", this.changeListener);\n this.editor.off(\"blur\", this.blurListener);\n this.editor.off(\"mousedown\", this.mousedownListener);\n this.editor.off(\"mousewheel\", this.mousewheelListener);\n }\n this.$firstOpenTimer.cancel();\n this.changeTimer.cancel();\n this.hideDocTooltip();\n if (this.completionProvider) {\n this.completionProvider.detach();\n }\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n if (this.popup && this.popup.renderer) {\n this.popup.renderer.off(\"afterRender\", this.$onPopupRender);\n }\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completionProvider = this.completions = this.base = null;\n this.unObserveLayoutChanges();\n };\n Autocomplete.prototype.changeListener = function (e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n Autocomplete.prototype.blurListener = function (e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget);\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text) {\n this.detach();\n }\n };\n Autocomplete.prototype.mousedownListener = function (e) {\n this.detach();\n };\n Autocomplete.prototype.mousewheelListener = function (e) {\n if (!this.popup.isMouseOver)\n this.detach();\n };\n Autocomplete.prototype.mouseOutListener = function (e) {\n if (this.popup.isOpen)\n this.$updatePopupPosition();\n };\n Autocomplete.prototype.goTo = function (where) {\n this.popup.goTo(where);\n };\n Autocomplete.prototype.insertMatch = function (data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n if (data.value === \"\") // Explicitly given nothing to insert, e.g. \"No suggestion state\"\n return this.detach();\n var completions = this.completions;\n var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options);\n if (this.completions == completions)\n this.detach();\n return result;\n };\n Autocomplete.prototype.showPopup = function (editor, options) {\n if (this.editor)\n this.detach();\n this.activated = true;\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n editor.on(\"changeSelection\", this.changeListener);\n editor.on(\"blur\", this.blurListener);\n editor.on(\"mousedown\", this.mousedownListener);\n editor.on(\"mousewheel\", this.mousewheelListener);\n this.updateCompletions(false, options);\n };\n Autocomplete.prototype.getCompletionProvider = function (initialPosition) {\n if (!this.completionProvider)\n this.completionProvider = new CompletionProvider(initialPosition);\n return this.completionProvider;\n };\n Autocomplete.prototype.gatherCompletions = function (editor, callback) {\n return this.getCompletionProvider().gatherCompletions(editor, callback);\n };\n Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({ start: this.base, end: pos });\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n if (options && options.matches) {\n var pos = this.editor.getSelectionRange().start;\n this.base = this.editor.session.doc.createAnchor(pos.row, pos.column);\n this.base.$insertRight = true;\n this.completions = new FilteredList(options.matches);\n return this.openPopup(this.editor, \"\", keepPopupPosition);\n }\n var session = this.editor.getSession();\n var pos = this.editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(this.editor);\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n var completionOptions = {\n exactMatch: this.exactMatch,\n ignoreCaption: this.ignoreCaption\n };\n this.getCompletionProvider({\n prefix: prefix,\n pos: pos\n }).provideCompletions(this.editor, completionOptions, \n function (err, completions, finished) {\n var filtered = completions.filtered;\n var prefix = util.getCompletionPrefix(this.editor);\n this.$firstOpenTimer.cancel();\n if (finished) {\n if (!filtered.length) {\n var emptyMessage = !this.autoShown && this.emptyMessage;\n if (typeof emptyMessage == \"function\")\n emptyMessage = this.emptyMessage(prefix);\n if (emptyMessage) {\n var completionsForEmpty = [{\n caption: emptyMessage,\n value: \"\"\n }\n ];\n this.completions = new FilteredList(completionsForEmpty);\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", false);\n return;\n }\n return this.detach();\n }\n if (filtered.length == 1 && filtered[0].value == prefix\n && !filtered[0].snippet)\n return this.detach();\n if (this.autoInsert && !this.autoShown && filtered.length == 1)\n return this.insertMatch(filtered[0]);\n }\n this.completions = !finished && this.showLoadingState ?\n new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) :\n completions;\n this.openPopup(this.editor, prefix, keepPopupPosition);\n this.popup.renderer.setStyle(\"ace_loading\", !finished);\n }.bind(this));\n if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) {\n this.$firstOpenTimer.delay(this.stickySelectionDelay / 2);\n }\n };\n Autocomplete.prototype.cancelContextMenu = function () {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n Autocomplete.prototype.updateDocTooltip = function () {\n var popup = this.popup;\n var all = this.completions.filtered;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n var completersLength = this.editor.completers.length;\n for (var i = 0; i < completersLength; i++) {\n var completer = this.editor.completers[i];\n if (completer.getDocTooltip && selected.completerId === completer.id) {\n doc = completer.getDocTooltip(selected);\n break;\n }\n }\n if (!doc && typeof selected != \"string\")\n doc = selected;\n if (typeof doc == \"string\")\n doc = { docText: doc };\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n Autocomplete.prototype.showDocTooltip = function (item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement(\"div\");\n this.tooltipNode.style.margin = \"0\";\n this.tooltipNode.style.pointerEvents = \"auto\";\n this.tooltipNode.style.overscrollBehavior = \"contain\";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n this.tooltipNode.onclick = this.onTooltipClick.bind(this);\n this.tooltipNode.id = \"doc-tooltip\";\n this.tooltipNode.setAttribute(\"role\", \"tooltip\");\n this.tooltipNode.addEventListener(\"wheel\", preventParentScroll);\n }\n var theme = this.editor.renderer.theme;\n this.tooltipNode.className = \"ace_tooltip ace_doc-tooltip \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n }\n else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n if (!tooltipNode.parentNode)\n this.popup.container.appendChild(this.tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n tooltipNode.style.display = \"block\";\n if (window.innerWidth - rect.right < 320) {\n if (rect.left < 320) {\n if (popup.isTopdown) {\n tooltipNode.style.top = rect.bottom + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n else {\n tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n }\n else {\n tooltipNode.style.right = window.innerWidth - rect.left + \"px\";\n tooltipNode.style.left = \"\";\n }\n }\n else {\n tooltipNode.style.left = (rect.right + 1) + \"px\";\n tooltipNode.style.right = \"\";\n }\n };\n Autocomplete.prototype.hideDocTooltip = function () {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode)\n return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n Autocomplete.prototype.onTooltipClick = function (e) {\n var a = e.target;\n while (a && a != this.tooltipNode) {\n if (a.nodeName == \"A\" && a.href) {\n a.rel = \"noreferrer\";\n a.target = \"_blank\";\n break;\n }\n a = a.parentNode;\n }\n };\n Autocomplete.prototype.destroy = function () {\n this.detach();\n if (this.popup) {\n this.popup.destroy();\n var el = this.popup.container;\n if (el && el.parentNode)\n el.parentNode.removeChild(el);\n }\n if (this.editor && this.editor.completer == this) {\n this.editor.off(\"destroy\", destroyCompleter);\n this.editor.completer = null;\n }\n this.inlineRenderer = this.popup = this.editor = null;\n };\n return Autocomplete;\n}());\nAutocomplete.prototype.commands = {\n \"Up\": function (editor) { editor.completer.goTo(\"up\"); },\n \"Down\": function (editor) { editor.completer.goTo(\"down\"); },\n \"Ctrl-Up|Ctrl-Home\": function (editor) { editor.completer.goTo(\"start\"); },\n \"Ctrl-Down|Ctrl-End\": function (editor) { editor.completer.goTo(\"end\"); },\n \"Esc\": function (editor) { editor.completer.detach(); },\n \"Return\": function (editor) { return editor.completer.insertMatch(); },\n \"Shift-Return\": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); },\n \"Tab\": function (editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo(\"down\");\n else\n return result;\n },\n \"PageUp\": function (editor) { editor.completer.popup.gotoPageUp(); },\n \"PageDown\": function (editor) { editor.completer.popup.gotoPageDown(); }\n};\nAutocomplete.for = function (editor) {\n if (editor.completer instanceof Autocomplete) {\n return editor.completer;\n }\n if (editor.completer) {\n editor.completer.destroy();\n editor.completer = null;\n }\n if (config.get(\"sharedPopups\")) {\n if (!Autocomplete[\"$sharedInstance\"])\n Autocomplete[\"$sharedInstance\"] = new Autocomplete();\n editor.completer = Autocomplete[\"$sharedInstance\"];\n }\n else {\n editor.completer = new Autocomplete();\n editor.once(\"destroy\", destroyCompleter);\n }\n return editor.completer;\n};\nAutocomplete.startCommand = {\n name: \"startAutocomplete\",\n exec: function (editor, options) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.autoSelect = true;\n completer.autoShown = false;\n completer.showPopup(editor, options);\n completer.cancelContextMenu();\n },\n bindKey: \"Ctrl-Space|Ctrl-Shift-Space|Alt-Space\"\n};\nvar CompletionProvider = /** @class */ (function () {\n function CompletionProvider(initialPosition) {\n this.initialPosition = initialPosition;\n this.active = true;\n }\n CompletionProvider.prototype.insertByIndex = function (editor, index, options) {\n if (!this.completions || !this.completions.filtered) {\n return false;\n }\n return this.insertMatch(editor, this.completions.filtered[index], options);\n };\n CompletionProvider.prototype.insertMatch = function (editor, data, options) {\n if (!data)\n return false;\n editor.startOperation({ command: { name: \"insertMatch\" } });\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(editor, data);\n }\n else {\n if (!this.completions)\n return false;\n var replaceBefore = this.completions.filterText.length;\n var replaceAfter = 0;\n if (data.range && data.range.start.row === data.range.end.row) {\n replaceBefore -= this.initialPosition.prefix.length;\n replaceBefore += this.initialPosition.pos.column - data.range.start.column;\n replaceAfter += data.range.end.column - this.initialPosition.pos.column;\n }\n if (replaceBefore || replaceAfter) {\n var ranges;\n if (editor.selection.getAllRanges) {\n ranges = editor.selection.getAllRanges();\n }\n else {\n ranges = [editor.getSelectionRange()];\n }\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= replaceBefore;\n range.end.column += replaceAfter;\n editor.session.remove(range);\n }\n }\n if (data.snippet) {\n snippetManager.insertSnippet(editor, data.snippet);\n }\n else {\n this.$insertString(editor, data);\n }\n if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == \"function\") {\n data.completer.onInsert(editor, data);\n }\n if (data.command && data.command === \"startAutocomplete\") {\n editor.execCommand(data.command);\n }\n }\n editor.endOperation();\n return true;\n };\n CompletionProvider.prototype.$insertString = function (editor, data) {\n var text = data.value || data;\n editor.execCommand(\"insertstring\", text);\n };\n CompletionProvider.prototype.gatherCompletions = function (editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n var prefix = util.getCompletionPrefix(editor);\n var matches = [];\n this.completers = editor.completers;\n var total = editor.completers.length;\n editor.completers.forEach(function (completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function (err, results) {\n if (completer.hideInlinePreview)\n results = results.map(function (result) {\n return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview });\n });\n if (!err && results)\n matches = matches.concat(results);\n callback(null, {\n prefix: util.getCompletionPrefix(editor),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n CompletionProvider.prototype.provideCompletions = function (editor, options, callback) {\n var processResults = function (results) {\n var prefix = results.prefix;\n var matches = results.matches;\n this.completions = new FilteredList(matches);\n if (options.exactMatch)\n this.completions.exactMatch = true;\n if (options.ignoreCaption)\n this.completions.ignoreCaption = true;\n this.completions.setFilter(prefix);\n if (results.finished || this.completions.filtered.length)\n callback(null, this.completions, results.finished);\n }.bind(this);\n var isImmediate = true;\n var immediateResults = null;\n this.gatherCompletions(editor, function (err, results) {\n if (!this.active) {\n return;\n }\n if (err) {\n callback(err, [], true);\n this.detach();\n }\n var prefix = results.prefix;\n if (prefix.indexOf(results.prefix) !== 0)\n return;\n if (isImmediate) {\n immediateResults = results;\n return;\n }\n processResults(results);\n }.bind(this));\n isImmediate = false;\n if (immediateResults) {\n var results = immediateResults;\n immediateResults = null;\n processResults(results);\n }\n };\n CompletionProvider.prototype.detach = function () {\n this.active = false;\n this.completers && this.completers.forEach(function (completer) {\n if (typeof completer.cancel === \"function\") {\n completer.cancel();\n }\n });\n };\n return CompletionProvider;\n}());\nvar FilteredList = /** @class */ (function () {\n function FilteredList(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || \"\";\n this.exactMatch = false;\n this.ignoreCaption = false;\n }\n FilteredList.prototype.setFilter = function (str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function (a, b) {\n return b.exactMatch - a.exactMatch || b.$score - a.$score\n || (a.caption || a.value).localeCompare(b.caption || b.value);\n });\n var prev = null;\n matches = matches.filter(function (item) {\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev)\n return false;\n prev = caption;\n return true;\n });\n this.filtered = matches;\n };\n FilteredList.prototype.filterCompletions = function (items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet;\n if (!caption)\n continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }\n else {\n var fullMatchIndex = caption.toLowerCase().indexOf(lower);\n if (fullMatchIndex > -1) {\n penalty = fullMatchIndex;\n }\n else {\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n matchMask = matchMask | (1 << j);\n }\n lastIndex = index;\n }\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.$score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n return FilteredList;\n}());\nexports.Autocomplete = Autocomplete;\nexports.CompletionProvider = CompletionProvider;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define(\"ace/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 && prefix.length >= editor.$liveAutocompletionThreshold || triggerAutocomplete) {\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}); (function() {\n ace.require([\"ace/ext/language_tools\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"names":["ace","define","require","exports","module","dom","oop","EventEmitter","lang","Range","RangeList","HashHandler","Tokenizer","clipboard","VARIABLES","CURRENT_WORD","editor","session","getTextRange","getWordRange","SELECTION","name","indentation","text","replace","CURRENT_LINE","getLine","getCursorPosition","row","PREV_LINE","LINE_INDEX","LINE_NUMBER","SOFT_TABS","getUseSoftTabs","TAB_SIZE","getTabSize","CLIPBOARD","getText","FILENAME","exec","this","FILEPATH","FILENAME_BASE","DIRECTORY","WORKSPACE_NAME","FULLNAME","BLOCK_COMMENT_START","mode","$mode","blockComment","start","BLOCK_COMMENT_END","end","LINE_COMMENT","lineCommentStart","CURRENT_YEAR","date","bind","year","CURRENT_YEAR_SHORT","CURRENT_MONTH","month","CURRENT_MONTH_NAME","CURRENT_MONTH_NAME_SHORT","CURRENT_DATE","day","CURRENT_DAY_NAME","weekday","CURRENT_DAY_NAME_SHORT","CURRENT_HOUR","hour","hour12","CURRENT_MINUTE","minute","CURRENT_SECOND","second","SELECTED_TEXT","dateFormat","str","Date","toLocaleString","length","SnippetManager","snippetMap","snippetNameMap","variables","prototype","getTokenizer","createTokenizer","TabstopToken","substr","test","tabstopId","parseInt","escape","ch","formatMatcher","regex","onMatch","val","state","stack","ts","fmtString","guard","slice","flag","next","indexOf","shift","t","unshift","token","merge","snippetVar","choices","operator","split","map","value","formatString","expectElse","ifEnd","elseEnd","changeCase","local","formatStringVar","formatFunction","tokenizeTmSnippet","startState","getLineTokens","tokens","x","getVariableValue","__","hasOwnProperty","tmStrFormat","fmt","re","RegExp","fmtTokens","_self","formatted","oldArgs","call","arguments","fmtParts","resolveVariables","gChangeCase","i","toUpperCase","toLowerCase","join","tmFormatFunction","snippet","result","afterNewLine","push","j","gotoNext","i1","getDisplayTextForSnippet","snippetText","processedSnippet","processSnippetText","insertSnippetForSelection","options","range","getSelectionRange","tabstopManager","TabstopManager","selectionId","inVirtualSelectionMode","selection","index","addTabstops","tabstops","insertSnippet","self","forEachSelection","keepOrder","tabNext","$getScope","scope","$id","pop","inlinePhp","c","getState","substring","getActiveScopes","scopes","includeScopes","apply","expandWithTab","expandSnippetForSelection","cursor","line","before","column","after","some","snippets","findMatchingSnippet","dryRun","doc","removeInLine","replaceBefore","replaceAfter","M__","matchBefore","T__","matchAfter","content","snippetList","s","startRe","endRe","triggerRe","endTriggerRe","register","wrapRegexp","src","guardedRegexp","opening","addSnippet","old","unregister","prefix","tabTrigger","body","Array","isArray","trigger","escapeRegExp","endTrigger","endGuard","forEach","Object","keys","key","_signal","removeSnippet","nameMap","splice","parseSnippetFile","list","m","JSON","parse","e","guardRe","match","getSnippetByName","implement","tabString","getTabString","indentString","excludeExtraIndent","p","id","parents","isNested","expanding","copyValue","copy","lastIndexOf","parentId","Math","max","concat","lines","ranges","$onChange","onChange","$onChangeSelection","delayedCall","onChangeSelection","schedule","$onChangeSession","onChangeSession","$onAfterExec","onAfterExec","attach","$openTabstops","selectedTabstop","on","commands","keyBinding","addKeyboardHandler","keyboardHandler","detach","removeTabstopMarkers","off","removeKeyboardHandler","delta","isRemove","action","active","rangeList","$bias","parentActive","startIndex","pointIndex","endIndex","toRemove","removeRange","$inChange","getLength","getValue","updateLinkedFields","hasLinkedRanges","firstNonLinked","linked","original","snippetManager","command","readOnly","lead","anchor","isEmpty","containsLead","contains","containsAnchor","dir","min","selectTabstop","addTabstopMarkers","sel","multiSelect","toSingleRange","addRange","clone","fromOrientedRange","execCommand","matches","useLink","getOption","fromPoints","moveRelative","arg","dest","movePoint","tabstop","addList","markerId","addMarker","removeMarker","bindKeys","Tab","renderer","scrollCursorIntoView","Esc","point","diff","importCssString","Editor","expandSnippet","Renderer","VirtualRenderer","event","nls","userAgent","getAriaId","popupAriaRole","isSafari","optionAriaRole","ariaActiveState","$singleLineEditor","el","$maxLines","setHighlightActiveLine","setShowPrintMargin","setShowGutter","setHighlightGutterLine","$mouseHandler","$focusTimeout","$highlightTagPending","AcePopup","parentNode","createElement","popup","appendChild","style","display","setStyle","$textLayer","element","setAttribute","textarea","setOption","noop","focus","$isFocused","$cursorLayer","restartTimer","opacity","$keepTextAreaAtCursor","highlight","$searchHighlight","clazz","pos","getDocumentPosition","moveToPosition","selectionMarker","stop","lastMouseEvent","hoverMarker","Infinity","setSelectOnHover","y","scrollTop","isMouseOver","setRow","setHoverMarker","$pos","getRow","selected","childNodes","config","firstRow","document","activeElement","selectedNode","removeCssClass","removeAttribute","addCssClass","ariaId","getData","data","hideHoverMarker","suppressRedraw","_emit","getHoveredRow","addListener","container","bgTokenizer","$tokenizeRow","caption","addToken","className","type","lower","filterText","lastIndex","lastI","matchMask","sub","meta","message","$updateOnChange","$computeWidth","screenWidth","isOpen","isTopdown","autoSelect","setData","setValue","stringRepeat","clearSelection","moveCursorTo","hide","anchorPos","tryShow","lineHeight","forceShow","top","left","screenHeight","window","innerHeight","innerWidth","maxH","dims","bottom","spaceBelow","$borderSize","spaceAbove","fitsX","$maxPixelHeight","offsetWidth","right","show","topdownOnly","undefined","goTo","where","getTextLeftOffset","$padding","$imageSize","AceInlineScreenReader","screenReaderDiv","classList","add","setScreenReaderContent","completer","idString","lineIndex","_lines","firstChild","removeChild","codeElement","createCodeBlock","destroy","remove","createTextNode","AceInline","completion","inlineScreenReader","displayText","hideInlinePreview","startsWith","removeGhostText","setGhostText","$ghostText","parForEach","array","fn","callback","completed","arLength","err","ID_REGEX","retrievePrecedingIdentifier","buf","reverse","retrieveFollowingIdentifier","getCompletionPrefix","completers","identifierRegexps","identifierRegex","triggerAutocomplete","previousChar","triggerCharacters","includes","util","preventParentScroll","destroyCompleter","Autocomplete","autoInsert","autoShown","exactMatch","inlineEnabled","hasSeen","Set","showLoadingState","stickySelectionDelay","blurListener","changeListener","mousedownListener","mousewheelListener","onLayoutChange","changeTimer","updateCompletions","tooltipTimer","updateDocTooltip","popupTimer","$updatePopupPosition","stickySelectionTimer","stickySelection","$firstOpenTimer","initialPosition","completionProvider","completions","FilteredList","completionsForLoading","openPopup","defineProperty","get","enumerable","configurable","$init","documentElement","insertMatch","$onPopupShow","$onHidePopup","$onPopupChange","mouseOutListener","$onPopupRender","$initInline","inlineRenderer","getPopup","hideDocTooltip","cancel","$seen","has","onSeen","$updateGhostText","base","cursorColumn","filtered","getFirstVisibleRow","getLastVisibleRow","observeLayoutChanges","$elements","addEventListener","passive","elements","unObserveLayoutChanges","_this","removeEventListener","layerConfig","getPixelPosition","rect","getBoundingClientRect","offset","scrollLeft","gutterWidth","posGhostText","$ghostTextWidget","position","offsetHeight","editorContainerBottom","lowestPosition","keepPopupPosition","oldRow","previousSelectedItem","textInput","setAriaOptions","activeDescendant","inline","newRow","setTheme","getTheme","setFontSize","getFontSize","tooltipNode","activated","getElement","fromTooltip","relatedTarget","getCompletionProvider","showPopup","CompletionProvider","gatherCompletions","setFilter","createAnchor","$insertRight","getSession","completionOptions","ignoreCaption","provideCompletions","finished","emptyMessage","completionsForEmpty","delay","cancelContextMenu","all","completersLength","getDocTooltip","completerId","docText","docHTML","showDocTooltip","item","margin","pointerEvents","overscrollBehavior","tabIndex","onblur","onclick","onTooltipClick","theme","isDark","cssClass","innerHTML","textContent","offsetTop","isFocused","a","target","nodeName","href","rel","Up","Down","Return","deleteSuffix","PageUp","gotoPageUp","PageDown","gotoPageDown","for","once","startCommand","bindKey","insertByIndex","startOperation","getAllRanges","$insertString","onInsert","endOperation","total","getCompletions","results","assign","processResults","isImmediate","immediateResults","filterCompletions","sort","b","$score","localeCompare","prev","filter","items","needle","upper","loop","penalty","distance","fullMatchIndex","i2","score","splitRegex","getWordIndex","textBefore","wordDistance","prefixPos","words","wordScores","create","currentWord","word","idx","abs","wordScore","wordList","textCompleter","keyWordCompleter","transformSnippetTooltip","record","_","p1","p2","p3","snippetCompleter","getTokenAt","escapeHTML","setCompleters","addCompleter","onChangeMode","loadSnippetsForMode","$modes","files","loadSnippetFile","snippetFileId","modes","snippetFilePath","loadModule","doLiveAutocomplete","hasCompleter","lastExecEvent","$liveAutocompletionDelay","liveAutocompleteTimer","showLiveAutocomplete","$liveAutocompletionThreshold","defineOptions","enableBasicAutocompletion","set","addCommand","removeCommand","enableLiveAutocompletion","liveAutocompletionDelay","initialValue","liveAutocompletionThreshold","enableSnippets"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- var e={exports:{}};(function(e,t){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){var r=e("../lib/oop");var i=e("./text_highlight_rules").TextHighlightRules;var o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(o,i);t.JsonHighlightRules=o}));ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){var r=e("../range").Range;var i=function(){};(function(){this.checkOutdent=function(e,t){if(!/^\s+$/.test(e))return false;return/^\s*\}/.test(t)};this.autoOutdent=function(e,t){var n=e.getLine(t);var i=n.match(/^(\s*\})/);if(!i)return 0;var o=i[1].length;var a=e.findMatchingBracket({row:t,column:o});if(!a||a.row==t)return 0;var s=this.$getIndent(e.getLine(a.row));e.replace(new r(t,0,t,o-1),s)};this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype);t.MatchingBraceOutdent=i}));ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){var r=e("../../lib/oop");var i=e("../../range").Range;var o=e("./fold_mode").FoldMode;var a=t.FoldMode=function(e){if(e){this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start));this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))}};r.inherits(a,o);(function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/;this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/;this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/;this._getFoldWidgetBase=this.getFoldWidget;this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)){if(!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return""}var i=this._getFoldWidgetBase(e,t,n);if(!i&&this.startRegionRe.test(r))return"start";return i};this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var o=i.match(this.foldingStartMarker);if(o){var a=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,a);var s=e.getCommentFoldRange(n,a+o[0].length,1);if(s&&!s.isMultiLine()){if(r){s=this.getSectionRange(e,n)}else if(t!="all")s=null}return s}if(t==="markbegin")return;var o=i.match(this.foldingStopMarker);if(o){var a=o.index+o[0].length;if(o[1])return this.closingBracketBlock(e,o[1],n,a);return e.getCommentFoldRange(n,a,-1)}};this.getSectionRange=function(e,t){var n=e.getLine(t);var r=n.search(/\S/);var o=t;var a=n.length;t=t+1;var s=t;var g=e.getLength();while(++t<g){n=e.getLine(t);var c=n.search(/\S/);if(c===-1)continue;if(r>c)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=o){break}else if(l.isMultiLine()){t=l.end.row}else if(r==c){break}}s=t}return new i(o,a,s,e.getLine(s).length)};this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/);var o=e.getLength();var a=n;var s=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;var g=1;while(++n<o){t=e.getLine(n);var c=s.exec(t);if(!c)continue;if(c[1])g--;else g++;if(!g)break}var l=n;if(l>a){return new i(a,r,l,t.length)}}}).call(a.prototype)}));ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(e,t,n){var r=e("../lib/oop");var i=e("./text").Mode;var o=e("./json_highlight_rules").JsonHighlightRules;var a=e("./matching_brace_outdent").MatchingBraceOutdent;var s=e("./folding/cstyle").FoldMode;var g=e("../worker/worker_client").WorkerClient;var c=function(){this.HighlightRules=o;this.$outdent=new a;this.$behaviour=this.$defaultBehaviour;this.foldingRules=new s};r.inherits(c,i);(function(){this.lineCommentStart="//";this.blockComment={start:"/*",end:"*/"};this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);if(i){r+=n}}return r};this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)};this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)};this.createWorker=function(e){var t=new g(["ace"],"ace/mode/json_worker","JsonWorker");t.attachToDocument(e.getDocument());t.on("annotate",(function(t){e.setAnnotations(t.data)}));t.on("terminate",(function(){e.clearAnnotations()}));return t};this.$id="ace/mode/json"}).call(c.prototype);t.Mode=c}));(function(){ace.require(["ace/mode/json"],(function(t){if(e){e.exports=t}}))})()})(e);
3
- //# sourceMappingURL=mode-json-062fdb24.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mode-json-062fdb24.js","sources":["@flatbiz/antd/node_modules/ace-builds/src-noconflict/mode-json.js"],"sourcesContent":["ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\", // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\", // single line\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\", // single quoted strings are not allowed\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\", // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\", // comments are not allowed, but who cares?\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"names":["ace","define","require","exports","module","oop","TextHighlightRules","JsonHighlightRules","this","$rules","start","token","regex","next","string","defaultToken","comment","inherits","Range","MatchingBraceOutdent","checkOutdent","line","input","test","autoOutdent","doc","row","getLine","match","column","length","openBracePos","findMatchingBracket","indent","$getIndent","replace","call","prototype","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","RegExp","source","foldingStopMarker","end","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","session","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","i","index","openingBracketBlock","range","getCommentFoldRange","isMultiLine","getSectionRange","closingBracketBlock","startIndent","search","startRow","startColumn","endRow","maxRow","getLength","subRange","re","depth","m","exec","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","$defaultBehaviour","foldingRules","lineCommentStart","blockComment","getNextLineIndent","state","tab","createWorker","worker","attachToDocument","getDocument","on","e","setAnnotations","data","clearAnnotations","$id"],"mappings":"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","x_google_ignoreList":[0]}