{"version":3,"names":["ScriptProcessor","ScriptStep","__SystemJSRewritingHack","_export","default","setters","_srcClientBoundEvalJs","boundEval","_utils","uuid","functionMetaInfo","_srcClientVivideUtilsJs","stepFolder","_srcClientVivideVivideobjectJs","VivideObject","execute","_recorder_","_src_client_vivide_vividescriptstep_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","computeModel","data","startingStep","_modules","transform","extract","descentStep","applyUntil","step","callback","shouldContinue","getNextExecutionStep","s","type","applyStep","hasNextExecutionStep","transformedForest","processData","fn","config","getExecutable","push","prepareDescent","asList","d","undefined","Array","isArray","flatten","result","forEach","singleTransform","module","Promise","all","toArray","input","slice","dataToForest","forest","model","properties","add","object","descentObject","childData","constructor","source","id","json","cursor","route","_prevLinearStep","_nextLinearStep","_loopTargetStep","getCursorPosition","anchor","head","console","warn","line","ch","setCursorPosition","getRoute","setRoute","removeLoopTargetStep","setLoopTargetStep","find","condition","found","iterateLinear","cb","iterateLinearAsync","insertAfter","stepToBeInserted","nextStep","remove","prevStep","insertAsLastStep","lastStep","getLastStep","setScript","script","_script","update","lively","notify","gotUpdated","toJSO","scriptJson","toJSON","JSON","stringify","value","newFromTemplate","stepTemplateURL","URL","stepTemplate","fetch","then","r","newFromJSON","document","querySelectorAll","vv","myCurrentScript","stepsAsArray","migrateTo","__proto__","prototype"],"sources":["vividescriptstep.js"],"sourcesContent":["import boundEval from \"src/client/bound-eval.js\";\nimport { uuid, functionMetaInfo } from 'utils';\nimport { stepFolder } from 'src/client/vivide/utils.js';\n\nimport VivideObject from 'src/client/vivide/vivideobject.js';\n\nexport class ScriptProcessor {\n\n  async computeModel(data, startingStep) {\n    const _modules = {\n      transform: [],\n      extract: []\n    };\n    let descentStep;\n    \n    async function applyUntil(step, callback, shouldContinue) {\n      if(!step) { return; }\n\n      await callback(step);\n\n      if(shouldContinue(step)) {\n        await applyUntil(step.getNextExecutionStep(), callback, shouldContinue);\n      }\n    }\n\n    await applyUntil(\n      startingStep,\n      async s => {\n        if(s.type === 'descent') {\n          descentStep = s;\n        } else {\n          await this.applyStep(s, _modules);\n        }\n      },\n      s => s.type !== 'descent' && s.hasNextExecutionStep()\n    );\n\n    const transformedForest = await this.processData(data, _modules, descentStep);\n    return transformedForest;\n  }\n\n  async applyStep(step, _modules) {\n    const [fn, config] = await step.getExecutable();\n    _modules[step.type].push(fn);\n  }\n\n  async processData(data, _modules, descentStep) {\n    const transformedForest = await this.transform(data, _modules);\n    await this.extract(transformedForest, _modules);\n    await this.prepareDescent(transformedForest, descentStep);\n    \n    return transformedForest;\n  }\n  \n  // Vivide/S's asList\n  asList(d) {\n    if(d === undefined) {\n      // pass\n      return [];\n    } else if(Array.isArray(d)) {\n      return d;\n    } else {\n      // normal singular object\n      return [d];\n    }\n  }\n  // #TODO: use Array::flatten native function\n  flatten(data) {\n    let result = [];\n\n    data.forEach(d => result.push(...this.asList(d)));\n    \n    return result;\n  }\n  \n  async singleTransform(data, module) {\n    return await Promise.all(await module.toArray(data));\n  }\n  async transform(data, _modules) {\n    let input = data.slice(0);\n    \n    for (let module of _modules.transform) {\n      input = await this.singleTransform(input, module);\n      input = this.flatten(input);\n    }\n\n    return VivideObject.dataToForest(input);\n  }\n  \n  async extract(forest, _modules) {\n    for (let module of _modules.extract) {\n      for (let model of forest) {\n        model.properties.add(await module(model.object));\n      }\n    }\n  }\n  \n  async prepareDescent(forest, descentStep) {\n    for (let model of forest) {\n      model.descentStep = descentStep;\n    }\n  }\n  \n  async descentObject(object, descentStep) {\n    const [fn, config] = await descentStep.getExecutable();\n    const childData = await fn(object);\n    return this.computeModel(childData, descentStep.getNextExecutionStep());\n  }\n}\n\nexport default class ScriptStep {\n  constructor(source, type, id = null, json) {\n    this.id = id != null ? id : uuid();\n    this.source = source;\n    this.type = type;\n    this.cursor = json ? json.cursor : undefined;\n    this.route = json ? json.route : undefined;\n    \n    this._prevLinearStep = undefined;\n    this._nextLinearStep = undefined;\n    this._loopTargetStep = undefined;\n  }\n  \n  getCursorPosition() {\n    if(this.cursor) {\n      return [this.cursor.anchor, this.cursor.head];\n    }\n    // #TODO is it important to persists cursor position, and should we restore it?\n    console.warn('no cursor available', 'fallback for default cursor position');\n    return [{ line: 1, ch: 0}, { line: 1, ch: 0}];\n  }\n  setCursorPosition(anchor, head) {\n    this.cursor = { anchor, head };\n  }\n  \n  getRoute() {\n    return this.route && this.route.slice();\n  }\n  setRoute(route) {\n    this.route = route.slice();\n  }\n  \n  // rename to ComputationalStep\n  hasNextExecutionStep() { return !!this.getNextExecutionStep(); }\n  getNextExecutionStep() { return this._nextLinearStep || this._loopTargetStep; }\n  \n  removeLoopTargetStep() {\n    this._loopTargetStep = undefined;\n  }\n  setLoopTargetStep(step) {\n    this._loopTargetStep = step;\n  }\n  \n  find(condition) {\n    let found;\n    \n    this.iterateLinear(step => {\n      if(!found && condition(step)) {\n        found = step;\n      }\n    });\n    \n    return found;\n  }\n  \n  iterateLinear(cb) {\n    cb(this);\n    \n    if(this._nextLinearStep) {\n      this._nextLinearStep.iterateLinear(cb);\n    }\n  }\n  \n  // #TODO: remove duplicate\n  async iterateLinearAsync(cb) {\n    await cb(this);\n    \n    if(this._nextLinearStep) {\n      await this._nextLinearStep.iterateLinearAsync(cb);\n    }\n  }\n  \n  insertAfter(stepToBeInserted) {\n    const nextStep = this._nextLinearStep;\n    this._nextLinearStep = stepToBeInserted;\n    stepToBeInserted._nextLinearStep = nextStep;\n    if(nextStep) {\n      nextStep._prevLinearStep = stepToBeInserted;\n    }\n    stepToBeInserted._prevLinearStep = this;\n\n    if(this._loopTargetStep) {\n      stepToBeInserted._loopTargetStep = this._loopTargetStep;\n      this._loopTargetStep = undefined;\n    }\n  }\n  \n  remove() {\n    const prevStep = this._prevLinearStep;\n    const nextStep = this._nextLinearStep;\n\n    if(prevStep) {\n      prevStep._nextLinearStep = nextStep;\n    }\n    if(nextStep) {\n      nextStep._prevLinearStep = prevStep;\n    }\n    \n    if(this._loopTargetStep && prevStep) {\n      prevStep._loopTargetStep = this._loopTargetStep;\n      this._loopTargetStep = undefined;\n    }\n  }\n  \n  insertAsLastStep(step) {\n    const lastStep = this.getLastStep();\n    lastStep.insertAfter(step);\n  }\n  \n  getLastStep() {\n    let step = this;\n    while (step._nextLinearStep) {\n      step = step._nextLinearStep;\n    }\n    \n    return step;\n  }\n  \n  setScript(script) { this._script = script; }\n  update() {\n    lively.notify('VivideStep::update')\n    this._script.gotUpdated();\n  }\n  async processData(childData) {\n    return new ScriptProcessor().computeModel(childData, this);\n  }\n  async descentObject(object) {\n    return new ScriptProcessor().descentObject(object, this);\n  }\n  \n  // #TODO: implement properly\n  toJSO() {\n    const scriptJson = {\n      type: this.type,\n      source: this.source,\n      cursor: this.cursor,\n      route: this.route,\n    };\n     \n    if (this._loopTargetStep) {\n      scriptJson[\"loop-target-step-id\"] = this._loopTargetStep.id // every step has to save it's id\n    }\n    \n      \n    // #TODO: maybe need to save next step id or loop target\n    \n    return scriptJson\n  }\n  \n  toJSON() {\n    return JSON.stringify(this.toJSO())\n  }\n  \n  async getExecutable() {\n    const module = await boundEval(this.source);\n    \n    return module.value;\n  }\n  \n  static async newFromTemplate(type) {\n    const stepTemplateURL = new URL(type + '-step-template.json', stepFolder);\n    const stepTemplate = await fetch(stepTemplateURL).then(r => r.json());\n\n    return this.newFromJSON(stepTemplate);\n  }\n  \n  static newFromJSON(json) {\n    return new ScriptStep(json.script, json.type, undefined, json);\n  }\n}\n\n// #UPDATE_INSTANCES\n// #TODO: idea: using a list of all object, we can make them become anew\n// go through all object reachable from window\ndocument.querySelectorAll(\"vivide-view\").forEach(vv => {\n  if(!vv.myCurrentScript) { return; }\n\n  vv.myCurrentScript.stepsAsArray().forEach(s => {\n    s.migrateTo(ScriptStep);\n    s.__proto__ = ScriptStep.prototype;\n  });\n})\n"],"mappings":"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"}