{"version":3,"names":["CombinedMarker","IMarker","LayerMarker","Marker","AEGutter","undoSelection","editor","history","getHistory","done","last","ranges","faIcon","name","modifiers","map","m","join","navigationMenuItem","location","fileURL","additionalText","line","start","description","path","file","inThisFile","includes","onSelect","ch","column","end","setSelection","substring","lastIndexOf","openLocationInBrowser","onDeselect","navigateToTimeline","navigateToGraph","DebuggingCache","AExprRegistry","ContextMenu","DependencyGraph","loc","range","pluralize","constructor","markers","draw","doc","setGutterMarker","drawIcon","combineWith","marker","callback","evt","markerBounds","target","getBoundingClientRect","drawActionList","some","hasError","menuItems","push","type","menu","openIn","document","body","clientX","left","clientY","bottom","undefined","addEventListener","focus","getIcon","layeredFunction","reverse","forEach","layer","dependencies","isAE","entries","ae","errorEvents","isEmpty","keys","next","value","getType","size","aes","accumulateData","accumulatedItems","generateInstanceSubmenu","length","instanceItems","getSymbol","getTypeShort","generateAccumulateSubmenu","cErrorEvents","cDependencies","sorted","sort","aDep","bDep","a","b","accumulated","dep","_","isEqual","shallowClone","Object","assign","events","lastDep","source","submenuItems","timeline","filterToAEs","instanceErrors","errorEvent","error","showEvents","onClick","ilaSubMenuItems","isILA","getLayer","pl","partialLayers","fn","values","layeredProperties","union","iterables","set","Set","iterable","item","add","validCallback","showAExprDependencyGutter","registerFileForAEDebugging","aeData","allDependenciesByLine","then","depToAE","AEToDep","clearGutter","markerMap","Map","showAExprDependencyGutterMarkers","showLayeredMethods","ILAs","allAsArray","filter","layeredMethods","getOrCreate","layeredMethod","method","lively","warn","showLayeredMethod","addMarker","valid","id","gutters","getOption","setOption","hideAExprDependencyGutter","dependencyMap","aExprs","drawAExprGutter","depsMapInFile","handleDepAEPairing","AELocation","AELine","allEvents","dependencyLoc","dependencySource","dependencyLine","dependencyFile","relatedEvents","event","triggers","relatedValueChangedEvents","relatedErrorEvents","get","depsAndHooks","meta","hook","dependency","locations","getLocations","identifier","newMarker","has"],"sources":["AEGutter.js"],"sourcesContent":["import { openLocationInBrowser, navigateToTimeline, navigateToGraph } from 'src/client/reactive/components/basic/aexpr-debugging-utils.js';\nimport { DebuggingCache } from 'src/client/reactive/active-expression/ae-debugging-cache.js';\nimport { AExprRegistry } from 'src/client/reactive/active-expression/ae-registry.js';\nimport ContextMenu from 'src/client/contextmenu.js';\nimport { DependencyGraph } from 'src/client/dependency-graph/graph.js';\nimport { loc, range, pluralize } from 'utils';\n\nfunction undoSelection(editor) {\n  const history = editor.getHistory();\n  if (history.done.last.ranges) {\n    editor.undoSelection();\n  }\n}\nfunction faIcon(name, ...modifiers) {\n  return `<i class=\"fa fa-${name} ${modifiers.map(m => 'fa-' + m).join(' ')}\"></i>`;\n}\n\nfunction navigationMenuItem(location, editor, fileURL, name = \"\", additionalText = \"\") {\n  const line = location.start.line;\n  let description = `${line}: ${name}`;\n  let path = location.file;\n  const inThisFile = !path || path.includes(fileURL);\n\n  let onSelect = () => {};\n\n  if (inThisFile) {\n    description = 'line ' + description;\n\n    onSelect = () => {\n      const start = { line: location.start.line - 1, ch: location.start.column };\n      const end = { line: location.end.line - 1, ch: location.end.column };\n      editor.setSelection(start, end);\n    };\n  } else {\n    description = path.substring(path.lastIndexOf(\"/\") + 1) + \":\" + description;\n  }\n\n  return [description, () => {\n    openLocationInBrowser(location);\n  }, additionalText, faIcon(inThisFile ? 'location-arrow' : 'file-code-o'), { onSelect, onDeselect: () => {\n      if (inThisFile) {\n        undoSelection(editor);\n      }\n    } }];\n}\n\nclass CombinedMarker {\n  constructor(line, ...markers) {\n    this.markers = markers;\n    this.line = line;\n  }\n\n  draw(editor) {\n    editor.doc.setGutterMarker(this.line, 'activeExpressionGutter', this.drawIcon(editor));\n  }\n\n  combineWith(marker) {\n    return new CombinedMarker(this.line, ...this.markers);\n  }\n\n  drawIcon(editor) {\n    const callback = async evt => {\n      const markerBounds = evt.target.getBoundingClientRect();\n      this.drawActionList(markerBounds, editor);\n    };\n\n    return <div class={\"activeExpressionGutter-marker-ae\"} click={callback} style={\"color: \" + (this.markers.some(m => m.hasError) ? \"rgba(255,0,0,1)\" : \"rgba(180,40,200,1)\")}>\n      {\"RE\"}\n    </div>;\n  }\n\n  async drawActionList(markerBounds, editor) {\n    const menuItems = [];\n\n    for (const marker of this.markers) {\n      menuItems.push([marker.type(), marker.menuItems(editor)]);\n    }\n\n    const menu = await ContextMenu.openIn(document.body, { clientX: markerBounds.left, clientY: markerBounds.bottom }, undefined, document.body, menuItems);\n    menu.addEventListener(\"DOMNodeRemoved\", () => {\n      editor.focus();\n    });\n  }\n\n}\n\nclass IMarker {\n  constructor(line, fileURL) {\n    this.line = line;\n    this.fileURL = fileURL;\n  }\n\n  type() {\n    return \"Layered Method\";\n  }\n\n  combineWith(marker) {\n    return new CombinedMarker(this.line, this, marker);\n  }\n\n  draw(editor) {\n    editor.doc.setGutterMarker(this.line, 'activeExpressionGutter', this.drawIcon(editor));\n  }\n\n  drawIcon(editor) {\n    const callback = async evt => {\n      const markerBounds = evt.target.getBoundingClientRect();\n      this.drawActionList(markerBounds, editor);\n    };\n\n    return this.getIcon(callback);\n  }\n\n  async drawActionList(markerBounds, editor) {\n    const menuItems = this.menuItems(editor);\n\n    const menu = await ContextMenu.openIn(document.body, { clientX: markerBounds.left, clientY: markerBounds.bottom }, undefined, document.body, menuItems);\n    menu.addEventListener(\"DOMNodeRemoved\", () => {\n      editor.focus();\n    });\n  }\n\n  // Interface\n  getIcon(callback) {}\n  menuItems(editor) {}\n\n}\n\nclass LayerMarker extends IMarker {\n  constructor(line, fileURL, layeredFunction) {\n    super(line, fileURL);\n    this.layeredFunction = layeredFunction;\n  }\n  getIcon(callback) {\n    return <div class=\"activeExpressionGutter-marker-ae\" click={callback}>\n      <i class=\"fa fa-bars\"></i>\n    </div>;\n  }\n  menuItems(editor) {\n    const menuItems = [];\n    \n    [...this.layeredFunction].reverse().forEach(({location, layer}) => {\n      menuItems.push(navigationMenuItem(location, editor, this.fileURL, layer));\n    });\n    \n    return menuItems;\n  }\n}\n\nclass Marker extends IMarker {\n\n  constructor(line, dependencies, isAE, fileURL) {\n    super(line, fileURL);\n    this.dependencies = dependencies;\n    this.isAE = isAE;\n    this.hasError = [...dependencies.entries()].some(([ae, { errorEvents }]) => !errorEvents.isEmpty());\n  }\n\n  type() {\n    return this.isAE ? this.dependencies.keys().next().value.getType() : \"Dependencies\";\n  }\n\n  menuItems(editor) {\n    const menuItems = [];\n\n    if (this.dependencies.size > 1) {\n      const { errorEvents, dependencies, aes } = this.accumulateData();\n      const accumulatedItems = this.generateInstanceSubmenu(errorEvents, dependencies, aes, editor);\n      menuItems.push([\"All\", accumulatedItems, pluralize(dependencies.length, \"dep\")]);\n    }\n\n    this.dependencies.forEach(({ errorEvents, dependencies }, ae) => {\n      const instanceItems = this.generateInstanceSubmenu(errorEvents, dependencies, [ae], editor);\n      menuItems.push([ae.getSymbol() + \" \" + ae.getType(), instanceItems, pluralize(dependencies.length, \"dep\")]);\n    });\n    return menuItems;\n  }\n\n  getIcon(callback) {\n    return <div class={\"activeExpressionGutter-marker\" + (this.isAE ? \"-ae\" : \"-dep\")} click={callback} style={this.hasError ? \"color: rgba(255,0,0,1)\" : \"\"}>\n      {this.isAE ? <b>{this.dependencies.keys().next().value.getTypeShort()}</b> : <i class=\"fa fa-share-alt\"></i>}\n    </div>;\n  }\n\n  generateAccumulateSubmenu(editor) {\n    const { errorEvents, dependencies, aes } = this.accumulateData();\n    return this.generateInstanceSubmenu(errorEvents, dependencies, aes, editor);\n  }\n\n  accumulateData() {\n    const cErrorEvents = [],\n          cDependencies = [],\n          aes = [];\n\n    this.dependencies.forEach(({ errorEvents, dependencies }, ae) => {\n      cErrorEvents.push(...errorEvents);\n      aes.push(ae);\n      cDependencies.push(...dependencies);\n    });\n    const sorted = cDependencies.sort((aDep, bDep) => {\n      const a = aDep.location;\n      const b = bDep.location;\n      if (a.file < b.file) {\n        return -1;\n      } else if (a.file > b.file) {\n        return 1;\n      }\n      if (a.start.line < b.start.line) {\n        return -1;\n      } else if (a.start.line > b.start.line) {\n        return 1;\n      }\n      return a.start.column - b.start.column;\n    });\n    const accumulated = [];\n    sorted.forEach(dep => {\n      //Location might differ due to one object having this file as source and the other not having a source\n      if (accumulated.length === 0 || !_.isEqual(accumulated[accumulated.length - 1].location.start, dep.location.start)) {\n        const shallowClone = Object.assign({}, dep);\n        shallowClone.events = [...shallowClone.events];\n        accumulated.push(shallowClone);\n      } else {\n        const lastDep = accumulated[accumulated.length - 1];\n        lastDep.events.push(...dep.events);\n        if (dep.source && lastDep.source && dep.source.length > lastDep.source.length) {\n          lastDep.source = dep.source;\n        }\n        if (dep.location.end.column > lastDep.location.end.column) {\n          lastDep.location.end = dep.location.end;\n        }\n      }\n    });\n    return { errorEvents: cErrorEvents, dependencies: accumulated, aes };\n  }\n\n  generateInstanceSubmenu(errorEvents, dependencies, aes, editor) {\n    const submenuItems = [];\n\n    // Other views\n    submenuItems.push([\"open timeline\", () => {\n      navigateToTimeline(timeline => timeline.filterToAEs(aes));\n    }, \"\", \"l\"]);\n    submenuItems.push([\"open graph\", () => {\n      navigateToGraph(aes);\n    }, \"\", \"l\"]);\n\n    // Errors\n    let instanceErrors = [];\n    for (const errorEvent of errorEvents) {\n      instanceErrors.push([errorEvent.value.error.name, () => {\n        navigateToTimeline(timeline => timeline.showEvents([errorEvent]));\n      }, \"\", \"o\"]);\n    }\n    if (!instanceErrors.isEmpty()) {\n      submenuItems.push([\"errors\", instanceErrors, \"\", \"l\", { onClick: () => {\n          navigateToTimeline(timeline => timeline.showEvents(errorEvents));\n        } }]);\n    }\n\n    // Navigation\n    dependencies.forEach(dep => {\n      submenuItems.push(navigationMenuItem(dep.location, editor, this.fileURL, dep.source, pluralize(dep.events.length, \"event\")));\n    });\n    // Layers\n    if (this.isAE) {\n      const ilaSubMenuItems = [];\n      for (const ae of aes) {\n        if (ae.isILA()) {\n          const layer = ae.getLayer();\n          for (const pl of layer.partialLayers()) {\n            for (const fn of Object.values(pl.layeredProperties)) {\n              ilaSubMenuItems.push(navigationMenuItem(fn.location, editor, this.fileURL, fn.name));\n            }\n          }\n        }\n      }\n      if (ilaSubMenuItems.length > 0) {\n        submenuItems.push([\"Layered Functions\", ilaSubMenuItems, pluralize(ilaSubMenuItems.length, \"fn\")]);\n      }\n    }\n    return submenuItems;\n  }\n\n  union(...iterables) {\n    const set = new Set();\n\n    for (const iterable of iterables) {\n      for (const item of iterable) {\n        set.add(item);\n      }\n    }\n\n    return set;\n  }\n}\n\nexport default class AEGutter {\n  constructor(editor, fileURL, validCallback) {\n    this.fileURL = fileURL;\n    this.editor = editor;\n    this.validCallback = validCallback;\n\n    this.showAExprDependencyGutter();\n\n    DebuggingCache.registerFileForAEDebugging(this.fileURL, this, aeData => {     \n      this.allDependenciesByLine(aeData).then(async ([depToAE, AEToDep]) => {\n        this.editor.doc.clearGutter('activeExpressionGutter');\n\n        this.markerMap = new Map();\n\n        await this.showAExprDependencyGutterMarkers(depToAE, false);\n        await this.showAExprDependencyGutterMarkers(AEToDep, true);\n        this.showLayeredMethods();\n        for (const marker of this.markerMap.values()) {\n          marker.draw(this.editor);\n        }\n      });\n    });\n\n  }\n\n  showLayeredMethods() {\n    const ILAs = AExprRegistry.allAsArray().filter(ae => ae.isILA());\n    \n    const layeredMethods = new Map();\n    \n    for(const ae of ILAs) {\n      const layer = ae.getLayer();\n      for (const pl of layer.partialLayers()) {\n        for (const fn of Object.values(pl.layeredProperties)) {\n          layeredMethods.getOrCreate(fn.name, () => []).push({location: fn.location, layer: layer.name});\n        }\n      }\n    }\n    \n    layeredMethods.forEach((layeredMethod) => {\n      for (let method of layeredMethod) {\n        const {location}  = method\n        if (!location) {\n          lively.warn(\"no location for layerMethod \" + method)\n          debugger\n          continue\n        }\n        const path = location.file;\n        if (path.includes(this.fileURL)) {\n          this.showLayeredMethod(layeredMethod, location.start.line - 1);\n        }\n      } \n    })\n  }\n\n  showLayeredMethod(layeredMethod, line) {\n    this.addMarker(line, new LayerMarker(line, this.fileURL, layeredMethod));\n  }\n\n  valid() {\n    return this.validCallback();\n  }\n\n  async showAExprDependencyGutter() {\n    const id = \"activeExpressionGutter\";\n    const editor = await this.editor;\n    let gutters = editor.getOption(\"gutters\");\n    if (!gutters.some(marker => marker === id)) {\n      editor.setOption('gutters', [...gutters, id]);\n    }\n  }\n\n  async hideAExprDependencyGutter() {\n    const id = \"activeExpressionGutter\";\n    const editor = await this.editor;\n    let gutters = editor.getOption(\"gutters\");\n    gutters = gutters.filter(marker => marker !== id);\n    editor.setOption('gutters', gutters);\n  }\n\n  async showAExprDependencyGutterMarkers(dependencyMap, isAE) {\n    await this.editor;\n\n    for (const [line, aExprs] of dependencyMap.entries()) {\n      this.drawAExprGutter(line, aExprs, isAE);\n    }\n  }\n\n  async allDependenciesByLine(depsMapInFile) {\n    const depToAE = new Map();\n    const AEToDep = new Map();\n\n    await this.editor;\n\n    const handleDepAEPairing = (ae, AELocation, AELine, allEvents, dependencyLoc, dependencySource) => {\n      const dependencyLine = dependencyLoc.start.line - 1;\n      const dependencyFile = dependencyLoc.file;\n\n      const relatedEvents = allEvents.filter(event => event.value && event.value.triggers && event.value.triggers.some(({ location }) => dependencyFile.includes(location.file) && location.start.line - 1 === dependencyLine));\n      const relatedValueChangedEvents = relatedEvents.filter(event => event.type === \"changed value\");\n      const relatedErrorEvents = relatedEvents.filter(event => event.type === \"evaluation failed\");\n\n      if (dependencyFile.includes(this.fileURL)) {\n        // Dependency is in this file\n        if (!depToAE.get(dependencyLine)) {\n          depToAE.set(dependencyLine, new Map());\n        }\n        if (!depToAE.get(dependencyLine).get(ae)) {\n          depToAE.get(dependencyLine).set(ae, { errorEvents: [], dependencies: [] });\n        }\n        depToAE.get(dependencyLine).get(ae).errorEvents.push(...relatedErrorEvents);\n        // Group by AE to distinguish between mutltiple AE Objects in the same line?\n        depToAE.get(dependencyLine).get(ae).dependencies.push({ location: AELocation, source: ae.getSymbol /*ae.meta().get(\"sourceCode\")*/(), events: relatedValueChangedEvents });\n      }\n\n      if (AELocation.file.includes(this.fileURL)) {\n        AEToDep.get(AELine).get(ae).dependencies.push({ location: dependencyLoc, source: dependencySource, events: relatedValueChangedEvents });\n      }\n    };\n\n    for (const [ae, depsAndHooks] of depsMapInFile) {\n      const AELocation = ae.meta().get(\"location\");\n      const AELine = AELocation.start.line - 1;\n\n      const allEvents = ae.meta().get(\"events\");\n      const errorEvents = allEvents.filter(event => event.type === \"evaluation failed\");\n\n      if (AELocation.file.includes(this.fileURL)) {\n        // AE is in this file\n        if (!AEToDep.get(AELine)) {\n          AEToDep.set(AELine, new Map());\n        }\n        if (!AEToDep.get(AELine).get(ae)) {\n          AEToDep.get(AELine).set(ae, { errorEvents, dependencies: [] });\n        }\n      }\n      for (const { hook, dependency } of depsAndHooks) {\n        const locations = await hook.getLocations();\n        for (const location of locations) {\n          handleDepAEPairing(ae, AELocation, AELine, allEvents, location, dependency.identifier);\n        }\n      }\n    }\n\n    return [depToAE, AEToDep];\n  }\n\n  drawAExprGutter(line, dependencies, isAE) {\n    const newMarker = new Marker(line, dependencies, isAE, this.fileURL);\n    this.addMarker(line, newMarker);\n  }\n\n  /*\n  async dependencyGraph() {\n   return this._deps || (this._deps = new DependencyGraph((await this.astCapabilities(this.editor))));\n  }\n  async showAExprTextMarkers() {\n   const editor = await this.editor;\n   await this.resetAExprTextMarkers();\n   const dependencyGraph = await this.dependencyGraph();\n   dependencyGraph.getAllActiveExpressions().forEach(path => {\n     const r = range(path.node.loc).asCM();\n     const mark = this.editor.markText(r[0], r[1], {\n       css: \"background-color: #3BEDED\"\n     });\n     mark.isAExprTextMarker = true;\n   });\n  }\n  async resetAExprTextMarkers() {\n   const editor = await this.editor;\n   editor.getAllMarks().forEach(mark => {\n     if (mark.isAExprTextMarker) {\n       mark.clear();\n     }\n   });\n  }\n  async resetAExprDependencyTextMarkers() {\n   const editor = await this.editor;\n   editor.getAllMarks().forEach(mark => {\n     if (mark.isAExprDependencyTextMarker) {\n       mark.clear();\n     }\n   });\n  }\n  async showAExprDependencyTextMarkers() {\n   await this.editor;\n   await this.resetAExprDependencyTextMarkers();\n   const cursor = this.editor.getCursor();\n   const dependencyGraph = await this.dependencyGraph();\n   const aexprPath = dependencyGraph.getAexprAtCursor(cursor);\n   if (!aexprPath) return;\n   const deps = dependencyGraph.resolveDependencies(aexprPath.get(\"arguments\")[0]);\n   deps.forEach(path => {\n     const r = range(path.node.loc).asCM();\n     const mark = this.editor.markText(r[0], r[1], {\n       css: \"background-color: orange\"\n     });\n     mark.isAExprDependencyTextMarker = true;\n   });\n   // Searching for dependencies\n   const dependencyGraph = await this.dependencyGraph();\n   dependencyGraph.getAllActiveExpressions().forEach(path => {\n     const dependencies = dependencyGraph.resolveDependencies(path.get(\"arguments\")[0]);\n     const AELine = path.node.loc.start.line - 1;\n     if (!AEToDep.get(AELine)) {\n       AEToDep.set(AELine, []);\n     }\n      dependencies.forEach(statement => {\n       const depLine = statement.node.loc.start.line - 1;\n       if (!depToAE.get(depLine)) {\n         depToAE.set(depLine, []);\n       }\n       depToAE.get(depLine).push({ location: path.node.loc, source: path.get(\"arguments.0.body\").getSource(), events: 0 });\n       AEToDep.get(AELine).push({ location: statement.node.loc, source: statement.getSource(), events: 0 });\n     });\n   });\n  }*/\n\n  addMarker(line, newMarker) {\n    if (this.markerMap.has(line)) {\n      this.markerMap.set(line, this.markerMap.get(line).combineWith(newMarker));\n    } else {\n      this.markerMap.set(line, newMarker);\n    }\n  }\n\n}"],"mappings":"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S,CAAC;QACjC;;QAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;QAEEhC,SAAS,CAAChJ,IAAI,EAAEgL,SAAS,EAAE;UACzB,IAAI,IAAI,CAAC9C,SAAS,CAAC+C,GAAG,CAACjL,IAAI,CAAC,EAAE;YAC5B,IAAI,CAACkI,SAAS,CAACd,GAAG,CAACpH,IAAI,EAAE,IAAI,CAACkI,SAAS,CAACsC,GAAG,CAACxK,IAAI,CAAC,CAAC+B,WAAW,CAACiJ,SAAS,CAAC,CAAC;UAC3E,CAAC,MAAM;YACL,IAAI,CAAC9C,SAAS,CAACd,GAAG,CAACpH,IAAI,EAAEgL,SAAS,CAAC;UACrC;QACF;MAEF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,mBAlOoBlM,yCAAQ;UAAA;QAAA;QAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}