{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/components/widgets/lively-mle-test-case.js"],"names":["Morph","SocketSingleton","LivelyMleTestCase","initialize","registerButtons","getAttribute","get","deleteTest","id","tests","test","removeChild","onAddButton","appendChild","onExecuteButton","cases","push","func","params","socket","v","m","r","status","find","res","loading","add","exec","livelyPrepareSave","livelyPreMigrate","livelyMigrate","other","livelyInspect","contentNode","inspector","livelyExample"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;AAEOA,W;;AACCC,qB,6BAAAA,e;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,YAAMC,iBAAN,SAAgCF,KAAhC,CAAsC;AACnD,cAAMG,UAAN,GAAmB;AACjB,0CAAmB,sBAAnB;AADiB;AAEjB,eAAKC,eAAL;AACA,cAAG,EAAE,qFAAKC,YAAL,CAAkB,YAAlB,OAAoC,OAAtC,CAAH;AAAmD,wCAAc,wFAAM,oHAAgBC,GAAhB,EAAN,CAAd;AAAnD;AACD;;AAEDC,mBAAWC,EAAX,EAAc;AAAA;;AACZ,gBAAMC,qCAAQ,IAAR,oCAAuC,OAAvC,EAAN;AACA,eAAI,MAAMC,IAAV,+FAAkBD,KAAlB,kBAAmC;AAAA;;AACjC,gBAAI,mLAAWD,EAAX,CAAJ,EAAkB;AAAA;;AAChB,qGAAMG,WAAN,+EAAkBD,IAAlB;AACD;AACF;AACF;;AAEDE,sBAAa;AAAA;;AACX,sCAAe,IAAf;AACA,gBAAMH,qCAAQ,IAAR,oCAAuC,OAAvC,EAAN;AACA,gBAAMD,gGAAKC,KAAL,uBAAN;AACA,sLAAkCD,EAAlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA8CE,QAAQ;AAAA;;AACpD,8HAAsB;AAAM,uGAAKH,UAAL,2EAAgBC,EAAhB;AAAN,aAAtB;AADoD;AAEpD,mGAAMK,WAAN,+EAAkBH,IAAlB;AACD,WAHD;AAID;;AAEDI,0BAAiB;AAAA;;AACf,sCAAe,IAAf;AACA,gBAAML,gDAAQ,IAAR,oCAAuC,OAAvC,iBAAN;AACA,cAAIM,QAAQ,EAAZ;AACA,eAAI,MAAML,IAAV,oFAAkBD,KAAlB,GAAwB;AAAA;AAAA;;AACtB,mGAAMO,IAAN,CAAW;AACTR,2GAAIE,IAAJ,QADS;AAETO,6GAAMP,IAAN,UAFS;AAGTQ,+GAAQR,IAAR;AAHS,aAAX;AAKD;AACD,iEAAiB,eAAjB,kFAAkCK,KAAlC;AACD;;AAED,YAAII,MAAJ,CAAWC,CAAX,EAAa;AAAA;;AACX,8GAAcA,CAAd;AACA,0FAA+B,OAA/B,iBAAoD,EAApD;AACA,+DAAe,SAAf,EAA0B,MAAM;AAC9B,wCAAe,KAAf;AACD,WAFD;AAGA,+DAAe,MAAf,EAAuBC,KAAK;AAC1B,wCAAe,KAAf;AACD,WAFD;AAGA,+DAAe,QAAf,EAAyB,CAACC,CAAD,EAAIC,MAAJ,KAAe;AAAA;;AACtC,gBAAG,+FAAW,eAAd,EAA8B;AAAA;;AAC5B,0CAAe,KAAf;AACA,oBAAMd,gDAAQ,IAAR,oCAAuC,OAAvC,iBAAN;AACA,mBAAI,MAAMC,IAAV,qFAAkBD,KAAlB,GAAwB;AAAA;;AACtB,2MAAc,4EAAEe,IAAF,CAAOC;AAAA;AAAO,0NAAUf,IAAV;AAAP,iBAAP,CAAd;AACD;AACF;AACD,gBAAG,+FAAW,UAAd,EAAyB;AACvB,0CAAe,KAAf;AACD;AACD,gBAAG,+FAAS,UAAZ,EAAuB;AAAA;;AACrB,mBAAKI,eAAL;AACD;AACF,WAdD;AAeD;;AAED,YAAIY,OAAJ,CAAYN,CAAZ,EAAe;AAAA;;AACb,gBAAMO,mCAAM,IAAN,oCAAqC,WAArC,EAAN;AACA,6LAAeP,CAAf;AACA,qHAAgB,kBAAiB,8EAAI,YAAJ,GAAmB,EAAG,EAAvD;AACA,gBAAMQ,oCAAO,IAAP,oCAAsC,eAAtC,EAAN;AACA,gMAAgBR,CAAhB;AACA,wHAAiB,qCAAoC,8EAAI,YAAJ,GAAmB,EAAG,EAA3E;AACA,gBAAMX,gDAAQ,IAAR,oCAAuC,OAAvC,iBAAN;AACA,eAAI,MAAMC,IAAV,qFAAkBD,KAAlB,GAAwB;AAAA;;AACtB,iMAAeW,CAAf;AACD;AACF;;AAED;;AAEA;AACAS,4BAAoB,CACnB;;AAEDC,2BAAmB;AACjB;AACD;;AAEDC,sBAAcC,KAAd,EAAqB;AACnB;AACA;AACD;;AAEDC,sBAAcC,WAAd,EAA2BC,SAA3B,EAAsC;AACpC;AACD;;AAED,cAAMC,aAAN,GAAsB;AACpB;AACA;AACD;;AArGkD;;yBAAhClC,iB","file":"lively-mle-test-case.js","sourcesContent":["\"enable aexpr\";\n\nimport Morph from 'src/components/widgets/lively-morph.js';\nimport {SocketSingleton} from 'src/components/mle/socket.js';\n\nexport default class LivelyMleTestCase extends Morph {\n  async initialize() {\n    this.windowTitle = \"MLE Test Case Editor\";\n    this.registerButtons();\n    if(!(this.getAttribute(\"initSocket\") === \"false\")) this.socket = await SocketSingleton.get();\n  }\n  \n  deleteTest(id){\n    const tests = this.shadowRoot.getElementById(\"tests\");\n    for(const test of tests.childNodes){\n      if (test.id == id){\n        tests.removeChild(test)\n      }\n    }\n  }\n  \n  onAddButton(){\n    this.loading = true;\n    const tests = this.shadowRoot.getElementById(\"tests\");\n    const id = tests.childElementCount;\n    <lively-mle-function-executor id={id} />.then(test => {\n      test.onDeleteButton = () => this.deleteTest(id);\n      tests.appendChild(test)\n    });\n  }\n  \n  onExecuteButton(){\n    this.loading = true;\n    const tests = this.shadowRoot.getElementById(\"tests\").childNodes;\n    let cases = [];\n    for(const test of tests){\n      cases.push({\n        id: test.id,\n        func: test.func,\n        params: test.params\n      })\n    }\n    this.socket.emit(\"multipleTests\", cases);    \n  }\n  \n  set socket(v){\n    this.socket = v;\n    this.shadowRoot.getElementById(\"tests\").innerHTML = \"\";\n    this.socket.on('failure', () => {\n      this.loading = false;\n    });\n    this.socket.on('busy', m => {\n      this.loading = false;\n    });\n    this.socket.on(\"result\", (r, status) => {\n      if(status === \"multipleTests\"){\n        this.loading = false;\n        const tests = this.shadowRoot.getElementById(\"tests\").childNodes;\n        for(const test of tests){\n          test.result = r.find(res => res.id == test.id).result\n        }\n      }\n      if(status === \"gotTypes\"){\n        this.loading = false;\n      }\n      if(status===\"deployed\"){\n        this.onExecuteButton()\n      }\n    });\n  }\n  \n  set loading(v) {\n    const add = this.shadowRoot.getElementById(\"addButton\");\n    add.disabled = v;\n    add.className= `button is-link ${v ? \"is-loading\" : \"\"}`;\n    const exec = this.shadowRoot.getElementById(\"executeButton\");\n    exec.disabled = v;\n    exec.className= `button is-pulled-right is-primary ${v ? \"is-loading\" : \"\"}`;\n    const tests = this.shadowRoot.getElementById(\"tests\").childNodes;\n    for(const test of tests){\n      test.loading = v;\n    }\n  }\n  \n  /* Lively-specific API */\n\n  // store something that would be lost\n  livelyPrepareSave() {\n  }\n  \n  livelyPreMigrate() {\n    // is called on the old object before the migration\n  }\n  \n  livelyMigrate(other) {\n    // whenever a component is replaced with a newer version during development\n    // this method is called on the new object during migration, but before initialization\n  }\n  \n  livelyInspect(contentNode, inspector) {\n    // do nothing\n  }\n  \n  async livelyExample() {\n    // this customizes a default instance to a pretty example\n    // this is used by the \n  }\n  \n  \n}"]}