{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/components/tools/lively-version-control.js"],"names":["Morph","moment","VersionControl","initialize","showVersions","url","listNode","shadowRoot","querySelector","fetch","method","headers","showversions","then","r","text","json","JSON","parse","e","lively","notify","slice","openWorkspace","versions","innerHTML","forEach","ea","item","document","createElement","date","format","author","comment","appendChild","toString","stringify","value","onclick","selectItem","selectedItem","classList","remove","add","selection","fileversion","version","editor","mergeView","livelyExample","lively4url","livelyMigrate","obj"],"mappings":"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","file":"lively-version-control.js","sourcesContent":["\nimport Morph from 'src/components/widgets/lively-morph.js';\nimport moment from \"src/external/moment.js\";\n\nexport default class VersionControl extends Morph {\n\n  initialize() {\n   \n  }\n  \n  showVersions(url) {\n    this.url= url\n    var listNode = this.shadowRoot.querySelector(\"#list\")\n    fetch(url, {\n      method: \"OPTIONS\",\n      headers: {\n        showversions: true\n      }\n    }).then(r => r.text()).then( text => {\n      try {\n        var json = JSON.parse(text);\n      } catch(e) {\n        lively.notify(\"[version control] could not parse \" + url+\"versions:\" + e, text.slice(0,1000), 10, () => {\n          lively.openWorkspace(text);\n        }, \"red\");\n        return \n      }\n      if (!json.versions) {\n        lively.notify(\"[version control] no versions found\", text)\n        return\n      }\n      listNode.innerHTML =\"\"\n      json.versions.forEach( ea => {\n        if (!ea) return // guard for syntax fixing null in server..  \n        var item = document.createElement(\"tr\")\n        item.innerHTML = \"<td class='date'>\" + moment(ea.date).format(\"YYYY-MM-DD hh:mm\") + \"</td><td>\"+ ea.author + \"</td><td>\" + ea.comment + \"</td>\"\n        listNode.appendChild(item)\n        ea.toString = function() { return JSON.stringify(this)} // generic pretty print\n        item.value = ea\n        item.onclick = () => {\n          this.selectItem(item)\n        }\n      }) \n    })\n  }\n  \n  selectItem(item) {\n    if (this.selectedItem) \n      this.selectedItem.classList.remove(\"selected\");\n    if (this.selectedItem !== item) { \n      this.selectedItem = item;\n      this.selectedItem.classList.add(\"selected\");\n      this.selection = item.value;\n      fetch(this.url, {\n        headers: {\n          fileversion: item.value.version\n        }\n      }).then( r => r.text()).then( text => {\n        if (this.editor && this.editor.mergeView) {\n         \tthis.editor.mergeView(text) \n        }\n        // this.get(\"#preview\").editor.setValue(text)\n      })\n      \n      \n    } else {\n      this.selectedItem = null;\n      this.selection = null\n    }\n  }\n\n  livelyExample() {\n    this.showVersions(lively4url + \"/README.md\")\n  }\n  \n  \n  livelyMigrate(obj) {\n    this.showVersions(obj.url);\n  }\n\n}"]}