{"version":3,"names":["TernCodeMirrorWrapper","__SystemJSRewritingHack","showContextInfo","cm","data","tip","_element","_attributes","_children","_childElement","_childExpression","type","file","end","column","line","start","doc","appendChild","document","createTextNode","url","_attributeExpression","_attributeStringLiteral","_childText","tempTooltip","showError","msg","String","content","state","ternTooltip","remove","right","bottom","cursorCoords","undefined","makeTooltip","getWrapperElement","mouseOnTip","old","maybeClear","clear","parentNode","off","fadeOut","CodeMirror","on","e","targetElement","relatedTarget","toElement","contains","setTimeout","x","y","node","style","left","top","tooltip","opacity","parent","removeChild","jumpBack","cmEditor","livelyCodeMirror","ternServerWrapper","target","jumpStack","pop","moveTo","atInterestingExpression","pos","getCursor","tok","getTokenAt","ch","test","getLine","slice","Math","max","_export","setters","_reactiveJsx","attributeStringLiteral","attributeExpression","childText","childExpression","childElement","children","attributes","element","_srcExternalAexprTernTernJs","tern","default","t","_srcExternalAexprTernDefJs","_srcExternalAexprTernCommentJs","_srcExternalAexprTernInferJs","_srcExternalAexprTernModulesJs","_srcExternalAexprTernEs_modulesJs","_utils","loc","range","fileName","execute","_recorder_","_src_components_widgets_tern_wrapper_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","loadDefinition","fetch","then","res","json","initTernServer","Server","getFile","callback","text","catch","async","defs","plugins","es_modules","ternServer","_ternServerPromise","request","req","ts","Promise","resolve","reject","error","response","lively","showType","cursorPosition","query","getTargetModule","lineCharPositions","files","name","value","updateArgHints","_jumpStack","inner","targetCM","existingEditor","querySelectorAll","map","ea","getLivelyCodeMirror","compact","find","editor","livelyEditor","openBrowser","container","getEditor","currentEditor","enclosingWindow","findWindow","tagName","gotoWindow","focus","setSelection","jumpToDefinition","push","playgroundGetDefinition","location","r","_end","asCM","showReferences","me","success","refs","length","showHint","hint","list","ref","displayText","call","render","Element","self","anwser","from","to","alignWithWord","__temp__","server","notify"],"sources":["tern-wrapper.js"],"sourcesContent":["import tern, * as t from 'src/external/aexpr/tern/tern.js';\nimport 'src/external/aexpr/tern/def.js';\nimport 'src/external/aexpr/tern/comment.js';\nimport 'src/external/aexpr/tern/infer.js';\nimport 'src/external/aexpr/tern/modules.js';\nimport 'src/external/aexpr/tern/es_modules.js';\n\nimport { loc, range } from 'utils';\n\nt;\n\nimport { fileName } from 'utils';\n\n// // #######################\n// // Maintain Argument Hints\n// // #######################\n\n// async function updateArgHints(cm, lcm, serverWrapper) { // ts, cm\n//   closeArgHints(cm);\n\n//   if (cm.somethingSelected()) return lively.error(\"early out\");\n//   var state = cm.getTokenAt(cm.getCursor()).state;\n//   var inner = CodeMirror.innerMode(cm.getMode(), state);\n//   if (inner.mode.name != \"javascript\") return;\n//   var lex = inner.state.lexical;\n//   if (lex.info != \"call\") return;\n\n//   var ch, argPos = lex.pos || 0, tabSize = cm.getOption(\"tabSize\");\n//   for (var line = cm.getCursor().line, e = Math.max(0, line - 9), found = false; line >= e; --line) {\n//     var str = cm.getLine(line), extra = 0;\n//     for (var pos = 0;;) {\n//       var tab = str.indexOf(\"\\t\", pos);\n//       if (tab == -1) break;\n//       extra += tabSize - (tab + extra) % tabSize - 1;\n//       pos = tab + 1;\n//     }\n//     ch = lex.column - extra;\n//     if (str.charAt(ch) == \"(\") {found = true; break;}\n//   }\n//   if (!found) return;\n\n//   var start = CodeMirror.Pos(line, ch);\n//   var cache = cm.state.cachedArgHints;\n//   if (cache && cache.doc == cm.getDoc() && CodeMirror.cmpPos(start, cache.start) == 0) {\n//     return lively.notify(\"cached\", undefined, undefined, undefined, \"green\");\n//     return showArgHints(cm.state, cm, argPos);\n//   }\n//   // cm.state.cachedArgHints = {\n//   //   start: start,\n//   //   doc: cm.getDoc()\n//   // };\n//   lively.warn(\"calculate anew\");\n\n//   // cm.state.request(cm, {type: \"type\", preferFunction: true, end: start}, function(error, data) {\n//   //   cm.state.cachedArgHints = {\n//   //     start: start,\n//   //     type: parseFnType(data.type),\n//   //     name: data.exprName || data.name || \"fn\",\n//   //     guess: data.guess,\n//   //     doc: cm.getDoc()\n//   //   };\n//   //   showArgHints(cm.state, cm, argPos);\n//   // });\n\n//   let cmEditor = cm;\n//   let livelyCodeMirror = lcm;\n//   let cursorPosition = cmEditor.getCursor();\n\n//   try {\n//     let data = await serverWrapper.request({\n//       query: {\n//         type: \"type\",\n//         preferFunction: true,\n//         file: livelyCodeMirror.getTargetModule(),\n//         end: start\n//       },\n//       files: [{\n//         type: 'full',\n//         name: livelyCodeMirror.getTargetModule(),\n//         text: livelyCodeMirror.value\n//       }],\n//       //timeout: 10 * 1000\n//     });\n//     //if (!data.type || !(/^fn\\(/).test(data.type)) return;\n//     cm.state.cachedArgHints = {\n//       start: start,\n//       type: parseFnType(data.type),\n//       name: data.exprName || data.name || \"fn\",\n//       guess: data.guess,\n//       doc: cm.getDoc()\n//     };\n//     showArgHints({\n//       cachedArgHints: cm.state.cachedArgHints\n//     });\n//     //showContextInfo(cmEditor, response);\n//   } catch(error) {\n//     lively.error(\"ARG\", error.message)\n//     showError(cmEditor, error);\n//   }\n// }\n\n// function showArgHints(ts, cm, pos) {\n//   return;\n//   return lively.notify(ts.cachedArgHints.type, undefined, undefined, undefined, \"green\");\n//   closeArgHints(cm);\n\n//   var cache = ts.cachedArgHints, tp = cache.type;\n//   var tip = elt(\"span\", cache.guess ? cls + \"fhint-guess\" : null,\n//                 elt(\"span\", cls + \"fname\", cache.name), \"(\");\n//   for (var i = 0; i < tp.args.length; ++i) {\n//     if (i) tip.appendChild(document.createTextNode(\", \"));\n//     var arg = tp.args[i];\n//     tip.appendChild(elt(\"span\", cls + \"farg\" + (i == pos ? \" \" + cls + \"farg-current\" : \"\"), arg.name || \"?\"));\n//     if (arg.type != \"?\") {\n//       tip.appendChild(document.createTextNode(\":\\u00a0\"));\n//       tip.appendChild(elt(\"span\", cls + \"type\", arg.type));\n//     }\n//   }\n//   tip.appendChild(document.createTextNode(tp.rettype ? \") ->\\u00a0\" : \")\"));\n//   if (tp.rettype) tip.appendChild(elt(\"span\", cls + \"type\", tp.rettype));\n//   var place = cm.cursorCoords(null, \"page\");\n//   ts.activeArgHints = makeTooltip(place.right + 1, place.bottom, tip);\n// }\n\n// function parseFnType(text) {\n//   lively.notify(\"parse fn\")\n//   var args = [], pos = 3;\n\n//   function skipMatching(upto) {\n//     var depth = 0, start = pos;\n//     for (;;) {\n//       var next = text.charAt(pos);\n//       if (upto.test(next) && !depth) return text.slice(start, pos);\n//       if (/[{\\[\\(]/.test(next)) ++depth;\n//       else if (/[}\\]\\)]/.test(next)) --depth;\n//       ++pos;\n//     }\n//   }\n\n//   // Parse arguments\n//   if (text.charAt(pos) != \")\") for (;;) {\n//     var name = text.slice(pos).match(/^([^, \\(\\[\\{]+): /);\n//     if (name) {\n//       pos += name[0].length;\n//       name = name[1];\n//     }\n//     args.push({name: name, type: skipMatching(/[\\),]/)});\n//     if (text.charAt(pos) == \")\") break;\n//     pos += 2;\n//   }\n\n//   var rettype = text.slice(pos).match(/^\\) -> (.*)$/);\n\n//   return {args: args, rettype: rettype && rettype[1]};\n// }\n\n// function closeArgHints(ts) {\n//   if (ts.state.activeArgHints) {\n//     remove(ts.state.activeArgHints);\n//     ts.state.activeArgHints = null;\n//   }\n// }\n\nexport class TernCodeMirrorWrapper {\n  static loadDefinition(fileName) {\n    return fetch(`src/external/aexpr/tern/${fileName}`).then(res => res.json());\n  }\n  static async initTernServer() {\n    return new tern.Server({\n      getFile(fileName, callback) {\n        fetch(fileName)\n          .then(res => res.text())\n          .then(text => callback(null, text))\n          .catch(callback);\n      },\n      async: true,\n      // ecmaVersion: 6,\n      defs: [\n        await this.loadDefinition('browser.json'),\n        await this.loadDefinition('chai.json'),\n        await this.loadDefinition('ecmascript.json')\n      ],\n      plugins: {\n        es_modules: true\n      }\n    });\n  }\n  static async ternServer() {\n    return this._ternServerPromise = this._ternServerPromise || this.initTernServer();\n  }\n\n  static async request(req) {\n    let ts = await this.ternServer();\n    return new Promise((resolve, reject) => {\n      ts.request(req, (error, response) => {\n        if(error) {\n          lively.error(error);\n          reject(error);\n        } else {\n          resolve(response);\n        }\n      });\n    });\n  }\n\n  static async showType(cmEditor, livelyCodeMirror) {\n    let cursorPosition = cmEditor.getCursor();\n\n    try {\n      let response = await this.request({\n        query: {\n          type: \"type\",\n          file: livelyCodeMirror.getTargetModule(),\n          end: cursorPosition,\n          start: undefined, // #TODO: improve by checking for selections first\n          lineCharPositions: true\n        },\n        files: [{\n          type: 'full',\n          name: livelyCodeMirror.getTargetModule(),\n          text: livelyCodeMirror.value\n\n        }],\n        //timeout: 10 * 1000\n      });\n      showContextInfo(cmEditor, response);\n    } catch(error) {\n      showError(cmEditor, error);\n    }\n  }\n  static updateArgHints(cmEditor, livelyCodeMirror) {\n    // #TODO: implement efficiently\n    //updateArgHints(cmEditor, livelyCodeMirror, this)\n  }\n\n  static get jumpStack() {\n    return this._jumpStack || (this._jumpStack = []);\n  }\n  static async inner(cmEditor, livelyCodeMirror) {\n  }\n  static async moveTo(cmEditor, livelyCodeMirror, data) {\n    let targetCM = cmEditor;\n\n    // in same doc?\n    if(livelyCodeMirror.getTargetModule() !== data.file) {\n      let existingEditor = [...document.querySelectorAll(\"lively-container\")].map(ea => ea.getLivelyCodeMirror()).compact()\n        .find(livelyCodeMirror => livelyCodeMirror.getTargetModule() === data.file);\n      // jump to data.file\n      if(existingEditor) {\n        targetCM = existingEditor.editor;\n      } else {\n        let livelyEditor = await lively.openBrowser(data.file, true)\n          .then(container => container.getEditor());\n        targetCM = livelyEditor.currentEditor() //.editor;\n      }\n    }\n\n    let enclosingWindow = lively.findWindow(targetCM.getWrapperElement());\n    if(enclosingWindow && enclosingWindow.tagName === 'LIVELY-WINDOW') {\n      lively.gotoWindow(enclosingWindow, true);\n    }\n    targetCM.focus();\n\n    // go to correct location\n    targetCM.setSelection(data.start, data.end);\n  }\n\n  static async jumpToDefinition(cmEditor, livelyCodeMirror) {\n    if(!atInterestingExpression(cmEditor)) {\n      showError(cmEditor, 'No interesting variable found');\n      return;\n    }\n\n    let cursorPosition = cmEditor.getCursor();\n\n    try {\n      let data = await this.request({\n        query: {\n          type: \"definition\",\n          file: livelyCodeMirror.getTargetModule(),\n          end: cursorPosition,\n          start: undefined, // #TODO: improve by checking for selections first\n          lineCharPositions: true\n        },\n        files: [{\n          type: 'full',\n          name: livelyCodeMirror.getTargetModule(),\n          text: livelyCodeMirror.value\n        }]\n      });\n\n      // properties of response data\n      // [start, end, file, context, contextOffset, doc, url, origin]\n\n      if (data.file) {\n        this.jumpStack.push({\n          file: livelyCodeMirror.getTargetModule(),\n          start: cmEditor.getCursor(\"from\"),\n          end: cmEditor.getCursor(\"to\")\n        });\n        // ### Stackpush, then moveTo\n        this.moveTo(cmEditor, livelyCodeMirror, data);\n      } else {\n        showError(cmEditor, `Could not find a definition.`);\n      }\n    } catch(error) {\n      showError(cmEditor, error);\n    }\n  }\n  static async playgroundGetDefinition(cmEditor, livelyCodeMirror, location, callback) {\n    const r = range(location)\n\n    try {\n      let data = await this.request({\n        query: {\n          type: \"definition\",\n          file: livelyCodeMirror.getTargetModule(),\n          end: r._end.asCM(),\n          start: undefined, // #TODO: improve by checking for selections first\n          lineCharPositions: true\n        },\n        files: [{\n          type: 'full',\n          name: livelyCodeMirror.getTargetModule(),\n          text: livelyCodeMirror.value\n        }]\n      });\n\n      // properties of response data\n      // [start, end, file, context, contextOffset, doc, url, origin]\n\n      if (data.file) {\n        return data;\n      } else {\n        return;\n      }\n    } catch(error) {\n      return;\n    }\n  }\n  static async jumpBack(cmEditor, livelyCodeMirror) {\n    jumpBack(cmEditor, livelyCodeMirror, this);\n  }\n  static async showReferences(cmEditor, livelyCodeMirror) {\n    let cursorPosition = cmEditor.getCursor();\n    let me = this;\n\n    try {\n      let response = await this.request({\n        query: {\n          type: \"refs\",\n          file: livelyCodeMirror.getTargetModule(),\n          end: cursorPosition,\n          start: undefined, // #TODO: improve by checking for selections first\n          lineCharPositions: true\n        },\n        files: [{\n          type: 'full',\n          name: livelyCodeMirror.getTargetModule(),\n          text: livelyCodeMirror.value\n        }],\n        //timeout: 10 * 1000\n      });\n      lively.success(response.name)\n      if(response.refs.length === 0) {\n        showError(cmEditor, 'No reference found.');\n        return;\n      }\n\n      if(response.type) {\n        lively.success(response.type, \"Variable Scope\");\n      }\n      cmEditor.showHint({\n        hint() {\n          return {\n            list: response.refs.map(ref => {\n              return {\n                text: '',\n                displayText: fileName.call(ref.file),\n                render(Element, self, data) {\n                  //console.warn(data, self);\n                  Element.appendChild(<span><strong>{ref.file}</strong>{\n                    response.type ? ' ('+response.type+') ' : ''}({\n                    ref.start.line}:{ref.start.ch}-{\n                    ref.end.line}:{ref.end.ch})</span>);\n                },\n                hint: () => me.moveTo(cmEditor, livelyCodeMirror, ref),\n                anwser: 42\n              };\n            }),\n            from: cursorPosition,\n            to: cursorPosition\n          };\n        },\n        alignWithWord: false\n      });\n    } catch(error) {\n      showError(cmEditor, error);\n    }\n\n  }\n\n\n  static async __temp__(cm) {\n    let ts = await this.ternServer();\n\n    //   server.addFile('https://lively-kernel.org/lively4/foo/foo.js', `\n    // import { a } from './x';\n    // var d = a();\n    // d;`);\n    //   server.addFile('src/client/reactive/tern-spike/a.js');\n    //   server.addFile('https://lively-kernel.org/lively4/foo/x', `\n    // export function a() {\n    //   return document.createElement('span');\n    // }`);\n\n    server.request({\n      query: {\n        type: \"definition\",\n        file: 'src/client/reactive/tern-spike/a.js',\n        end: {\n          line: 1,\n          ch: 11\n        },\n        lineCharPositions: true\n      },\n      //files: [],\n      //timeout: 10 * 1000\n    }, (error, response) => {\n      if(error) {\n        lively.error(error);\n        reject(error);\n      } else {\n        lively.notify(response, undefined, undefined, undefined, 'green');\n        resolve(response);\n      }\n    });\n  }\n}\n\n// ###############\n// Show Type Query\n// ###############\n\nfunction showContextInfo(cm, data) {\n  var tip = <span><strong>{data.type || 'not found'}</strong></span>;\n  if(data.doc) {\n    tip.appendChild(document.createTextNode(' - ' + data.doc));\n  }\n  if(data.url) {\n    tip.appendChild(document.createTextNode(' '));\n    tip.appendChild(<a href={data.url} target=\"_blank\">[docs]</a>);\n  }\n  tempTooltip(cm, tip);\n}\n\nfunction showError(cm, msg) {\n  tempTooltip(cm, String(msg));\n}\n\nfunction tempTooltip(cm, content) {\n  if (cm.state.ternTooltip) remove(cm.state.ternTooltip);\n  let { right, bottom } = cm.cursorCoords(undefined, 'local');\n  let tip = cm.state.ternTooltip = makeTooltip(right + 1, bottom, content);\n  cm.getWrapperElement().appendChild(tip);\n  let mouseOnTip = false;\n  let old = false;\n  function maybeClear() {\n    old = true;\n    if (!mouseOnTip) clear();\n  }\n  function clear() {\n    cm.state.ternTooltip = null;\n    if (!tip.parentNode) return;\n    cm.off(\"cursorActivity\", clear);\n    cm.off('blur', clear);\n    cm.off('scroll', clear);\n    fadeOut(tip);\n  }\n  CodeMirror.on(tip, 'mousemove', () => mouseOnTip = true);\n  CodeMirror.on(tip, 'mouseout', e => {\n    let targetElement = e.relatedTarget || e.toElement;\n    if (targetElement && !CodeMirror.contains(tip, targetElement)) {\n      if (old) {\n        clear();\n      } else {\n        mouseOnTip = false;\n      }\n    }\n  });\n  setTimeout(maybeClear, 1700);\n  cm.on(\"cursorActivity\", clear);\n  cm.on('blur', clear);\n  cm.on('scroll', clear);\n}\n\nfunction makeTooltip(x, y, content) {\n  var node = <div class=\"CodeMirror-Tern-tooltip\">{content}</div>;\n  node.style.left = x + 'px';\n  node.style.top = y + 'px';\n  return node;\n}\n\nfunction fadeOut(tooltip) {\n  tooltip.style.opacity = \"0\";\n  setTimeout(() => remove(tooltip), 1100);\n}\nfunction remove(node) {\n  var parent = node && node.parentNode;\n  if (parent) parent.removeChild(node);\n}\n\n// #####################################\n// Moving to the definition of something\n// #####################################\n\nfunction jumpBack(cmEditor, livelyCodeMirror, ternServerWrapper) {\n  let target = ternServerWrapper.jumpStack.pop();\n  if(target) {\n    ternServerWrapper.moveTo(cmEditor, livelyCodeMirror, target);\n  }\n}\n\nfunction atInterestingExpression(cm) {\n  var pos = cm.getCursor(\"end\"), tok = cm.getTokenAt(pos);\n  if (tok.start < pos.ch && tok.type == \"comment\") return false;\n  return /[\\w)\\]]/.test(cm.getLine(pos.line).slice(Math.max(pos.ch - 1, 0), pos.ch + 1));\n}\n"],"mappings":"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AC;UAAA;QAAA;QAAAkB,UAAA;QAAAC,YAAA;MAAA;MAAAN,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,uCAAA;QAAAG,IAAA;UAAA,OAAAjB,IAAA;QAAA;QAAAkB,IAAAC,8BAAA;UAAZnB,IAAA,CAAAA,CAAA,CAAAA,8BAAI;UAAA;QAAA;QAAAoB,UAAA;QAAAC,YAAA;MAAA;MAAAN,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,uCAAA;QAAAG,IAAA;UAAA,OAAAP,KAAA;QAAA;QAAAQ,IAAAC,8BAAA;UAOGT,KAAA,CAAAA,CAAA,CAAAA,8BAAK;UAAA;QAAA;QAAAU,UAAA;QAAAC,YAAA;MAAA;MAAAN,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,uCAAA;QAAAG,IAAA;UAAA,OAAAR,GAAA;QAAA;QAAAS,IAAAC,8BAAA;UAAVV,GAAA,CAAAA,CAAA,CAAAA,8BAAG;UAAA;QAAA;QAAAW,UAAA;QAAAC,YAAA;MAAA;MAEZnB,CAAC;MAID;MACA;MACA;MAEA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEA;MAEA;MACA;MAEA;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"}