{"version":3,"file":"ext-emmet-46702489.js","sources":["../../node_modules/ace-builds/src-noconflict/ext-emmet.js"],"sourcesContent":["ace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/range_list\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/clipboard\",\"ace/editor\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar RangeList = require(\"./range_list\").RangeList;\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = require(\"./tokenizer\").Tokenizer;\nvar clipboard = require(\"./clipboard\");\nvar VARIABLES = {\n CURRENT_WORD: function (editor) {\n return editor.session.getTextRange(editor.session.getWordRange());\n },\n SELECTION: function (editor, name, indentation) {\n var text = editor.session.getTextRange();\n if (indentation)\n return text.replace(/\\n\\r?([ \\t]*\\S)/g, \"\\n\" + indentation + \"$1\");\n return text;\n },\n CURRENT_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row);\n },\n PREV_LINE: function (editor) {\n return editor.session.getLine(editor.getCursorPosition().row - 1);\n },\n LINE_INDEX: function (editor) {\n return editor.getCursorPosition().row;\n },\n LINE_NUMBER: function (editor) {\n return editor.getCursorPosition().row + 1;\n },\n SOFT_TABS: function (editor) {\n return editor.session.getUseSoftTabs() ? \"YES\" : \"NO\";\n },\n TAB_SIZE: function (editor) {\n return editor.session.getTabSize();\n },\n CLIPBOARD: function (editor) {\n return clipboard.getText && clipboard.getText();\n },\n FILENAME: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0];\n },\n FILENAME_BASE: function (editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\\.[^.]*$/, \"\");\n },\n DIRECTORY: function (editor) {\n return this.FILEPATH(editor).replace(/[^/\\\\]*$/, \"\");\n },\n FILEPATH: function (editor) { return \"/not implemented.txt\"; },\n WORKSPACE_NAME: function () { return \"Unknown\"; },\n FULLNAME: function () { return \"Unknown\"; },\n BLOCK_COMMENT_START: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.start || \"\";\n },\n BLOCK_COMMENT_END: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.end || \"\";\n },\n LINE_COMMENT: function (editor) {\n var mode = editor.session.$mode || {};\n return mode.lineCommentStart || \"\";\n },\n CURRENT_YEAR: date.bind(null, { year: \"numeric\" }),\n CURRENT_YEAR_SHORT: date.bind(null, { year: \"2-digit\" }),\n CURRENT_MONTH: date.bind(null, { month: \"numeric\" }),\n CURRENT_MONTH_NAME: date.bind(null, { month: \"long\" }),\n CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: \"short\" }),\n CURRENT_DATE: date.bind(null, { day: \"2-digit\" }),\n CURRENT_DAY_NAME: date.bind(null, { weekday: \"long\" }),\n CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: \"short\" }),\n CURRENT_HOUR: date.bind(null, { hour: \"2-digit\", hour12: false }),\n CURRENT_MINUTE: date.bind(null, { minute: \"2-digit\" }),\n CURRENT_SECOND: date.bind(null, { second: \"2-digit\" })\n};\nVARIABLES.SELECTED_TEXT = VARIABLES.SELECTION;\nfunction date(dateFormat) {\n var str = new Date().toLocaleString(\"en-us\", dateFormat);\n return str.length == 1 ? \"0\" + str : str;\n}\nvar SnippetManager = /** @class */ (function () {\n function SnippetManager() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.variables = VARIABLES;\n }\n SnippetManager.prototype.getTokenizer = function () {\n return SnippetManager.$tokenizer || this.createTokenizer();\n };\n SnippetManager.prototype.createTokenizer = function () {\n function TabstopToken(str) {\n str = str.substr(1);\n if (/^\\d+$/.test(str))\n return [{ tabstopId: parseInt(str, 10) }];\n return [{ text: str }];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n var formatMatcher = {\n regex: \"/(\" + escape(\"/\") + \"+)/\",\n onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.fmtString = true;\n ts.guard = val.slice(1, -1);\n ts.flag = \"\";\n return \"\";\n },\n next: \"formatString\"\n };\n SnippetManager.$tokenizer = new Tokenizer({\n start: [\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n }\n else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n }\n return [val];\n } },\n { regex: /}/, onMatch: function (val, state, stack) {\n return [stack.length ? stack.shift() : val];\n } },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken },\n { regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function (str, state, stack) {\n var t = TabstopToken(str.substr(1));\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\" },\n { regex: /\\n/, token: \"newline\", merge: false }\n ],\n snippetVar: [\n { regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function (val, state, stack) {\n var choices = val.slice(1, -1).replace(/\\\\[,|\\\\]|,/g, function (operator) {\n return operator.length == 2 ? operator[1] : \"\\x00\";\n }).split(\"\\x00\").map(function (value) {\n return { value: value };\n });\n stack[0].choices = choices;\n return [choices[0]];\n }, next: \"start\" },\n formatMatcher,\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\" }\n ],\n formatString: [\n { regex: /:/, onMatch: function (val, state, stack) {\n if (stack.length && stack[0].expectElse) {\n stack[0].expectElse = false;\n stack[0].ifEnd = { elseEnd: stack[0] };\n return [stack[0].ifEnd];\n }\n return \":\";\n } },\n { regex: /\\\\./, onMatch: function (val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length)\n val = ch;\n else if (\"`$\\\\\".indexOf(ch) != -1)\n val = ch;\n else if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\t\";\n else if (\"ulULE\".indexOf(ch) != -1)\n val = { changeCase: ch, local: ch > \"a\" };\n return [val];\n } },\n { regex: \"/\\\\w*}\", onMatch: function (val, state, stack) {\n var next = stack.shift();\n if (next)\n next.flag = val.slice(1, -1);\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" },\n { regex: /\\$(?:\\d+|\\w+)/, onMatch: function (val, state, stack) {\n return [{ text: val.slice(1) }];\n } },\n { regex: /\\${\\w+/, onMatch: function (val, state, stack) {\n var token = { text: val.slice(2) };\n stack.unshift(token);\n return [token];\n }, next: \"formatStringVar\" },\n { regex: /\\n/, token: \"newline\", merge: false },\n { regex: /}/, onMatch: function (val, state, stack) {\n var next = stack.shift();\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\" }\n ],\n formatStringVar: [\n { regex: /:\\/\\w+}/, onMatch: function (val, state, stack) {\n var ts = stack[0];\n ts.formatFunction = val.slice(2, -1);\n return [stack.shift()];\n }, next: \"formatString\" },\n formatMatcher,\n { regex: /:[\\?\\-+]?/, onMatch: function (val, state, stack) {\n if (val[1] == \"+\")\n stack[0].ifEnd = stack[0];\n if (val[1] == \"?\")\n stack[0].expectElse = true;\n }, next: \"formatString\" },\n { regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"formatString\" }\n ]\n });\n return SnippetManager.$tokenizer;\n };\n SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) {\n return x.value || x;\n });\n };\n SnippetManager.prototype.getVariableValue = function (editor, name, indentation) {\n if (/^\\d+$/.test(name))\n return (this.variables.__ || {})[name] || \"\";\n if (/^[A-Z]\\d+$/.test(name))\n return (this.variables[name[0] + \"__\"] || {})[name.substr(1)] || \"\";\n name = name.replace(/^TM_/, \"\");\n if (!this.variables.hasOwnProperty(name))\n return \"\";\n var value = this.variables[name];\n if (typeof value == \"function\")\n value = this.variables[name](editor, name, indentation);\n return value == null ? \"\" : value;\n };\n SnippetManager.prototype.tmStrFormat = function (str, ch, editor) {\n if (!ch.fmt)\n return str;\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gim]/g, \"\"));\n var fmtTokens = typeof ch.fmt == \"string\" ? this.tokenizeTmSnippet(ch.fmt, \"formatString\") : ch.fmt;\n var _self = this;\n var formatted = str.replace(re, function () {\n var oldArgs = _self.variables.__;\n _self.variables.__ = [].slice.call(arguments);\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n }\n else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n }\n else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n }\n else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n _self.variables.__ = oldArgs;\n return fmtParts.join(\"\");\n });\n return formatted;\n };\n SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) {\n if (ch.formatFunction == \"upcase\")\n return str.toUpperCase();\n if (ch.formatFunction == \"downcase\")\n return str.toLowerCase();\n return str;\n };\n SnippetManager.prototype.resolveVariables = function (snippet, editor) {\n var result = [];\n var indentation = \"\";\n var afterNewLine = true;\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n if (ch == \"\\n\") {\n afterNewLine = true;\n indentation = \"\";\n }\n else if (afterNewLine) {\n indentation = /^\\t*/.exec(ch)[0];\n afterNewLine = /\\S/.test(ch);\n }\n continue;\n }\n if (!ch)\n continue;\n afterNewLine = false;\n if (ch.fmtString) {\n var j = snippet.indexOf(ch, i + 1);\n if (j == -1)\n j = snippet.length;\n ch.fmt = snippet.slice(i + 1, j);\n i = j;\n }\n if (ch.text) {\n var value = this.getVariableValue(editor, ch.text, indentation) + \"\";\n if (ch.fmtString)\n value = this.tmStrFormat(value, ch, editor);\n if (ch.formatFunction)\n value = this.tmFormatFunction(value, ch, editor);\n if (value && !ch.ifEnd) {\n result.push(value);\n gotoNext(ch);\n }\n else if (!value && ch.ifEnd) {\n gotoNext(ch.ifEnd);\n }\n }\n else if (ch.elseEnd) {\n gotoNext(ch.elseEnd);\n }\n else if (ch.tabstopId != null) {\n result.push(ch);\n }\n else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) {\n var processedSnippet = processSnippetText.call(this, editor, snippetText);\n return processedSnippet.text;\n };\n SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var processedSnippet = processSnippetText.call(this, editor, snippetText, options);\n var range = editor.getSelectionRange();\n if (options.range && options.range.compareRange(range) === 0) {\n range = options.range;\n }\n var end = editor.session.replace(range, processedSnippet.text);\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId);\n };\n SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var self = this;\n if (options.range && !(options.range instanceof Range))\n options.range = Range.fromPoints(options.range.start, options.range.end);\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText, options);\n editor.forEachSelection(function () {\n self.insertSnippetForSelection(editor, snippetText, options);\n }, null, { keepOrder: true });\n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n SnippetManager.prototype.$getScope = function (editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp)\n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n return scope;\n };\n SnippetManager.prototype.getActiveScopes = function (editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n SnippetManager.prototype.expandWithTab = function (editor, options) {\n var self = this;\n var result = editor.forEachSelection(function () {\n return self.expandSnippetForSelection(editor, options);\n }, null, { keepOrder: true });\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n SnippetManager.prototype.expandSnippetForSelection = function (editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length);\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n SnippetManager.prototype.register = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n if (!snippets)\n snippets = [];\n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n }\n else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n if (s.prefix)\n s.tabTrigger = s.prefix;\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n }\n else {\n Object.keys(snippets).forEach(function (key) {\n addSnippet(snippets[key]);\n });\n }\n this._signal(\"registerSnippets\", { scope: scope });\n };\n SnippetManager.prototype.unregister = function (snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope || scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope || scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n SnippetManager.prototype.parseSnippetFile = function (str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n }\n catch (e) { }\n }\n if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n }\n else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n }\n else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n }\n else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n SnippetManager.prototype.getSnippetByName = function (name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function (scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n return SnippetManager;\n}());\noop.implement(SnippetManager.prototype, EventEmitter);\nvar processSnippetText = function (editor, snippetText, options) {\n if (options === void 0) { options = {}; }\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function (x) {\n if (x == \"\\n\" && !options.excludeExtraIndent)\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function (p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function (t) { return typeof t === \"object\"; });\n if (isNested && !ts.value) {\n ts.value = value;\n }\n else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function (ts) { ts.length = 0; });\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || { tabstopId: p.tabstopId };\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function (parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function (t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1) {\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n }\n else\n column += t.length;\n text += t;\n }\n else if (t) {\n if (!t.start)\n t.start = { row: row, column: column };\n else\n t.end = { row: row, column: column };\n }\n });\n return {\n text: text,\n tabstops: tabstops,\n tokens: tokens\n };\n};\nvar TabstopManager = /** @class */ (function () {\n function TabstopManager(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n }\n TabstopManager.prototype.attach = function (editor) {\n this.$openTabstops = null;\n this.selectedTabstop = null;\n this.editor = editor;\n this.session = editor.session;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n TabstopManager.prototype.detach = function () {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges.length = 0;\n this.tabstops.length = 0;\n this.selectedTabstop = null;\n this.editor.off(\"change\", this.$onChange);\n this.editor.off(\"changeSelection\", this.$onChangeSelection);\n this.editor.off(\"changeSession\", this.$onChangeSession);\n this.editor.commands.off(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.session = null;\n this.editor = null;\n };\n TabstopManager.prototype.onChange = function (delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = this.tabstops.slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n TabstopManager.prototype.updateLinkedFields = function () {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n TabstopManager.prototype.onAfterExec = function (e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n TabstopManager.prototype.onChangeSelection = function () {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n TabstopManager.prototype.onChangeSession = function () {\n this.detach();\n };\n TabstopManager.prototype.tabNext = function (dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n if (index === 0)\n this.detach();\n };\n TabstopManager.prototype.selectTabstop = function (index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n this.selectedTabstop = ts;\n var range = ts.firstNonLinked || ts;\n if (ts.choices)\n range.cursor = range.start;\n if (!this.editor.inVirtualSelectionMode) {\n var sel = this.editor.multiSelect;\n sel.toSingleRange(range);\n for (var i = 0; i < ts.length; i++) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n }\n else {\n this.editor.selection.fromOrientedRange(range);\n }\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n if (this.selectedTabstop && this.selectedTabstop.choices)\n this.editor.execCommand(\"startAutocomplete\", { matches: this.selectedTabstop.choices });\n };\n TabstopManager.prototype.addTabstops = function (tabstops, start, end) {\n var useLink = this.useLink || !this.editor.getOption(\"enableMultiselect\");\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n tabstops.forEach(function (ts, index) {\n var dest = this.$openTabstops[index] || ts;\n for (var i = 0; i < ts.length; i++) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString || (dest.firstNonLinked && useLink)) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n }\n else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n dest.rangeList = dest.rangeList || new RangeList();\n dest.rangeList.$bias = 0;\n dest.rangeList.addList(dest);\n }, this);\n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n TabstopManager.prototype.addTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n TabstopManager.prototype.removeTabstopMarkers = function (ts) {\n var session = this.session;\n ts.forEach(function (range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n TabstopManager.prototype.removeRange = function (range) {\n var i = range.tabstop.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n if (i != -1)\n this.ranges.splice(i, 1);\n i = range.tabstop.rangeList.ranges.indexOf(range);\n if (i != -1)\n range.tabstop.splice(i, 1);\n this.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n return TabstopManager;\n}());\nTabstopManager.prototype.keyboardHandler = new HashHandler();\nTabstopManager.prototype.keyboardHandler.bindKeys({\n \"Tab\": function (editor) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(editor))\n return;\n editor.tabstopManager.tabNext(1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Shift-Tab\": function (editor) {\n editor.tabstopManager.tabNext(-1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Esc\": function (editor) {\n editor.tabstopManager.detach();\n }\n});\nvar movePoint = function (point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\nvar moveRelative = function (point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\ndom.importCssString(\"\\n.ace_snippet-marker {\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n background: rgba(194, 193, 208, 0.09);\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\n position: absolute;\\n}\", \"snippets.css\", false);\nexports.snippetManager = new SnippetManager();\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.insertSnippet = function (content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function (options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/ext/emmet\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/editor\",\"ace/snippets\",\"ace/range\",\"ace/config\",\"resources\",\"resources\",\"tabStops\",\"resources\",\"utils\",\"actions\"], function(require, exports, module){\"use strict\";\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar Editor = require(\"../editor\").Editor;\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar Range = require(\"../range\").Range;\nvar config = require(\"../config\");\nvar emmet, emmetPath;\nvar AceEmmetEditor = /** @class */ (function () {\n function AceEmmetEditor() {\n }\n AceEmmetEditor.prototype.setupContext = function (editor) {\n this.ace = editor;\n this.indentation = editor.session.getTabString();\n if (!emmet)\n emmet = window.emmet;\n var resources = emmet.resources || emmet.require(\"resources\");\n resources.setVariable(\"indentation\", this.indentation);\n this.$syntax = null;\n this.$syntax = this.getSyntax();\n };\n AceEmmetEditor.prototype.getSelectionRange = function () {\n var range = this.ace.getSelectionRange();\n var doc = this.ace.session.doc;\n return {\n start: doc.positionToIndex(range.start),\n end: doc.positionToIndex(range.end)\n };\n };\n AceEmmetEditor.prototype.createSelection = function (start, end) {\n var doc = this.ace.session.doc;\n this.ace.selection.setRange({\n start: doc.indexToPosition(start),\n end: doc.indexToPosition(end)\n });\n };\n AceEmmetEditor.prototype.getCurrentLineRange = function () {\n var ace = this.ace;\n var row = ace.getCursorPosition().row;\n var lineLength = ace.session.getLine(row).length;\n var index = ace.session.doc.positionToIndex({ row: row, column: 0 });\n return {\n start: index,\n end: index + lineLength\n };\n };\n AceEmmetEditor.prototype.getCaretPos = function () {\n var pos = this.ace.getCursorPosition();\n return this.ace.session.doc.positionToIndex(pos);\n };\n AceEmmetEditor.prototype.setCaretPos = function (index) {\n var pos = this.ace.session.doc.indexToPosition(index);\n this.ace.selection.moveToPosition(pos);\n };\n AceEmmetEditor.prototype.getCurrentLine = function () {\n var row = this.ace.getCursorPosition().row;\n return this.ace.session.getLine(row);\n };\n AceEmmetEditor.prototype.replaceContent = function (value, start, end, noIndent) {\n if (end == null)\n end = start == null ? this.getContent().length : start;\n if (start == null)\n start = 0;\n var editor = this.ace;\n var doc = editor.session.doc;\n var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end));\n editor.session.remove(range);\n range.end = range.start;\n value = this.$updateTabstops(value);\n snippetManager.insertSnippet(editor, value);\n };\n AceEmmetEditor.prototype.getContent = function () {\n return this.ace.getValue();\n };\n AceEmmetEditor.prototype.getSyntax = function () {\n if (this.$syntax)\n return this.$syntax;\n var syntax = this.ace.session.$modeId.split(\"/\").pop();\n if (syntax == \"html\" || syntax == \"php\") {\n var cursor = this.ace.getCursorPosition();\n var state = this.ace.session.getState(cursor.row);\n if (typeof state != \"string\")\n state = state[0];\n if (state) {\n state = state.split(\"-\");\n if (state.length > 1)\n syntax = state[0];\n else if (syntax == \"php\")\n syntax = \"html\";\n }\n }\n return syntax;\n };\n AceEmmetEditor.prototype.getProfileName = function () {\n var resources = emmet.resources || emmet.require(\"resources\");\n switch (this.getSyntax()) {\n case \"css\": return \"css\";\n case \"xml\":\n case \"xsl\":\n return \"xml\";\n case \"html\":\n var profile = resources.getVariable(\"profile\");\n if (!profile)\n profile = this.ace.session.getLines(0, 2).join(\"\").search(/]+XHTML/i) != -1 ? \"xhtml\" : \"html\";\n return profile;\n default:\n var mode = this.ace.session.$mode;\n return mode.emmetConfig && mode.emmetConfig.profile || \"xhtml\";\n }\n };\n AceEmmetEditor.prototype.prompt = function (title) {\n return prompt(title); // eslint-disable-line no-alert\n };\n AceEmmetEditor.prototype.getSelection = function () {\n return this.ace.session.getTextRange();\n };\n AceEmmetEditor.prototype.getFilePath = function () {\n return \"\";\n };\n AceEmmetEditor.prototype.$updateTabstops = function (value) {\n var base = 1000;\n var zeroBase = 0;\n var lastZero = null;\n var ts = emmet.tabStops || emmet.require('tabStops');\n var resources = emmet.resources || emmet.require(\"resources\");\n var settings = resources.getVocabulary(\"user\");\n var tabstopOptions = {\n tabstop: function (data) {\n var group = parseInt(data.group, 10);\n var isZero = group === 0;\n if (isZero)\n group = ++zeroBase;\n else\n group += base;\n var placeholder = data.placeholder;\n if (placeholder) {\n placeholder = ts.processText(placeholder, tabstopOptions);\n }\n var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}';\n if (isZero) {\n lastZero = [data.start, result];\n }\n return result;\n },\n escape: function (ch) {\n if (ch == '$')\n return '\\\\$';\n if (ch == '\\\\')\n return '\\\\\\\\';\n return ch;\n }\n };\n value = ts.processText(value, tabstopOptions);\n if (settings.variables['insert_final_tabstop'] && !/\\$\\{0\\}$/.test(value)) {\n value += '${0}';\n }\n else if (lastZero) {\n var common = emmet.utils ? emmet.utils.common : emmet.require('utils');\n value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]);\n }\n return value;\n };\n return AceEmmetEditor;\n}());\nvar keymap = {\n expand_abbreviation: { \"mac\": \"ctrl+alt+e\", \"win\": \"alt+e\" },\n match_pair_outward: { \"mac\": \"ctrl+d\", \"win\": \"ctrl+,\" },\n match_pair_inward: { \"mac\": \"ctrl+j\", \"win\": \"ctrl+shift+0\" },\n matching_pair: { \"mac\": \"ctrl+alt+j\", \"win\": \"alt+j\" },\n next_edit_point: \"alt+right\",\n prev_edit_point: \"alt+left\",\n toggle_comment: { \"mac\": \"command+/\", \"win\": \"ctrl+/\" },\n split_join_tag: { \"mac\": \"shift+command+'\", \"win\": \"shift+ctrl+`\" },\n remove_tag: { \"mac\": \"command+'\", \"win\": \"shift+ctrl+;\" },\n evaluate_math_expression: { \"mac\": \"shift+command+y\", \"win\": \"shift+ctrl+y\" },\n increment_number_by_1: \"ctrl+up\",\n decrement_number_by_1: \"ctrl+down\",\n increment_number_by_01: \"alt+up\",\n decrement_number_by_01: \"alt+down\",\n increment_number_by_10: { \"mac\": \"alt+command+up\", \"win\": \"shift+alt+up\" },\n decrement_number_by_10: { \"mac\": \"alt+command+down\", \"win\": \"shift+alt+down\" },\n select_next_item: { \"mac\": \"shift+command+.\", \"win\": \"shift+ctrl+.\" },\n select_previous_item: { \"mac\": \"shift+command+,\", \"win\": \"shift+ctrl+,\" },\n reflect_css_value: { \"mac\": \"shift+command+r\", \"win\": \"shift+ctrl+r\" },\n encode_decode_data_url: { \"mac\": \"shift+ctrl+d\", \"win\": \"ctrl+'\" },\n expand_abbreviation_with_tab: \"Tab\",\n wrap_with_abbreviation: { \"mac\": \"shift+ctrl+a\", \"win\": \"shift+ctrl+a\" }\n};\nvar editorProxy = new AceEmmetEditor();\nexports.commands = new HashHandler();\nexports.runEmmetCommand = function runEmmetCommand(editor) {\n if (this.action == \"expand_abbreviation_with_tab\") {\n if (!editor.selection.isEmpty())\n return false;\n var pos = editor.selection.lead;\n var token = editor.session.getTokenAt(pos.row, pos.column);\n if (token && /\\btag\\b/.test(token.type))\n return false;\n }\n try {\n editorProxy.setupContext(editor);\n var actions = emmet.actions || emmet.require(\"actions\");\n if (this.action == \"wrap_with_abbreviation\") {\n return setTimeout(function () {\n actions.run(\"wrap_with_abbreviation\", editorProxy);\n }, 0);\n }\n var result = actions.run(this.action, editorProxy);\n }\n catch (e) {\n if (!emmet) {\n var loading = exports.load(runEmmetCommand.bind(this, editor));\n if (this.action == \"expand_abbreviation_with_tab\")\n return false;\n return loading;\n }\n editor._signal(\"changeStatus\", typeof e == \"string\" ? e : e.message);\n config.warn(e);\n result = false;\n }\n return result;\n};\nfor (var command in keymap) {\n exports.commands.addCommand({\n name: \"emmet:\" + command,\n action: command,\n bindKey: keymap[command],\n exec: exports.runEmmetCommand,\n multiSelectAction: \"forEach\"\n });\n}\nexports.updateCommands = function (editor, enabled) {\n if (enabled) {\n editor.keyBinding.addKeyboardHandler(exports.commands);\n }\n else {\n editor.keyBinding.removeKeyboardHandler(exports.commands);\n }\n};\nexports.isSupportedMode = function (mode) {\n if (!mode)\n return false;\n if (mode.emmetConfig)\n return true;\n var id = mode.$id || mode;\n return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id);\n};\nexports.isAvailable = function (editor, command) {\n if (/(evaluate_math_expression|expand_abbreviation)$/.test(command))\n return true;\n var mode = editor.session.$mode;\n var isSupported = exports.isSupportedMode(mode);\n if (isSupported && mode.$modes) {\n try {\n editorProxy.setupContext(editor);\n if (/js|php/.test(editorProxy.getSyntax()))\n isSupported = false;\n }\n catch (e) { }\n }\n return isSupported;\n};\nvar onChangeMode = function (e, target) {\n var editor = target;\n if (!editor)\n return;\n var enabled = exports.isSupportedMode(editor.session.$mode);\n if (e.enableEmmet === false)\n enabled = false;\n if (enabled)\n exports.load();\n exports.updateCommands(editor, enabled);\n};\nexports.load = function (cb) {\n if (typeof emmetPath !== \"string\") {\n config.warn(\"script for emmet-core is not loaded\");\n return false;\n }\n config.loadModule(emmetPath, function () {\n emmetPath = null;\n cb && cb();\n });\n return true;\n};\nexports.AceEmmetEditor = AceEmmetEditor;\nconfig.defineOptions(Editor.prototype, \"editor\", {\n enableEmmet: {\n set: function (val) {\n this[val ? \"on\" : \"removeListener\"](\"changeMode\", onChangeMode);\n onChangeMode({ enableEmmet: !!val }, this);\n },\n value: true\n }\n});\nexports.setCore = function (e) {\n if (typeof e == \"string\")\n emmetPath = e;\n else\n emmet = e;\n};\n\n}); (function() {\n ace.require([\"ace/ext/emmet\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"names":["require","exports","module","dom","oop","EventEmitter","lang","Range","RangeList","HashHandler","Tokenizer","clipboard","VARIABLES","editor","name","indentation","text","mode","date","dateFormat","str","SnippetManager","TabstopToken","escape","ch","formatMatcher","val","state","stack","ts","t","choices","operator","value","next","token","startState","x","flag","re","fmtTokens","_self","formatted","oldArgs","fmtParts","gChangeCase","i","snippet","result","afterNewLine","j","gotoNext","i1","snippetText","processedSnippet","processSnippetText","options","range","end","tabstopManager","TabstopManager","selectionId","self","scope","c","scopes","snippetMap","cursor","line","before","after","snippets","snippetList","snippetNameMap","wrapRegexp","src","guardedRegexp","guard","opening","addSnippet","s","map","old","key","removeSnippet","nameMap","list","m","guardRe","tabString","indentString","tokens","tabstops","p","id","isNested","expanding","copyValue","copy","parentId","row","column","lines","delta","isRemove","selectedTabstop","parents","active","parentActive","startIndex","endIndex","toRemove","session","original","fmt","lead","anchor","isEmpty","containsLead","containsAnchor","dir","max","index","sel","start","useLink","moveRelative","arg","ranges","dest","movePoint","point","diff","Editor","content","snippetManager","config","emmet","emmetPath","AceEmmetEditor","resources","doc","ace","lineLength","pos","noIndent","syntax","profile","title","base","zeroBase","lastZero","settings","tabstopOptions","data","group","isZero","placeholder","common","keymap","editorProxy","runEmmetCommand","actions","e","loading","command","enabled","isSupported","onChangeMode","target","cb"],"mappings":"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","x_google_ignoreList":[0]}