{"version":3,"names":["Script","__SystemJSRewritingHack","_export","setters","_srcClientBoundEvalJs","boundEval","default","_utils","uuid","_srcClientVivideUtilsJs","stepFolder","_srcClientVivideVividescriptstepJs","ScriptStep","_srcClientVivideVivideobjectJs","VivideObject","_srcClientReactiveUtilsAnnotationsJs","Annotations","execute","_recorder_","_src_client_vivide_vividescript_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","view","setView","_view","setInitialStep","step","initialStep","getInitialStep","getLastStep","firstStep","getLoopStartStep","lastStep","getNextExecutionStep","numberOfSteps","length","iterateLinear","getPrevStep","find","s","forEachStepAsync","cb","iterateLinearAsync","stepsAsArray","arr","push","insertStepAfter","stepType","prevStep","newStep","newFromTemplate","setScript","insertAfter","removeStep","stepToBeRemoved","removeLoop","remove","removeLoopTargetStep","setLoopStart","setLoopTargetStep","gotUpdated","lively","notify","scriptGotUpdated","getViewConfig","viewConfig","steps","fn","config","getExecutable","add","createDefaultScript","transform","extract","descent","script","toJSO","jsonContainer","forEach","id","toJSON","JSON","stringify","fromJSON","json","jsonScripts","parse","scripts","firstScriptStep","lastScriptStep","scriptId","source","type","stepJSON","loopId","otherStep","warn","document","querySelectorAll","vv","myCurrentScript","migrateTo"],"sources":["vividescript.js"],"sourcesContent":["import boundEval from \"src/client/bound-eval.js\";\nimport { uuid } from 'utils';\nimport { stepFolder } from 'src/client/vivide/utils.js';\nimport ScriptStep from 'src/client/vivide/vividescriptstep.js';\nimport VivideObject from 'src/client/vivide/vivideobject.js';\nimport Annotations from 'src/client/reactive/utils/annotations.js';\n\nexport default class Script {\n  constructor(view) {\n    this.setView(view);\n  }\n\n  setView(view) { this._view = view; }\n\n  /**\n   * Access\n   */\n  setInitialStep(step) { return this.initialStep = step; }\n  getInitialStep() { return this.initialStep; }\n\n  getLastStep() {\n    const firstStep = this.getInitialStep();\n    return firstStep && firstStep.getLastStep();\n  }\n\n  getLoopStartStep() {\n    const lastStep = this.getLastStep();\n    return lastStep && lastStep.getNextExecutionStep();\n  }\n\n  numberOfSteps() {\n    let length = 0;\n    this.getInitialStep().iterateLinear(() => length++);\n    return length;\n  }\n\n  getPrevStep(step) {\n    return this.getInitialStep().find(s => s.getNextExecutionStep() === step);\n  }\n\n  async forEachStepAsync(cb) {\n    await this.getInitialStep().iterateLinearAsync(cb);\n  }\n\n  stepsAsArray() {\n    const arr = [];\n    this.getInitialStep().iterateLinear(step => arr.push(step));\n\n    return arr;\n  }\n\n  /**\n   * Modify\n   */\n  async insertStepAfter(stepType, prevStep) {\n    const newStep = await ScriptStep.newFromTemplate(stepType);\n    newStep.setScript(this);\n\n    prevStep.insertAfter(newStep);\n\n    return newStep;\n  }\n\n  removeStep(stepToBeRemoved) {\n    if(stepToBeRemoved === this.getLoopStartStep()) {\n      this.removeLoop();\n    }\n\n    if(stepToBeRemoved === this.getInitialStep()) {\n      // First script was removed\n      this.setInitialStep(stepToBeRemoved.getNextExecutionStep());\n    }\n\n    stepToBeRemoved.remove();\n  }\n\n  removeLoop() {\n    const lastStep = this.getLastStep();\n    lastStep.removeLoopTargetStep();\n  }\n\n  setLoopStart(step) {\n    const lastStep = step.getLastStep();\n    lastStep.setLoopTargetStep(step);\n  }\n\n  /**\n   * Handling script execution\n   */\n  gotUpdated() {\n    lively.notify('VivideScript::gotIpdated')\n    this._view.scriptGotUpdated();\n  }\n\n  /**\n   * Script execution\n   */\n  async getViewConfig() {\n    const viewConfig = new Annotations();\n    const steps = this.stepsAsArray();\n\n    for (let step of steps) {\n      // #TODO: just say 'await step.getConfig()' (make it lazy and memoize later)\n      const [fn, config] = await step.getExecutable();\n      viewConfig.add(config);\n    }\n\n    return viewConfig;\n  }\n\n  /**\n   * Serialization\n   */\n  static async createDefaultScript(view) {\n    const transform = await ScriptStep.newFromTemplate('transform');\n    const extract = await ScriptStep.newFromTemplate('extract');\n    const descent = await ScriptStep.newFromTemplate('descent');\n\n    transform.insertAfter(extract);\n    extract.insertAfter(descent);\n\n    const script = new Script(view);\n    script.setInitialStep(transform);\n    transform.setScript(script);\n    extract.setScript(script);\n    descent.setScript(script);\n\n    return script;\n  }\n\n  toJSO() {\n    const jsonContainer = {};\n\n    this.stepsAsArray().forEach(step => {\n      jsonContainer[step.id] = step.toJSO();\n    });\n\n    return jsonContainer;\n  }\n  \n  toJSON() {\n    return JSON.stringify(this.toJSO())\n  }\n\n  static async fromJSON(json, view) {\n    // this is deserialization of a script\n    let jsonScripts = JSON.parse(json)\n    let scripts = {};\n\n    var firstScriptStep\n    var lastScriptStep\n    \n    const script = new Script(view);\n    for (let scriptId in jsonScripts) {\n      let step = new ScriptStep(\n        jsonScripts[scriptId].source,\n        jsonScripts[scriptId].type,\n        scriptId,\n      );\n      step.setScript(script);\n      scripts[scriptId] = step\n      if (!firstScriptStep) firstScriptStep = step;\n      if (lastScriptStep) {\n        lastScriptStep.insertAfter(step);\n      }\n      lastScriptStep = step\n    }\n    for (let scriptId in jsonScripts) {\n      let step = scripts[scriptId]\n      let stepJSON =  jsonScripts[scriptId]\n      var loopId = stepJSON[\"loop-target-step-id\"]\n      if(loopId) {\n        var otherStep = scripts[loopId]\n        if (otherStep) {\n          step.setLoopTargetStep(otherStep)\n        } else {\n          debugger\n          lively.warn(\"Could not restore Vivide Step Loop\")\n        }\n      }\n    }\n    \n    \n    script.setInitialStep(firstScriptStep);\n    return script;\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  const script = vv.myCurrentScript;\n  if(script) {\n    script.migrateTo(Script);\n  }\n});\n"],"mappings":"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"}