{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/client/reactive/components/basic/aexpr-graph/object-node.js"],"names":["GraphNode","ObjectNode","constructor","object","identifier","onClickMap","events","locations","setDependency","dependency","Promise","all","getHooks","map","hook","getLocations","flat","addEvent","ae","event","push","onClick","timelineEvents","aeAndEvent","value","lastValue","timeline","showEvents","constructContextMenu","hooks","getInfo","info","contextIdentifierValue","type","pluralize","length","extractData","data","meta","get","location","locationText","file","substring","lastIndexOf","start","line","count","name"],"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(object, identifier, onClickMap) {\n    super(onClickMap);\n    this.object = object;\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  async onClick(event) {\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    this.constructContextMenu({object: this.object, dependency: this.dependency, events: this.events, hooks: this.dependency ? this.dependency.hooks : []}, this.locations, timelineEvents, event);\n  }\n  \n  getInfo() {\n    const info = [this.identifier];\n    if(this.dependency) {\n      info.push(this.dependency.contextIdentifierValue()[2] + \"\");\n      info.push(this.dependency.type());\n      info.push(this.pluralize(this.locations.length, \"Location\"));\n    }\n    if(this.events.length > 0) {\n      info.push(this.pluralize(this.events.length, \"Event\"));\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  \n  pluralize(count, name) {\n    return count + \" \" + name + (count > 1 ? \"s\" : \"\");\n  }\n}"]}