{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-RP19-4/src/components/halo/lively-halo-vivide-save-script-item.js"],"names":["HaloItem","getName","writeFile","LivelyHaloVivideSaveScriptItem","onClick","saveTarget","window","name","description","url","content","stringify","createJSON","undefined","script","stringToSave","widget","inputs","inScheme","_","value","outScheme","getDataToTransmit"],"mappings":"AAAA;;;;;;;;;;;;;;;;AAEOA,c;;AACCC,a,mCAAAA,O;AAASC,e,mCAAAA,S;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,YAAMC,8BAAN,SAA6CH,QAA7C,CAAsD;AACnE,cAAMI,OAAN,GAAe;AAAA;;AACb,gBAAMC,0FAAaC,MAAb,UAAN;AACA,gBAAM,EAACC,IAAD,EAAOC,WAAP,EAAoBC,GAApB,KAA2B,MAAM,sLAAQJ,UAAR,GAAoB,QAApB,CAAvC;AACA,gBAAMK,uFAAU,sEAAKC,SAAL,+EAAe,KAAKC,UAAL,2FAAgBP,UAAhB,iFAA4BE,IAA5B,+FAAkCC,WAAlC,EAAf,EAAV,CAAN;AACA,wLAAUC,GAAV,uFAAeC,OAAf;AACD;;AAEDE,mBAAWP,UAAX,EAAuBE,IAAvB,EAA6BC,WAA7B,EAAyC;AAAA;;AACvC,cAAG,6JAASK,SAAT,CAAH;AAAuB;AAAvB,WADuC,CAEvC;;;;;;;;AAQA;AACA;AACA,gBAAMC,gIAAST,UAAT,oCAAN;AACA,gBAAMU,eAAe;AACnBD,kBADmB;AAEnBN,uBAFmB;AAGnBQ,sJAAQX,UAAR,4CAHmB;AAInBY,iGAAQ,sEAAKN,SAAL,sGAAeN,UAAf,YAAR,CAJmB;AAKnBa,mGAAU,sEAAKP,SAAL,iHAAeN,UAAf,aAAgC,CAAhC,GAAoC,CAACc,CAAD,EAAIC,KAAJ;AAAA;AAAc,4GAAOA,KAAP,MAAiB,QAAjB,mFAA4BA,KAA5B,IAAoC,uFAAOA,KAAP,CAApC;AAAd,aAApC,CAAV,CALmB;AAMnBC,oGAAW,sEAAKV,SAAL,uGAAe,sGAAWW,iBAAX,EAAf,GAA8C,CAA9C,GAAkD,CAACH,CAAD,EAAGC,KAAH;AAAA;AAAa,4GAAOA,KAAP,MAAiB,QAAjB,mFAA4BA,KAA5B,IAAoC,uFAAOA,KAAP,CAApC;AAAb,aAAlD,CAAX;AANmB,WAArB;AAQA,8GAAOL,YAAP;AACD;AA9BkE;;yBAAhDZ,8B","file":"lively-halo-vivide-save-script-item.js","sourcesContent":["\"enable aexpr\";\n\nimport HaloItem from 'src/components/halo/lively-halo-item.js';\nimport {getName, writeFile} from 'src/client/vivide/scripts/saving.js';\n\nexport default class LivelyHaloVivideSaveScriptItem extends HaloItem {\n  async onClick(){\n    const saveTarget = window.that;\n    const {name, description, url} = await getName(saveTarget, \"script\");\n    const content = JSON.stringify(this.createJSON(saveTarget, name, description));\n    writeFile(url, content);\n  }\n  \n  createJSON(saveTarget, name, description){\n    if(name === undefined) return;\n    /*\n    We have to save a multitude of things:\n    inputData\n    scriptStepson\n    And for applications:\n    input targets\n    output targets\n    */\n    // We also want to save a description for scripts so we can suggest with more info\n    // Additionally we want to safe the shape of the in and out object with types for later suggestion\n    const script = saveTarget.myCurrentScript.toJSON();\n    const stringToSave = {\n      script,\n      description,\n      widget: saveTarget.widget.tagName.toLowerCase(),     \n      inputs: JSON.stringify(saveTarget.input),\n      inScheme: JSON.stringify(saveTarget.input[0], (_, value) => typeof value === \"object\" ? value : typeof value),\n      outScheme: JSON.stringify(saveTarget.getDataToTransmit()[0], (_,value) => typeof value === \"object\" ? value : typeof value)\n    };\n    return stringToSave;\n  }\n}"]}