{"version":3,"names":["Completions","ColorHash","CompletionsBuilder","__SystemJSRewritingHack","stringProps","arrayProps","funcProps","Pos","importsCache","importsCacheTime","colorHash","lcmFromCM","cm","globalThis","systemActivity","lively","allParents","getWrapperElement","undefined","find","e","tagName","searchImports","Date","now","_recorder_","_src_components_widgets_lively_code_mirror_hint_js","fetch","lively4url","headers","searchpattern","rootdirs","replace","excludes","then","r","text","colorForString","str","hex","forOrigin","completion","origin","Object","assign","render","element","self","data","innerRender","append","_element","_attributes","_children","_childExpression","displayText","file","end","column","line","start","_attributeStringLiteral","_attributeExpression","javascriptHint","options","buildHint","setters","_reactiveJsx","_childElement","childElement","_childText","childText","attributeExpression","childExpression","children","attributeStringLiteral","attributes","_utils","uniq","utils","_srcClientConstantsJs","javaScriptKeywords","cssProperties","domEvents","_codeMirrorUtilsJs","indentSelections","_srcExternalColorHashJs","default","execute","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","getOwnPropertyNames","__proto__","CodeMirror","constructor","list","seenCompletions","Set","prepareToken","cursor","getCursor","token","getTokenAt","state","innerMode","getMode","type","ch","string","substring","test","slice","maybeAdd","simple","has","startsWith","add","push","asCompletionsObject","length","completionsObject","from","to","on","parentElement","querySelector","classList","hints","querySelectorAll","forEach","hint","i","prepend","saturation","lightness","completions","collectCompletions","getLine","completeFromImport","map","property","bind","completeLively","completeDoItCommand","completeFromTern","variables","startExpr","lineNumber","firstLine","whileLoop","tokens","getLineTokens","filter","t","reverse","parensBalance","includes","code","getRange","console","warn","decls","uniqueVariables","codeMirrorDecls","some","vari","babelDecls","split","finalCode","join","value","isError","codemirror","boundEval","gatherCompletionsForObject","tprop","getToken","context","completeMembersOfThis","global","globalScope","window","obj","pop","base","indexOf","additionalContext","useGlobalScope","jQuery","_","c","prevToken","prevPrevToken","completeUtilsFunctions","v","localVars","next","name","w","globalVars","keyword","hintPrefix","allProps","forPropList","Array","Function","propList","o","getPrototypeOf","prop","addObjectProp","descriptor","getOwnPropertyDescriptor","toString","first","args","parseArgsFrom","completeFunction","commands","indentAuto","n","nodeType","traverseAsAST","path","params","param","isIdentifier","node","arg","traverse","Identifier","currentClass","eachLine","lineHandle","classMatch","match","modifiers","argsAndBodyStart","myClass","grayish","content","style","replaceRange","getCompletionsFromImports","_context2","imports","ea","sort","call","keys","utilFuncName","offset","lines","getValue","funcs","setValue","prefix","setCursor","hintTexts","autocomplete","replaceSelection","setSelection","startLine","Infinity","lcm","tw","ternWrapper","fileName","getTargetModule","request","query","types","depths","docs","urls","origins","caseInsensitive","guess","expandWordForward","omitObjectPrototype","includeKeywords","inLiteral","lineCharPositions","files","parseArgsFromTernType","findMatchingParen","matches","matchAll","char","index","openParens","error","argsString","argWithType","funcName","firstArg","rest","registerHelper"],"sources":["lively-code-mirror-hint.js"],"sourcesContent":["import { uniq } from \"utils\";\n\nvar stringProps = Object.getOwnPropertyNames(''.__proto__);\nvar arrayProps = Object.getOwnPropertyNames([].__proto__);\nvar funcProps = Object.getOwnPropertyNames(function () {}.__proto__);\nimport { javaScriptKeywords, cssProperties, domEvents } from 'src/client/constants.js';\n\nimport * as utils from \"utils\";\nimport { indentSelections } from \"./code-mirror-utils.js\";\n\nvar Pos = CodeMirror.Pos;\n\nfunction lcmFromCM(cm) {\n  return lively.allParents(cm.getWrapperElement(), undefined, true).find(e => e.tagName === 'LIVELY-CODE-MIRROR');\n}\n\n/*MD # Import MD*/\nvar importsCache;\nvar importsCacheTime;\nasync function searchImports() {\n  if (!importsCache || Date.now() - importsCacheTime > 60 * 60 * 1000) {\n    importsCacheTime = Date.now();\n    importsCache = await fetch(lively4url + \"/../_search/files\", {\n      headers: {\n        searchpattern: \"^import\",\n        rootdirs: lively4url.replace(/.*\\//, \"\"),\n        excludes: \"node_modules,src/external,vendor/,lodash-bound.js\"\n      } }).then(r => r.text());\n  }\n  return importsCache;\n}\nsearchImports();\n\n/*MD # Completions MD*/\nclass Completions {\n\n  constructor(cm) {\n    this.cm = cm;\n    this.list = [];\n    this.seenCompletions = new Set();\n    this.prepareToken();\n  }\n\n  prepareToken() {\n    const cm = this.cm;\n\n    // Find the token at the cursor\n    var cursor = cm.getCursor();\n    var token = cm.getTokenAt(cursor);\n\n    token.state = CodeMirror.innerMode(cm.getMode(), token.state).state;\n\n    // lively.notify(token.string, token.type);\n    if (token.type === 'string') {\n      token = {\n        start: token.start + 1,\n        end: cursor.ch,\n        string: token.string.substring(1, cursor.ch - token.start),\n        state: token.state,\n        type: 'string'\n      };\n    } else if (!/^[\\w$_]*$/.test(token.string)) {\n      // If it's not a 'word-style' token, ignore the token.\n      token = {\n        start: cursor.ch,\n        end: cursor.ch,\n        string: \"\",\n        state: token.state,\n        type: token.string == \".\" ? \"property\" : null\n      };\n    } else if (token.end > cursor.ch) {\n      token.end = cursor.ch;\n      token.string = token.string.slice(0, cursor.ch - token.start);\n    }\n\n    this.token = token;\n  }\n\n  maybeAdd(completion) {\n    const simple = typeof completion === 'string';\n    const text = simple ? completion : completion.text;\n\n    if (this.seenCompletions.has(text)) {\n      return;\n    }\n\n    // #TODO: getTextAt(from, to) or string iff no from/to in completion\n    if (!text.startsWith(this.token.string)) {\n      return;\n    }\n\n    this.seenCompletions.add(text);\n    this.list.push(completion);\n  }\n\n  asCompletionsObject() {\n    if (this.list.length === 0) {\n      return;\n    }\n\n    const line = this.cm.getCursor().line;\n    const completionsObject = {\n      list: this.list,\n      from: Pos(line, this.token.start),\n      to: Pos(line, this.token.end)\n    };\n\n    CodeMirror.on(completionsObject, \"shown\", () => {\n      // lively.warn(\"shown\");\n    });\n    CodeMirror.on(completionsObject, \"select\", (completion, element) => {\n      if (!element.parentElement.querySelector('li.shortcut-present')) {\n        element.classList.add('shortcut-present');\n        const hints = element.parentElement.querySelectorAll('li.CodeMirror-hint');\n        hints.forEach((hint, i) => {\n          if (i > 9) {\n            return;\n          }\n          hint.prepend(<span style=\"position: absolute; transform: translate(-6px, 0); font-size: xx-small; color: darkgray; background: white;\">{i}</span>);\n        });\n      }\n    });\n    CodeMirror.on(completionsObject, \"pick\", completion => {\n      // lively.warn(\"pick\");\n    });\n    CodeMirror.on(completionsObject, \"close\", () => {\n      // lively.warn(\"close\");\n    });\n\n    return completionsObject;\n  }\n}\nimport ColorHash from 'src/external/color-hash.js';\nconst colorHash = new ColorHash({ saturation: 0.8, lightness: 0.8 });\n\nfunction colorForString(str) {\n  return colorHash.hex(str);\n}\n\nfunction forOrigin(completion, origin) {\n  if (typeof completion === 'string') {\n    completion = {\n      text: completion\n    };\n  }\n\n  return Object.assign({\n    render(element, self, data) {\n      if (completion.innerRender) {\n        completion.innerRender(element, self, data);\n      } else {\n        element.append(<span>{completion.displayText || completion.text}</span>);\n      }\n      element.append(<span style=\"display: inline-block; width: 50px;\"></span>);\n      element.append(<span style={`background: ${colorForString(origin)}; color: black; position: absolute; right: 2px; font-size: x-small;`}>{origin}</span>);\n    }\n  }, completion);\n}\n\n/*MD # CompletionsBuilder MD*/\nclass CompletionsBuilder {\n\n  constructor(cm) {\n    this.cm = cm;\n    this.completions = new Completions(cm);\n  }\n\n  maybeAdd(str) {\n    this.completions.maybeAdd(str);\n  }\n\n  async buildHint(options) {\n    await this.collectCompletions(options);\n\n    // lively.notify(this.completions.list.length, 'num completions');\n    return this.completions.asCompletionsObject();\n  }\n\n  async collectCompletions(options) {\n    const cm = this.cm;\n    const completions = this.completions;\n\n    var cursor = cm.getCursor();\n\n    const line = cm.getLine(cursor.line);\n    if (line.startsWith(\"import\")) {\n      await this.completeFromImport(cm);\n      return;\n    }\n\n    var token = completions.token;\n    // lively.notify('type: ' + token.type, 'string: ' + token.string);\n\n    if (token.type === 'string') {\n      cssProperties.map(property => forOrigin(property, 'cssProperties')).forEach(::this.maybeAdd);\n      domEvents.map(property => forOrigin(property, 'domEvents')).forEach(::this.maybeAdd);\n      return;\n    }\n\n    if (token.type === 'comment') {\n      return;\n    }\n\n    this.completeLively();\n    this.completeDoItCommand();\n\n    await this.completeFromTern();\n\n    if (token.type === 'property') {\n      const variables = [];\n      const startExpr = {};\n\n      let lineNumber = cursor.line;\n      let firstLine = true;\n      whileLoop: while (lineNumber >= 0) {\n        let tokens;\n        tokens = cm.getLineTokens(lineNumber, true);\n        if (firstLine) {\n          firstLine = false;\n          tokens = tokens.filter(t => t.start < token.start);\n        }\n        tokens = tokens.reverse();\n\n        let parensBalance = 0;\n\n        for (let { string, type, start } of tokens) {\n          // console.log( string, type, start )\n          if (type === null && string === '(') {\n            parensBalance--;\n          } else if (type === null && string === ')') {\n            parensBalance++;\n          } else if (typeof type === 'string' && type.includes('variable')) {\n            variables.push(string);\n            if (parensBalance <= 0) {\n              startExpr.ch = start;\n              startExpr.line = lineNumber;\n              break whileLoop;\n            }\n          }\n        }\n        lineNumber--;\n      }\n\n      let code;\n      // lively.notify(variables, 'variables')\n      try {\n        code = cm.getRange(startExpr, { line: cursor.line, ch: token.start - 1 });\n      } catch (e) {\n        console.warn(\"Error in code-mirror-hint, could not comlete, because: \", e);\n        return;\n      }\n\n      const decls = [];\n\n      // lively.getClientBounds(document.body)\n      //   .topLeft().subPt(pt(-10, 0)).x.rFOOOOOO\n\n      const uniqueVariables = new Set(variables);\n\n      decls.push(`var decls = await System.import('src/components/widgets/lively-code-mirror-hint-decls.js');`);\n      const codeMirrorDecls = 'cm, lcm';\n      if (['cm', 'lcm'].some(vari => uniqueVariables.has(vari))) {\n        decls.push(`var { cm, lcm } = await decls.codeMirror();`);\n      }\n      const babelDecls = 'babel, t, template, path, parentPath, node, parentNode, identifier, scope, binding';\n      if (babelDecls.split(', ').some(vari => uniqueVariables.has(vari))) {\n        decls.push(`var { ${babelDecls} } = await decls.babel();`);\n      }\n      const finalCode = `(async () => {\ntry {\n${decls.join(`;\n`)}\nreturn ${code}\n} catch(e) {}\n})()`;\n\n      var { value, isError } = await options.codemirror.boundEval(finalCode);\n      if (isError) {\n        lively.warn(value);\n      } else {\n        value = await value;\n        this.gatherCompletionsForObject(value, 'x');\n      }\n    }\n\n    var tprop = token;\n    const getToken = ::cm.getTokenAt;\n    // If it is a property, find out what it is a property of.\n    while (tprop.type == \"property\") {\n      tprop = getToken(Pos(cursor.line, tprop.start));\n      if (tprop.string != \".\") {\n        break;\n      }\n      tprop = getToken(Pos(cursor.line, tprop.start));\n      if (!context) {\n        var context = [];\n      }\n      context.push(tprop);\n    }\n\n    if (context && context.length === 1 && context[0].string === 'this') {\n      this.completeMembersOfThis();\n    }\n\n    var global = options && options.globalScope || window;\n\n    if (context && context.length) {\n      // If this is a property, see if it belongs to some object we can\n      // find in the current environment.\n      var obj = context.pop(),\n          base;\n\n      if (obj.type && obj.type.indexOf(\"variable\") === 0 || obj.string == \"this\") {\n        if (options && options.additionalContext) base = options.additionalContext[obj.string];\n\n        if (base === undefined && obj && obj.string) {\n          // #TODO instead of doing a blackbox evaluation of a string, we could look into the various scopes... \n          // in the module or live prgoramming data structures... e.g. from AST with trace data such as #ContinuousEditor\n          // documentation: getDoitContext() and getTargetModule()\n          var { value, isError } = await options.codemirror.boundEval(obj.string);\n          if (!isError) {\n            base = value;\n          }\n        }\n        if (!options || options.useGlobalScope !== false) {\n          base = base || global[obj.string];\n        }\n      } else if (obj.type == \"string\") {\n        base = \"\";\n      } else if (obj.type == \"atom\") {\n        base = 1;\n      } else if (obj.type == \"function\") {\n\n        // #TODO make it work for function calls such as pt(10,10), too.... \n        if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') && typeof global.jQuery == 'function') {\n          base = global.jQuery();\n        } else if (global._ != null && obj.string == '_' && typeof global._ == 'function') {\n          base = global._();\n        };\n      }\n      while (base != null && context.length) base = base[context.pop().string];\n      if (base != null) this.gatherCompletionsForObject(base);\n      return;\n    }\n\n    const c = cm.getCursor();\n    const prevToken = cm.getTokenAt({ line: c.line, ch: token.start - 0 });\n    const prevPrevToken = cm.getTokenAt({ line: c.line, ch: token.start - 1 });\n    if (prevToken.string == \":\" && prevPrevToken.string == \":\") {\n      this.completeUtilsFunctions(token);\n      return;\n    }\n\n    // If not, just look in the global object and any local scope\n    // (reading into JS mode internals to get at the local and global variables)\n\n    for (var v = token.state.localVars; v; v = v.next) {\n      this.maybeAdd(forOrigin(v.name, 'local'));\n    }\n    for (var w = token.state.globalVars; w; w = w.next) {\n      this.maybeAdd(forOrigin(w.name, 'global'));\n    }\n    if (!options || options.useGlobalScope !== false) {\n      this.gatherCompletionsForObject(global);\n    }\n\n    javaScriptKeywords.map(keyword => forOrigin(keyword + ' ', 'keyword')).forEach(::this.maybeAdd);\n  }\n\n  /*MD ## Completions for an Object MD*/\n  gatherCompletionsForObject(obj, hintPrefix = '') {\n    this.allProps(obj, hintPrefix);\n\n    if (typeof obj == \"string\") {\n      this.forPropList(stringProps, hintPrefix + 'str');\n    } else if (obj instanceof Array) {\n      this.forPropList(arrayProps, hintPrefix + 'arr');\n    } else if (obj instanceof Function) {\n      this.forPropList(funcProps, hintPrefix + 'fun');\n    }\n  }\n\n  forPropList(propList, origin) {\n    propList.map(name => forOrigin(name, origin)).forEach(::this.maybeAdd);\n  }\n\n  allProps(obj, hintPrefix) {\n    for (var o = obj; o; o = Object.getPrototypeOf(o)) {\n      Object.getOwnPropertyNames(o).forEach(prop => this.addObjectProp(o, prop, hintPrefix));\n    }\n  }\n\n  addObjectProp(obj, prop, hintPrefix) {\n    let completion = prop;\n    const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n    let value = descriptor.value;\n\n    if (value) {\n      if (typeof value === 'function') {\n        let str = value.toString().split('\\n').first.substring(0, 50);\n        completion = {\n          text: prop,\n          innerRender(element, self, data) {\n            element.append(<span>{prop} <span style=\"color: rgba(200, 200, 200, 0.9)\">{str}</span></span>);\n          },\n          hint: (cm, self, data) => {\n            const args = this.parseArgsFrom(`const fn = ${value}`, 'FunctionExpression') || this.parseArgsFrom(`class C {${value}}`, 'ClassMethod') || [];\n\n            this.completeFunction(cm, self, data, prop, args);\n            CodeMirror.commands.indentAuto(cm);\n          }\n        };\n        this.maybeAdd(forOrigin(completion, hintPrefix + 'prop'));\n        return;\n      } else if (value.toString) {\n        value = value.toString().substring(0, 50);\n      }\n      lively.n;\n      completion = {\n        text: prop,\n        innerRender(element, self, data) {\n          element.append(<span>{prop} <span style=\"color: rgba(200, 200, 200, 0.9)\">{value}</span></span>);\n        }\n      };\n    } else {}\n\n    this.maybeAdd(forOrigin(completion, hintPrefix + 'prop'));\n  }\n\n  parseArgsFrom(code, nodeType) {\n    const args = [];\n    try {\n      code.traverseAsAST({\n        [nodeType](path) {\n          const params = path.get('params');\n          params.forEach(param => {\n            if (param.isIdentifier()) {\n              args.push(param.node.name);\n            } else {\n              // RestElement, Patterns\n              let arg = '';\n              param.traverse({\n                Identifier(path) {\n                  arg += path.node.name;\n                }\n              });\n              args.push(arg);\n            }\n          });\n        }\n      });\n      return args;\n    } catch (e) {}\n  }\n\n  /*MD ## Specific Completions MD*/\n  completeMembersOfThis() {\n    let currentClass;\n    this.cm.eachLine(lineHandle => {\n      const classMatch = lineHandle.text.match(/^(?:\\s|export\\s|default\\s)*class\\s+([_$a-zA-z][_$a-zA-Z0-9]*).*\\{$/);\n      if (classMatch) {\n        currentClass = classMatch[1];\n        // lively.notify(Object.getOwnPropertyNames(lineHandle));\n        return;\n      }\n\n      const firstLine = lineHandle.text;\n      const match = firstLine.match(/^\\s*((?:async\\s|get\\s|set\\s|static\\s)*)([_$a-zA-z][_$a-zA-Z0-9]*)(\\*?\\s*\\(.*\\)\\s*\\{)$/);\n      if (match) {\n        const [, modifiers, name, argsAndBodyStart] = match;\n        if (javaScriptKeywords.includes(name) || name === 'constructor') {\n          return;\n        }\n\n        const myClass = currentClass;\n        const completion = {\n          text: name,\n          innerRender(element, self, data) {\n            function grayish(content) {\n              const style = \"color: rgba(200, 200, 200, 0.9); display:inline-block; max-width: 50ch;\";\n              return <span style={style}>{content}</span>;\n            }\n            element.append(<span>{grayish(modifiers + (myClass ? myClass + '::' : ''))}{name}{grayish(argsAndBodyStart)}</span>);\n          },\n          hint: (cm, self, data) => {\n            if (modifiers.includes('get') || modifiers.includes('set')) {\n              cm.replaceRange(data.text, self.from, self.to);\n            } else {\n              const args = this.parseArgsFrom(`class C {${firstLine}}}`, 'ClassMethod') || [];\n              this.completeFunction(cm, self, data, name, args);\n            }\n            CodeMirror.commands.indentAuto(cm);\n          }\n        };\n        // lively.notify(name);\n        this.maybeAdd(forOrigin(completion, 'member'));\n      }\n    });\n  }\n\n  async completeFromImport(cm) {\n    const getCompletionsFromImports = async () => {\n      // #TODO make faster with index and caching\n      // but: #TODO what is the workflox / programming XP, we aim for?\n      var text = await searchImports();\n      var imports = text.split(\"\\n\").map(ea => ea.replace(/.*:/, \"\").replace(/;$/, \"\").replace(/\"/g, \"'\")).filter(ea => !ea.match('\\'\\.\\.?/')).filter(ea => ea.startsWith(\"import \")).sort()::uniq();\n      imports.map(i => forOrigin(i, 'import')).forEach(::this.maybeAdd);\n    };\n\n    const getToken = ::cm.getTokenAt;\n\n    // Find the token at the cursor\n    var cursor = cm.getCursor();\n    var token = getToken(cursor);\n\n    // use a \"line\" token\n    this.completions.token = {\n      start: 0,\n      end: cursor.ch,\n      string: cm.getLine(cursor.line),\n      state: token.state,\n      type: null\n    };\n\n    await getCompletionsFromImports();\n  }\n\n  completeUtilsFunctions(token) {\n    Object.keys(utils).filter(ea => ea.startsWith(token.string)).forEach(utilFuncName => {\n      const completion = {\n        text: utilFuncName,\n        displayText: \"util.\" + utilFuncName,\n        hint: (cm, self, data) => {\n          var offset = 0;\n          cm.replaceRange(utilFuncName + \"()\", self.from, self.to);\n          var lines = cm.getValue().split(\"\\n\");\n          var imports = lines.filter(ea => ea.match(/^import .*from ['\"]utils['\"];?/));\n          if (!imports.find(ea => ea.match(utilFuncName))) {\n            var utils = imports.find(ea => ea.match(/import {.*} from 'utils';/));\n            if (utils) {\n              var funcs = utils.replace(/.*{ */, \"\").replace(/ *}.*/, \"\").split(/ *, */);\n              funcs.push(utilFuncName);\n              lines = lines.map(ea => ea == utils ? `import { ${funcs.sort().join(\", \")} } from 'utils';` : ea);\n              cm.setValue(lines.join(\"\\n\"));\n            } else {\n              var prefix = `import { ${utilFuncName} } from 'utils';\\n`;\n              cm.setValue(prefix + cm.getValue());\n              offset += 1;\n            }\n          }\n          cm.setCursor({ line: self.from.line + offset, ch: self.from.ch + utilFuncName.length + \"(\".length });\n        }\n      };\n\n      this.completions.maybeAdd(forOrigin(completion, 'utils'));\n    });\n  }\n\n  completeLively() {\n    const hintTexts = ['lively.', 'gs.'];\n    hintTexts.forEach(text => {\n      if (['variable', null].includes(this.completions.token.type)) {\n        this.maybeAdd({\n          text,\n          hint: (cm, self, data) => {\n            cm.replaceRange(text, self.from, self.to);\n            CodeMirror.commands.indentAuto(cm);\n            CodeMirror.commands.autocomplete(cm);\n          }\n        });\n      }\n    })\n    \n    if (['variable', null].includes(this.completions.token.type)) {\n      this.maybeAdd({\n        text: 'notify',\n        render(element, self, data) {\n          element.append(<span>lively.notify(<span style=\"color: rgba(200, 200, 200, 0.9); display:inline-block; max-width: 50ch;\">msg</span>)</span>);\n        },\n        hint: (cm, self, data) => {\n          cm.replaceRange('lively.notify(', self.from, self.to);\n          cm.replaceSelection(')', 'start');\n          // cm.replaceSelection('', 'around');\n          // cm.replaceRange(text, self.from, self.to);\n          CodeMirror.commands.indentAuto(cm);\n          CodeMirror.commands.autocomplete(cm);\n        }\n      });\n    }\n  }\n\n  completeDoItCommand() {\n    const token = this.completions.token;\n    const str = token.string;\n    const cm = this.cm;\n    var cursor = cm.getCursor();\n\n    if (str.length >= 1 && 'DoItCommand'.startsWith(str)) {\n      var tprop = token;\n      const getToken = ::cm.getTokenAt;\n      if (token.type == \"variable\") {\n        const { type, string, start } = getToken(Pos(cursor.line, tprop.start));\n        if (type === null && string === ' ') {\n          const { type, string } = getToken(Pos(cursor.line, start));\n          if (type === 'keyword' && string === 'new') {\n\n            this.maybeAdd({\n              text: 'DoItCommand(args)',\n              hint: async (cm, self, data) => {\n                cm.setSelection(self.from, self.to);\n                cm.replaceSelection(`DoItCommand({\n  label: 'DoItCommand',\n  do: () => {\n    \n  },\n  undo: () => {\n    \n  },\n  redo: () => {\n    \n  }\n})`, 'around');\n                cm::indentSelections();\n                const startLine = cm.getCursor('start').line;\n                cm.setCursor(startLine + 3, Infinity);\n                CodeMirror.commands.autocomplete(cm);\n              }\n            });\n          }\n        }\n      }\n    }\n  }\n\n  /*MD ## Tern Integration MD*/\n  async completeFromTern() {\n    const lcm = lcmFromCM(this.cm);\n    const tw = await lcm.ternWrapper;\n    const fileName = lcm.getTargetModule();\n    const data = await tw.request({\n      query: {\n        type: \"completions\",\n        types: true,\n        file: fileName,\n        end: this.cm.getCursor(),\n        depths: true,\n        docs: true,\n        urls: true,\n        origins: true,\n        filter: false,\n        caseInsensitive: false,\n        guess: false,\n        sort: false,\n        expandWordForward: true,\n        omitObjectPrototype: true,\n        includeKeywords: false,\n        inLiteral: true,\n        start: undefined, // #TODO: improve by checking for selections first\n        lineCharPositions: true\n      },\n      files: [{\n        type: 'full',\n        name: fileName,\n        text: lcm.value\n      }]\n    });\n\n    data.completions.map(({ name, type }) => forOrigin(type && type !== '?' ? {\n      text: name,\n      innerRender(element, self, data) {\n        element.append(<span>{name} <span style=\"color: rgba(200, 200, 200, 0.9); display:inline-block; max-width: 50ch;\">{type}</span></span>);\n      },\n      hint: (cm, self, data) => {\n        if (type.startsWith('fn(') && !/^[A-Z]/.test(name)) {\n          const parseArgsFromTernType = str => {\n\n            const findMatchingParen = (str, start) => {\n              str = str.substring(start);\n\n              const matches = [...str.matchAll(/[()]/g)].map(match => ({ char: match[0], index: match.index }));\n\n              let openParens = 1;\n\n              for (let match of matches) {\n                const { char, index } = match;\n\n                if (char === '(') {\n                  openParens++;\n                } else if (char === ')') {\n                  openParens--;\n                  if (openParens === 0) {\n                    return index + start;\n                  }\n                } else {\n                  lively.error(`parseFnFromTern: match ${char} at position ${index} should never happen`);\n                }\n              }\n\n              return -1;\n            };\n\n            const start = str.indexOf('(') + 1;\n            const end = findMatchingParen(str, start);\n            const argsString = str.substring(start, end);\n            return argsString.split(', ').map(argWithType => argWithType.replace(/:.*/gm, '').replace(/\\?/gm, ''));\n          };\n\n          this.completeFunction(cm, self, data, data.text, parseArgsFromTernType(type));\n        } else {\n          cm.replaceRange(data.text, self.from, self.to);\n        }\n        CodeMirror.commands.indentAuto(cm);\n      }\n\n    } : name, 'tern')).forEach(::this.maybeAdd);\n  }\n\n  /*MD ## Performing Completions MD*/\n  completeFunction(cm, self, data, funcName, args = []) {\n    cm.replaceRange(funcName + '(', self.from, self.to);\n    cm.replaceSelection(')', 'start');\n\n    const [firstArg, ...rest] = args;\n    if (rest.length > 0) {\n      cm.replaceSelection(', ' + rest.join(', '), 'start');\n    }\n    if (firstArg) {\n      cm.replaceSelection(firstArg, 'around');\n    }\n  }\n\n}\n\nfunction javascriptHint(cm, options) {\n  return new CompletionsBuilder(cm).buildHint(options);\n}\n\nCodeMirror.registerHelper(\"hint\", \"javascript\", javascriptHint);"],"mappings":"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"}