{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/reactive/components/basic/aexpr-graph/object-node.js"],"names":["GraphNode","ObjectNode","constructor","identifier","graph","nodeOptions","events","locations","setDependency","dependency","Promise","all","getHooks","map","hook","getLocations","flat","addEvent","ae","event","push","getTimelineEvents","timelineEvents","aeAndEvent","value","lastValue","timeline","showEvents","onClick","rerenderCallback","constructContextMenu","hooks","isPrimitive","object","Object","getInfo","info","context","type","extractData","data","meta","get","location","locationText","file","substring","lastIndexOf","start","line"],"mappings":"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","file":"object-node.js","sourcesContent":["\nimport GraphNode from './graph-node.js';\nexport default class ObjectNode extends GraphNode {\n  \n  constructor(identifier, graph, nodeOptions = {}) {\n    super(graph, nodeOptions);\n    this.identifier = identifier;\n    this.events = [];\n    this.locations = [];\n  }\n  \n  async setDependency(dependency) {\n    this.dependency = dependency;    \n    this.locations = (await Promise.all(this.dependency.getHooks().map(hook => hook.getLocations()))).flat();\n  }\n  \n  addEvent(ae, event) {\n    this.events.push([ae, event]);\n  }\n  \n  // return an Array of form {file, start, end}[]\n  getLocations() {\n    return this.locations;\n  }\n  \n  // returns an Array of form [name, timelineCallback][]\n  getTimelineEvents() {\n    const timelineEvents = this.events.map(aeAndEvent => {\n      const [ae, event] = aeAndEvent;\n      return [event.value.lastValue + \"=>\" + event.value.value, (timeline) => {\n        timeline.showEvents([event], ae);\n      }]\n    })\n    return timelineEvents;\n  }\n    \n  async onClick(event, rerenderCallback) {\n    this.constructContextMenu({dependency: this.dependency, hooks: this.dependency ? this.dependency.hooks : []}, [], event);\n  }\n  \n  isPrimitive(object) {\n    return object !== Object(object);\n  }\n  \n  getInfo() {\n    const info = [this.identifier + \"\"];\n    if(this.dependency) {\n      const value = this.dependency.context[this.dependency.identifier]\n      if(this.isPrimitive(value)) {\n        info.push(value + \"\");\n      }\n      info.push(this.dependency.type());\n    }\n    return info;\n  }\n  \n  extractData(ae) {\n    const data = [];\n\n    data.push(ae.meta().get(\"id\"));\n    data.push(ae.meta().get(\"sourceCode\"));\n    const location = ae.meta().get(\"location\");\n    if (location) {\n      const locationText = location.file.substring(location.file.lastIndexOf(\"/\") + 1) + \" line \" + location.start.line;\n      data.push(locationText);\n    }\n    return data;\n  }\n}"]}