{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/components/tools/lively-shadama-editor.js"],"names":["Morph","LivelyShadamaEditor","initialize","windowTitle","registerButtons","lively","html","registerKeys","livelyEditor","awaitEditor","addEventListener","evt","onFileLoaded","loaded","loadShadama","getURL","updateShadama","onFullscreen","shadama","goFullScreen","onKeyDown","ctrlKey","key","stopPropagation","preventDefault","saveFile","cm","setOption","initEnv","setRootURL","updateCode","baseURL","window","ohm","System","import","default","loadJavaScriptThroughDOM","editor","get","rootURL","ShadamaFactory","shadowRoot","undefined","detachedCallback","stopped","setURL","loadFile","getAttribute","url","setAttribute","warn","hideToolbar","livelyCodeMirror","toggleVersions","setText","t","getText","livelyExample"],"mappings":"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","file":"lively-shadama-editor.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\n\nexport default class LivelyShadamaEditor extends Morph {\n  async initialize() {\n    this.windowTitle = \"LivelyShadamaEditor\";\n    this.registerButtons()\n\n    lively.html.registerKeys(this); // automatically installs handler for some methods\n    \n    await this.livelyEditor.awaitEditor()\n    \n    this.livelyEditor.addEventListener(\"loaded-file\", evt => this.onFileLoaded(evt))\n    this.loaded = this.loadShadama()\n    if (this.getURL()) {\n       this.updateShadama() \n    }\n  }\n  \n  onFullscreen() {\n     this.shadama.goFullScreen()\n  }\n\n  // this method is autmatically registered through the ``registerKeys`` method\n  onKeyDown(evt) {\n    if (evt.ctrlKey && evt.key == \"s\") {\n      evt.stopPropagation()\n      evt.preventDefault()\n      \n      this.livelyEditor.saveFile()\n    }\n  }\n  \n  async onFileLoaded(evt) {\n    var cm = await this.livelyEditor.awaitEditor()\n    cm.setOption(\"mode\", \"text/shadama\");\n    if (!this.shadama) return // not finished initialization yet... hope it comes again! \n    this.shadama.initEnv(() => {\n      this.shadama.setRootURL(this.getURL())\n      this.shadama.updateCode()\n    })\n  }\n  \n  \n  async loadShadama() {\n      var baseURL = \"https://lively-kernel.org/lively4/shadama/\"\n  \n      window.ohm = (await System.import(baseURL + \"thirdparty/ohm.min.js\")).default\n      await lively.loadJavaScriptThroughDOM(\"shadamaPapa\", baseURL + \"thirdparty/papaparse.min.js\")\n      await lively.loadJavaScriptThroughDOM(\"shadamaShadama\", baseURL + \"shadama.js\") /* globals ShadamaFactory */\n      await lively.loadJavaScriptThroughDOM(\"shadamaTest\", baseURL +  \"shadama-tests.js\")\n      var editor = await this.get(\"#code\").awaitEditor()\n      var rootURL = this.getURL() || baseURL\n      this.shadama = ShadamaFactory(null, 2, this.shadowRoot, undefined, true, this.shadowRoot, rootURL, editor);\n  }\n  \n  detachedCallback() {\n    if (this.shadama) {\n      this.shadama.stopped = true // stop animation\n    } \n    \n  }\n  \n  get livelyEditor() {\n    return this.get(\"#code\")\n  }\n  \n  \n  async updateShadama() {\n    await this.loaded\n    this.livelyEditor.setURL(this.getURL())\n    await this.livelyEditor.loadFile()\n  }\n  \n  getURL() {\n    return this.getAttribute(\"src\")\n  }\n  \n  async setURL(url) {\n    this.setAttribute(\"src\", url)\n    await this.updateShadama()\n  }\n\n  /*MD # Editor API MD*/\n  saveFile() {\n    lively.warn(\"#TODO implement save\")\n  }\n\n  awaitEditor() {\n    return this.livelyEditor.awaitEditor()\n  }\n  \n  hideToolbar() {\n    return this.livelyEditor.hideToolbar()\n  }\n  \n  livelyCodeMirror() {\n    return this.livelyEditor.livelyCodeMirror()\n  }\n  \n  toggleVersions() {\n    return this.livelyEditor.toggleVersions()\n  }\n  \n  setText(t) {\n    return this.livelyEditor.setText(t)\n  }\n  \n  getText() {\n    return this.livelyEditor.getText()\n  }\n  \n  \n  \n\n  async livelyExample() {\n    // this.setURL(\"https://lively-kernel.org/lively4/shadama/examples/1-Fill.shadama\")\n    this.setURL(\"https://lively-kernel.org/lively4/shadama/examples/9-Mandelbrot.shadama\")\n  }\n  \n  \n}"]}