From 0227f02ad65e0904c9b0264a6df44ee4d5c494a7 Mon Sep 17 00:00:00 2001 From: DanyLE Date: Thu, 1 Jun 2023 16:14:35 +0200 Subject: [PATCH] regen all archive using antos build system --- ACECore/build.json | 6 +- ACECore/build/release/ACECore.zip | Bin 2371917 -> 2371917 bytes About/build/release/About.zip | Bin 1752 -> 1752 bytes AceDiff/build/debug/README.md | 5 +- AceDiff/build/release/AceDiff.zip | Bin 12661 -> 12689 bytes .../build/release/ActivityMonitor.zip | Bin 1816 -> 1816 bytes Antedit/build.json | 6 +- Antedit/build/debug/main.js | 2 +- Antedit/build/release/Antedit.zip | Bin 13847 -> 13837 bytes Antedit/ts/BaseEditorModel.ts | 3 +- Antedit/ts/main.ts | 10 +- Antunnel/build/release/Antunnel.zip | Bin 2973 -> 2973 bytes AntunnelPlugins/build.json | 6 +- .../build/release/AntunnelPlugins.zip | Bin 4747 -> 4747 bytes Archive/build/release/Archive.zip | Bin 3425 -> 3425 bytes Blogger/build/release/Blogger.zip | Bin 15605 -> 15605 bytes Booklet/build/release/Booklet.zip | Bin 5226 -> 5226 bytes Clipper/build/release/Clipper.zip | Bin 44051 -> 44051 bytes CodePad/build.json | 6 +- CodePad/build/release/CodePad.zip | Bin 7081 -> 7081 bytes CodePad/ts/main.ts | 16 +-- DiffEditor/build/release/DiffEditor.zip | Bin 2951 -> 2951 bytes Docify/build.json | 6 +- Docify/build/release/Docify.zip | Bin 7399 -> 7399 bytes GPClient/build/release/GPClient.zip | Bin 2268 -> 1979 bytes GitGraph/build.json | 6 +- GitGraph/build/release/GitGraph.zip | Bin 7019 -> 7019 bytes GraphEditor/build/release/GraphEditor.zip | Bin 218432 -> 218432 bytes ImageEditor/build/release/ImageEditor.zip | Bin 104312 -> 104312 bytes LibreOffice/build.json | 6 +- LibreOffice/build/release/LibreOffice.zip | Bin 44185 -> 44185 bytes LuaPlayground/build/release/LuaPlayground.zip | Bin 73056 -> 73056 bytes MarkOn/build/release/MarkOn.zip | Bin 2319 -> 2319 bytes MonacoCore/build/release/MonacoCore.zip | Bin 4064374 -> 4064374 bytes OnlyOffice/build/release/OnlyOffice.zip | Bin 43704 -> 43704 bytes Preview/build/release/Preview.zip | Bin 4165 -> 3371 bytes RemoteCamera/build/release/RemoteCamera.zip | Bin 3272 -> 3272 bytes RemoteDesktop/build/release/RemoteDesktop.zip | Bin 78238 -> 78238 bytes SQLiteDB/build.json | 6 +- SQLiteDB/build/release/SQLiteDB.zip | Bin 7298 -> 7298 bytes ServerLogClient/build.json | 6 +- ServerLogClient/build/debug/main.css | 4 - ServerLogClient/build/debug/main.js | 2 +- ServerLogClient/build/debug/scheme.html | 28 +++-- .../build/release/ServerLogClient.zip | Bin 3543 -> 3026 bytes ServerLogClient/main.css | 4 - ServerLogClient/main.ts | 108 +++++++++--------- ServerLogClient/scheme.html | 28 +++-- ShaderPlayground/build.json | 6 +- .../build/release/ShaderPlayground.zip | Bin 5750 -> 5750 bytes ShowCase/build/release/ShowCase.zip | Bin 3431 -> 3431 bytes SimpleMDE/build/release/SimpleMDE.zip | Bin 110732 -> 110732 bytes SystemControl/build/release/SystemControl.zip | Bin 77816 -> 77816 bytes TinyEditor/build/release/TinyEditor.zip | Bin 2920 -> 2920 bytes VizApp/build/release/VizApp.zip | Bin 408394 -> 408394 bytes libantosdk/README.md | 1 + libantosdk/build/debug/README.md | 1 + libantosdk/build/debug/main.js | 2 +- libantosdk/build/debug/package.json | 2 +- libantosdk/build/release/libantosdk.zip | Bin 947658 -> 947938 bytes libantosdk/package.json | 2 +- libantosdk/ts/app.ts | 2 +- libantosdk/ts/main.ts | 52 +++++++++ libplotly/build/release/libplotly.zip | Bin 1081469 -> 1081469 bytes libthreejs/build/release/libthreejs.zip | Bin 151666 -> 151666 bytes vTerm/build/release/vTerm.zip | Bin 2545 -> 2545 bytes vfsx/build.json | 6 +- vfsx/build/release/vfsx.zip | Bin 4185 -> 4185 bytes xTerm/build/release/xTerm.zip | Bin 67508 -> 67508 bytes 69 files changed, 200 insertions(+), 138 deletions(-) diff --git a/ACECore/build.json b/ACECore/build.json index 74be441..6722c6f 100644 --- a/ACECore/build.json +++ b/ACECore/build.json @@ -17,8 +17,10 @@ "data": ["build","build/debug","build/release"] }, { - "name": "ts-import", - "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"] + "name": "ts-antos-sdk", + "data": { + "version": "2.0.x" + } }, { "name": "ts-compile", diff --git a/ACECore/build/release/ACECore.zip b/ACECore/build/release/ACECore.zip index c05bf3ea900db156cf6b9ced9d0b87d55320a484..6a66ce13aa193256fe128a74c79a661b1e05104d 100644 GIT binary patch delta 17570 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 delta 18413 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 YxhVnOtZYCreg;+`6a}hZ%L-Bq07Oqa;{X5v delta 259 zcmcb?dxMuRz?+$ci-CcGgJI65`Jo&6R2f-7jLF^1ryvY-#us45=17(>Mjm9vo0XYj z82K2PL>LeTOy0|CrT{WP-{?oq3ZS`(j3Bd-fhObRMm8~9kfP7`A5Az6lnVzc;zm}( z@Es^poSc!Go2r*llA9CYjb_bkHYwT1ObiS`u8uCgu6nsC7%B|dq!e9Q7#MOBGxPMa ViUYh^*+4e10--3-@U^TU9sn+ZJaqs7 diff --git a/AceDiff/build/debug/README.md b/AceDiff/build/debug/README.md index 40b6eb3..63434c4 100644 --- a/AceDiff/build/debug/README.md +++ b/AceDiff/build/debug/README.md @@ -5,4 +5,7 @@ It's built on top of google-diff-match-patch library. That lib handles the hard Github page: [https://github.com/ace-diff/ace-diff](https://github.com/ace-diff/ace-diff). -The ACE diff depends on the ACECore package. \ No newline at end of file +The ACE diff depends on the ACECore package. + +## Change logs +- v0.1.1-a: add dependencies \ No newline at end of file diff --git a/AceDiff/build/release/AceDiff.zip b/AceDiff/build/release/AceDiff.zip index 23ded277ca0dd7e73c4ca90aaa4dbd21552e5f48..ff75588098a8178257f14e500a599a52fca65dbf 100644 GIT binary patch delta 629 zcmeyGG%=Ykz?+$ci-CcGgW*uY!LZ3|^>6SX3vA@O!&ncJ*%{>R?#0N!V8q10zzI|z z#CQV(i>>&f7n3a?q_YkR}4I!8p+#Mg>>wdPAYiYom@~etu`~X&Nh9y!bU~c zb3Z@5tBo<+aQVlZV;e2~^qOtB^gNGtaJqRt)t2c=)|{!JW@X*nRGGDy>&3wnE4a7K zH;k<0?y#xL$6{i>{sP`l=%Ll;ypj=hAHU>vxSLA{VG~FZ>igJO=hRI^-84=8|$CgTW05pr{sV3TCnLv ztLR=gajP}2&rEuB^y8K}E_WU=&{alU{1*4rZ<>+`(!AN~EeK7jvFt;o{5{{n2A z4|W`UvTOC${mWaF*4Vp7UzpAN=Jl?Flh68cKR=##J2%?2!RVQpzWs&7e{86cVJOSR z;;O^Iu-ThAOedLg;Q`X9pdc|hJ25>~FRM5|FTfjB=aUHb zQ@en=#92U*jtrhmUS}X~jV-bfs*V7oA0GASMo%)7Rsfoso0ypgv^v0>l?|kk1qkl| J>G=jA9spkk;FbUY delta 613 zcmbQ3{56R$z?+$ci-CcGgW{qz_a7+9GY7&w8_L9UK2zOH(? zDZK%<{>+9vcYkZ^7&17&S2>m!>e#VYI;lYTzUqYT#YZwj>umk_Cft~?=tyDQz4rWs z{1+GfFF$)x!x+mky+<>!t+TkgRsFTAccRD4^Yha1Ljq_Dn9n2l| z&W)S(MVtRGx#T!SQ)+E3%T9v`v(kkctHgB^IBGNlxSw7s;aRRN(O!5>KKR*E)1!hL z@+xoS#68(|VC64`170UME1G6j@@>h@y3Kmj;_C`)mikjO)-%h@*5BJ`bbG;--b;zw zCK#Mv7tgD|lB+8`?rF|i`SrH$lDB+zaqPMNNj*CK{M*Inaw9o6tcZ!Zm|e1TvE8{v zn)CMVs0#Wxv+Tnwm!O-ykMHbmmXiD!{c?N7?%({c;&%40+G1~0dOkrjaLdy3S#RYn zCUec^zbdzn0X2L#JF~>;@F0iyM7|sKj7%a7h&Xr>!G3BNFzCfuK(T@jauYN2^pcB< z1H4gnp+^`(-vgjo@aRL=W+=&(6Y#;+zfbb5GZZ-h%0J|j3bN~PV diff --git a/ActivityMonitor/build/release/ActivityMonitor.zip b/ActivityMonitor/build/release/ActivityMonitor.zip index 40ad68357040d40cc35369deba16e68f8921804f..cc3c1b9dc9c61892fd53b4608fcf817bdab894a0 100644 GIT binary patch delta 281 zcmbQiH-nEaz?+$ci-CcGgW+qz!LZ3~j2~G*jEQ{f!Sv*6rkh~K<_PBLOgzYHCm!6% z$H*kYfTTN%O-cc17DGW|a&}^Rs$N!ceqMk#nxem~QWjrTpe9}UG;KPFjV|y zl~Skx8d{K;oSm4Ss+U!qpNF9+mrW`vmx+O)I5{IVH&rjABsT|L&Gm_*4s}2!n^+kb g*iqc)#mv9}c3>9JeXMLCIaVMP1zP$RsF;BP04W1S5&!@I diff --git a/Antedit/build.json b/Antedit/build.json index 6801085..caa5b7e 100644 --- a/Antedit/build.json +++ b/Antedit/build.json @@ -27,8 +27,10 @@ "require":["ts"], "jobs": [ { - "name": "ts-import", - "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"] + "name": "ts-antos-sdk", + "data": { + "version": "2.0.x" + } }, { "name": "ts-compile", diff --git a/Antedit/build/debug/main.js b/Antedit/build/debug/main.js index e779c3e..99b3c5a 100644 --- a/Antedit/build/debug/main.js +++ b/Antedit/build/debug/main.js @@ -1 +1 @@ -var OS;!function(t){let e,i;!function(e){let i;!function(e){class i extends t.API.VFS.BaseFileHandle{constructor(t){super(""),this.path=`${t[0].path} -> ${t[1].path}`,this.cache=t,this.basename=`${t[0].basename} -> ${t[1].basename}`,this.info={type:"file",mime:void 0,size:0,name:this.basename,path:this.path},this.ready=!0}meta(){return new Promise(async(t,e)=>{try{await Promise.all([this.cache[0].meta(),this.cache[1].meta]),t({result:this.info,error:!1})}catch(t){e(t)}})}_rd(t){return new Promise(async(t,e)=>{try{this.cache[0].cache=await this.cache[0].read(),this.cache[1].cache=await this.cache[1].read(),t(this.cache)}catch(t){e(t)}})}_wr(t,e){return this.cache=e,new Promise((t,e)=>{t({result:!0,error:!1})})}setPath(t){}}e.DiffEditorFileHandle=i}(i=e.VFS||(e.VFS={}))}(e=t.API||(t.API={})),function(t){t.BaseEditorModel=class{constructor(t,e,i){this.container=i,this.currfile="Untitled".asFileHandle(),this.tabbar=e,this.editorSetup(i),this.app=t,this.editormux=!1,this.onstatuschange=void 0,this.on("focus",()=>{this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}),this.on("input",()=>this.editormux?(this.editormux=!1,!1):this.currfile.dirty?void 0:(this.currfile.dirty=!0,this.currfile.text+="*",this.tabbar.update(void 0))),this.on("changeCursor",()=>{this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}),this.tabbar.ontabselect=t=>this.selecteTab($(t.data.item).index()),this.tabbar.ontabclose=t=>{const e=t.data.item;return!!e&&(e.data.dirty?(this.app.openDialog("YesNoDialog",{title:__("Close tab"),text:__("Close without saving ?")}).then(t=>t?this.closeTab(e):this.focus()),!1):this.closeTab(e))}}findTabByFile(t){const e=this.tabbar.items,i=(()=>{const i=[];for(let a=0;a(t.cache=e||"",this.newTab(t))).catch(e=>this.app.error(__("Unable to open: {0}",t.path),e)):this.newTab(t):this.tabbar.selected=e}write(){this.currfile.cache=this.getValue(),this.currfile.write("text/plain").then(t=>{this.currfile.dirty=!1,this.currfile.text=this.currfile.basename,this.tabbar.update(void 0)}).catch(t=>this.app.error(__("Unable to save file: {0}",this.currfile.path),t))}save(){return this.currfile.cache=this.getValue(),this.currfile.basename?this.write():this.saveAs()}reload(){return new Promise(async(t,e)=>{try{if("Untitled"===this.currfile.path.toString())return t(!0);if(this.currfile.dirty&&!await this.app.openDialog("YesNoDialog",{title:__("File modified"),text:__("Continue without saving ?")}))return t(!0);const e=await this.currfile.read();this.currfile.cache=e||"",this.currfile.dirty=!1,this.currfile.text=this.currfile.basename?this.currfile.basename:this.currfile.path,this.editormux=!0,this.setValue(this.currfile.cache),this.tabbar.update(void 0)}catch(t){this.app.error(__("Unable to open: {0}",this.currfile.path),t),e(t)}})}saveAs(){this.app.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(t=>{let e=t.file.path.asFileHandle();"file"===t.file.type&&(e=e.parent()),this.currfile.setPath(`${e.path}/${t.name}`),this.write()})}dirties(){const t=[];for(let e of Array.from(this.tabbar.items))e.dirty&&t.push(e);return t}set contextmenuHandle(t){this.container.contextmenuHandle=t}closeAll(){this.tabbar.items=[],this.openFile("Untitled".asFileHandle()),this.resetEditor()}isDirty(){return this.dirties().length>0}setTabbarCtxMenu(t,e){this.tabbar.contextmenuHandle=(i,a)=>(a.items=t,a.onmenuselect=t=>{if(e){const a=$(i.target).closest("afx-list-item");e(a[0],t.data.item.data)}},a.show(i))}}}(i=t.application||(t.application={}))}(OS||(OS={})),function(t){let e;!function(e){class i extends t.application.BaseEditorModel{constructor(t,e,i){super(t,e,i)}resetEditor(){}getTexModel(){return{model:this.editor.getModel(),position:this.editor.getPosition()}}setTextModel(t){this.editor.setModel(t.model),t.position&&(this.editor.setPosition(t.position),this.editor.revealLineInCenter(t.position.lineNumber)),this.editor==this._code_editor&&this.editor.updateOptions({readOnly:!1,domReadOnly:!1})}newTextModelFrom(t){if(Array.isArray(t.cache))return{model:{original:this.newTextModelFrom(t.cache[0]).model,modified:this.newTextModelFrom(t.cache[1]).model}};{if("Untitled"===t.path.toString())return{model:monaco.editor.createModel(t.cache,"textplain")};const e=monaco.Uri.parse(t.protocol+"://antedit/file/"+t.genealogy.join("/")),i=monaco.editor.getModel(e);return i?(i.setValue(t.cache),{model:i}):{model:monaco.editor.createModel(t.cache,void 0,e)}}}getModes(){return monaco.languages.getLanguages().map(t=>{const e=t;return t.aliases?e.text=t.aliases[0]:e.text=t.id,t})}setTheme(t){}setMode(t){if(this.editor==this._code_editor)monaco.editor.setModelLanguage(this.editor.getModel(),t.id);else for(const e of this.editor.getModel())monaco.editor.setModelLanguage(e,t.id);this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}get editor(){return Array.isArray(this.currfile.cache)?this._diff_editor:this._code_editor}editorSetup(t){this.code_container=$("
").css("width","100%").css("height","100%"),this.diff_container=$("
").css("width","100%").css("height","100%").css("display","none"),$(t).append(this.code_container),$(t).append(this.diff_container),this._code_editor=monaco.editor.create(this.code_container[0],{value:"",language:"textplain",readOnly:!1,domReadOnly:!1}),this._diff_editor=monaco.editor.createDiffEditor(this.diff_container[0],{readOnly:!0}),i.modes||(i.modes={},monaco.languages.getLanguages().forEach(t=>{i.modes[t.id]=t}))}on(t,e){switch(t){case"input":this._code_editor.onDidChangeModelContent(e);break;case"focus":this._code_editor.onDidFocusEditorText(e),this._diff_editor.getOriginalEditor().onDidFocusEditorText(e),this._diff_editor.getModifiedEditor().onDidFocusEditorText(e);break;case"changeCursor":this._code_editor.onDidChangeCursorPosition(e),this._diff_editor.getOriginalEditor().onDidChangeCursorPosition(e),this._diff_editor.getModifiedEditor().onDidChangeCursorPosition(e)}}resize(){this.editor&&this.editor.layout()}focus(){Array.isArray(this.currfile.cache)?(this.code_container.hide(),this.diff_container.show()):(this.code_container.show(),this.diff_container.hide()),this.editor&&(this.editor.layout(),this.editor.focus())}getModeForPath(t){return{}}getEditorStatus(){let t=void 0;this.editor==this._code_editor?t=this.editor:(t=this.editor.getOriginalEditor(),this.editor.getModifiedEditor().hasTextFocus()&&(t=this.editor.getModifiedEditor()));const e=t.getPosition();let a=void 0;const s=t.getModel();return s&&(a=i.modes[s.getLanguageId()]),{row:e.lineNumber,column:e.column,line:s?s.getLineCount():0,langmode:{text:a?a.aliases[0]:"",mode:a},file:this.currfile.path}}getValue(){return this.editor==this._code_editor?this.editor.getValue():this.currfile.cache}setValue(t){this.editor==this._code_editor&&this.editor.setValue(t)}getEditor(){return this._code_editor}}e.MonacoEditorModel=i}(e=t.application||(t.application={}))}(OS||(OS={})),function(t){let e,i;!function(t){let e;!function(t){class e extends t.ListViewItemTag{itemlayout(){return{el:"div",children:[{el:"afx-label",ref:"label"},{el:"p",ref:"desc",id:"ext-list-item-d-p"},{el:"p",id:"ext-list-item-b-p",children:[{el:"i",ref:"intall_status"},{el:"afx-button",ref:"btn_remove"},{el:"afx-button",ref:"btn_install"}]}]}}ondatachange(){const t=this.data;if(!t)return;const e=this.refs.label;e.iconclass="bi bi-puzzle",e.text=`${t.text} - v${t.version}`;const i=this.refs.desc;$(i).text(t.description);const a=this.refs.btn_install,s=this.refs.btn_remove;t.installed?($(s).show(),s.iconclass="bi bi-trash-fill",a.iconclass="bi bi-arrow-repeat",$(this.refs.intall_status).text(__("Installed: v{0} ",t.installed).__())):($(s).hide(),a.iconclass="fa bi-cloud-download-fill",$(this.refs.intall_status).text(" "))}init(){this.closable=!1,this.data={};const t=this.refs.btn_install,e=this.refs.btn_remove;t.onbtclick=t=>{this.data.download&&this.data.install_action&&this.data.install_action(this.data.download,t=>{this.data.installed=t,this.update(void 0)})},e.onbtclick=t=>{this.data.installed&&this.data.uninstall_action&&this.data.uninstall_action(this.data.name,()=>{delete this.data.installed,this.update(void 0)})}}reload(t){this.data=this.data}}t.define("afx-antedit-ext-list-item",e)}(e=t.tag||(t.tag={}))}(e=t.GUI||(t.GUI={})),function(e){class i extends e.BaseApplication{constructor(t){super("Antedit",t),this.currdir=void 0,this.diff_buffer=[void 0,void 0]}main(){this.extensions={},this.eum=new a,this.fileview=this.find("fileview"),this.sidebar=this.find("sidebar"),this.sidebar_container=this.find("sidebar-tab-container"),this.bottombar=this.find("bottombar"),this.langstat=this.find("langstat"),this.editorstat=this.find("editorstat"),this.filestat=this.find("current-file-lbl"),this.extension_list_view=this.find("extension-list"),this.logger=new s(this.find("output-tab")),this.split_mode=!0,this.fileview.fetch=t=>new Promise((async function(e,i){let a;a="string"==typeof t?t.asFileHandle():t;try{const t=await a.read();return t.error?i(t.error):e(t.result)}catch(t){return i(__e(t))}}));let e="Untitled".asFileHandle();this.args&&this.args.length>0&&(this.addRecent(this.args[0].path),"dir"===this.args[0].type?this.currdir=this.args[0].path.asFileHandle():(e=this.args[0].path.asFileHandle(),this.currdir=e.parent())),this.setting.recent||(this.setting.recent=[]),this.setting.extension_repos||(this.setting.extension_repos=["https://raw.githubusercontent.com/lxsang/antos-antedit-extensions/master/extensions.json"]);const i=this.find("wrapper");$(i).css("visibility","hidden"),monaco.editor.setTheme("vs-dark");const n=new t.application.MonacoEditorModel(this,this.find("left-tabbar"),this.find("left-editorarea")),o=new t.application.MonacoEditorModel(this,this.find("right-tabbar"),this.find("right-editorarea"));n.setTabbarCtxMenu(this.tb_ctxmenu,(t,e)=>this.tabbar_ctx_menu_handle(t,e,n)),o.setTabbarCtxMenu(this.tb_ctxmenu,(t,e)=>this.tabbar_ctx_menu_handle(t,e,o)),this.eum.add(n).add(o),this.eum.onstatuschange=t=>this.updateStatus(t),$(i).css("visibility","visible"),this.setup(),this.eum.active.openFile(e)}get tb_ctxmenu(){return[{text:"__(Close)",id:"close"},{text:"__(Reload)",id:"reload",shortcut:"A-R"},{text:"__(Close All)",id:"close-all"},{text:"__(Move to other side)",id:"mv-side"}]}tabbar_ctx_menu_handle(t,e,i){switch(e.id){case"close":if(!t)return;i.closeTab(t);break;case"close-all":i.closeAll();break;case"reload":this.eum.active.reload();break;case"mv-side":if(!t)return;let e=this.eum.editors[0];i==e&&(e=this.eum.editors[1]),e.openFile(t.data),i.closeTab(t),0==this.split_mode&&this.toggleSplitMode()}}setup(){this.sidebar_container.selectedIndex=0,this.extension_list_view.itemtag="afx-antedit-ext-list-item",this.fileview.onfileopen=t=>{if(t.data&&t.data.path&&(this.addRecent(t.data.path),"dir"!==t.data.type))return this.eum.active.openFile(t.data.path.asFileHandle())},this.fileview.onfileselect=t=>{t.data&&t.data.path&&"dir"!==t.data.type&&this.eum.active.selectFile(t.data.path)},this.on("resize",()=>this.eum.resize()),this.on("focus",()=>this.eum.active.focus()),this.fileview.contextmenuHandle=(t,e)=>{let i=this.fileview.selectedFile;const a=[{text:"__(New file)",id:"new"},{text:"__(New folder)",id:"newdir"},{text:"__(Rename)",id:"rename"},{text:"__(Delete)",id:"delete"},{text:"__(Upload)",id:"upload"}];return i&&"file"===i.type&&(a.push({text:"__(Select for compare)",id:"diff-org"}),a.push({text:"__(Compare with selected)",id:"diff-mod"}),a.push({text:"__(Open to right)",id:"open-right"})),e.items=a,e.onmenuselect=t=>this.ctxFileMenuHandle(t),e.show(t)},this.bindKey("ALT-N",()=>this.menuAction("new")),this.bindKey("ALT-O",()=>this.menuAction("open")),this.bindKey("ALT-F",()=>this.menuAction("opendir")),this.bindKey("CTRL-S",()=>this.menuAction("save")),this.bindKey("ALT-W",()=>this.menuAction("saveas")),this.bindKey("ALT-R",()=>this.eum.active.reload()),$(".list-container",this.find("editor-main-container")).each((t,e)=>{$(e).on("wheel",t=>{e.scrollLeft+=t.originalEvent.deltaY})}),this.on("tab-opened",t=>{const e=$(t).closest(".list-container");e&&e[0]&&(e[0].scrollLeft=e[0].scrollWidth)}),this.fileview.ondragndrop=t=>{if(!t.data.from||!t.data.to)return;const e=t.data.from[0].data.path.asFileHandle(),i=t.data.to.data.path;return e.move(`${i}/${e.basename}`).then((function(a){const s=i,n=e.parent().path;s.lengththis.error(__("Unable to move file/folder"),t))},this.on("filechange",t=>{let{path:e}=t.file;return"file"===t.type&&({path:e}=t.file.parent()),this.fileview.update(e)}),this.find("logger-clear").onbtclick=()=>{this.logger.clear()},void 0===this.setting.showBottomBar&&(this.setting.showBottomBar=!1);const t={name:"Editor",text:__("Editor")},e={name:"langmode",text:__("Change language mode"),shortcut:"CTRL-K"};this.eum.addAction(t,e,async t=>{try{const t=await this.openDialog("SelectionDialog",{title:__("Select language"),data:this.eum.active.getModes()});this.eum.active.setMode(t)}catch(t){console.log(t)}}),$(this.find("txt_ext_search")).keyup(t=>this.extension_search(t)),this.loadExtensionMetaData(),this.toggleSideBar(),this.toggleSplitMode(),this.applyAllSetting()}extension_search(t){let e;const i=this.find("txt_ext_search");switch(t.which){case 37:return t.preventDefault();case 38:return this.extension_list_view.selectPrev(),t.preventDefault();case 39:return t.preventDefault();case 40:return this.extension_list_view.selectNext(),t.preventDefault();case 13:return t.preventDefault();default:var a=i.value,s=[];if(2===a.length)return void(this.extension_list_view.data=this.extension_meta_data);if(a.length<3)return;var n=new RegExp(a,"i");for(e in this.extension_meta_data)this.extension_meta_data[e].text.match(n)&&s.push(this.extension_meta_data[e]);this.extension_list_view.data=s}}refreshExtensionRepositories(){const t=[],e=this.meta().path+"/extensions/extensions.json";for(let i of[e].concat(this.setting.extension_repos))t.push(i.asFileHandle().read("json"));Promise.all(t).then(t=>{const e={};for(let i of t.shift())e[i.name]=i;this.extension_meta_data=[];for(let a of t)for(let t of a)e[t.name]&&(t.installed=e[t.name].version),t.install_action=(e,a)=>{new i.extensions.EditorExtensionMaker(this).installZip(e).then(()=>{this.loadExtensionMetaData(),a&&a(t.version),this.notify(__("Extension '{0}' installed",t.text))}).catch(e=>{this.error(__("Unable to install '{0}': {1}",t.text,e.toString()),e)})},t.uninstall_action=(t,e)=>{new i.extensions.EditorExtensionMaker(this).uninstall(t).then(()=>{this.loadExtensionMetaData(),e&&e(),this.notify(__("Extension '{0}' uninstalled",t))}).catch(e=>{this.error(__("Unable to uninstall '{0}': {1}",t,e.toString()),e)})},this.extension_meta_data.push(t);this.extension_list_view.data=this.extension_meta_data}).catch(t=>{this.error(__("Unable to read extension from repositories: {0}",t.toString()),t)})}updateStatus(t){t||(t=this.eum.active.getEditorStatus()),this.editorstat.text=__("Row {0}, col {1}, lines: {2}",t.row,t.column,t.line),t.langmode&&(this.langstat.text=t.langmode.text),this.filestat.text=t.file;let e=this.scheme;e.apptitle!=t.file&&(e.apptitle=t.file)}toggleSideBar(){this.currdir?($(this.sidebar).show(),this.fileview.path=this.currdir.path,this.refreshExtensionRepositories()):$(this.sidebar).hide(),this.trigger("resize")}showOutput(t=!1){t&&this.showBottomBar(!0),this.bottombar.selectedIndex=0}openDiff(e){const i=new t.API.VFS.DiffEditorFileHandle(e);this.eum.active.openFile(i)}applySetting(t){"showBottomBar"==t&&this.showBottomBar(this.setting.showBottomBar)}showBottomBar(t){this.setting.showBottomBar=t,t?$(this.bottombar).show():$(this.bottombar).hide(),this.trigger("resize")}toggleBottomBar(){this.showBottomBar(!this.setting.showBottomBar)}toggleSplitMode(){const t=this.find("right-panel"),e=this.eum.editors[1],i=this.eum.editors[0];if(this.split_mode){if(e.isDirty())return void this.notify(__("Unable to disable split view: Please save changes of modified files on the right panel"));e.closeAll(),$(t).hide(),this.split_mode=!1,i.focus()}else $(t).show(),this.split_mode=!0,e.openFile("Untitled".asFileHandle()),e.focus();this.trigger("resize")}fileMenu(){const t=this.setting.recent.map(t=>({text:t}));return{text:__("File"),nodes:[{text:__("New"),dataid:"new",shortcut:"A-N"},{text:__("Open Recent"),dataid:"recent",nodes:t,onchildselect:(t,e)=>{const i=t.data.item.data.text.asFileHandle();i.onready().then(t=>{t&&("dir"==t.type?(this.currdir=i,this.toggleSideBar()):this.eum.active.openFile(i))})}},{text:__("Open"),dataid:"open",shortcut:"A-O"},{text:__("Open Folder"),dataid:"opendir",shortcut:"A-F"},{text:__("Save"),dataid:"save",shortcut:"C-S"},{text:__("Save as"),dataid:"saveas",shortcut:"A-W"}],onchildselect:(t,e)=>this.menuAction(t.data.item.data.dataid,e)}}ctxFileMenuHandle(t){const e=t.data.item;if(!e)return;const i=e.data;if(!i)return;let a=this.fileview.selectedFile,s=this.currdir;switch(a&&"dir"===a.type&&(s=a.path.asFileHandle()),a&&"file"===a.type&&(s=a.path.asFileHandle().parent()),i.id){case"new":if(!s)return;this.openDialog("PromptDialog",{title:"__(New file)",label:"__(File name)"}).then(async t=>{const e=`${s.path}/${t}`.asFileHandle();try{return await e.write("text/plain"),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to create: {0}",t.stack),__e(t))}});break;case"newdir":if(!s)return;this.openDialog("PromptDialog",{title:"__(New folder)",label:"__(Folder name)"}).then(async t=>{try{return await s.mk(t),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to create: {0}",s.path),__e(t))}});break;case"rename":if(!a)return;this.openDialog("PromptDialog",{title:"__(Rename)",label:"__(File name)",value:a.filename}).then(async t=>{if(t!==a.filename){a=a.path.asFileHandle(),s=a.parent();try{return await a.move(`${s.path}/${t}`),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to rename: {0}",a.path),__e(t))}}});break;case"delete":if(!a)return;this.openDialog("YesNoDialog",{title:"__(Delete)",iconclass:"fa fa-question-circle",text:__("Do you really want to delete: {0}?",a.filename)}).then(async t=>{if(t){a=a.path.asFileHandle(),s=a.parent();try{return await a.remove(),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to delete: {0}",a.path),__e(t))}}});break;case"upload":if(!s)return;s.upload().then(t=>(this.notify(__("File uploaded to: {0}",s.path)),this.fileview.update(s.path))).catch(t=>this.error(__("Unable to upload file: {e}",t.toString()),__e(t)));break;case"diff-org":if(!a)return;this.diff_buffer[0]=a.path.asFileHandle();break;case"diff-mod":if(!a)return;if(!this.diff_buffer[0])return;this.diff_buffer[1]=a.path.asFileHandle(),this.openDiff(this.diff_buffer);break;case"open-right":if(!a||"dir"===a.type)return;0==this.split_mode&&this.toggleSplitMode(),this.eum.editors[1].openFile(a.path.asFileHandle())}}addRecent(t){this.setting.recent||(this.setting.recent=[]),this.setting.recent.includes(t)||(this.setting.recent.unshift(t),this.setting.recent.length>10&&(this.setting.recent=this.setting.recent.slice(0,10)))}menuAction(t,e){let i=this;switch(e&&(i=e),t){case"new":return i.eum.active.openFile("Untitled".asFileHandle());case"open":return i.openDialog("FileDialog",{title:__("Open file"),mimes:Array.from(i.meta().mimes).filter(t=>"dir"!==t)}).then(t=>{this.addRecent(t.file.path),i.eum.active.openFile(t.file.path.asFileHandle())});case"opendir":return i.openDialog("FileDialog",{title:__("Open folder"),mimes:["dir"]}).then((function(t){return i.addRecent(t.file.path),i.currdir=t.file.path.asFileHandle(),i.toggleSideBar()}));case"save":return i.eum.active.save();case"saveas":return i.eum.active.saveAs();default:return console.log(t)}}cleanup(t){let e;const i=this.eum.dirties();if(0!==i.length)t.preventDefault(),this.openDialog("YesNoDialog",{title:"__(Quit)",text:__("Ignore all unsaved files: {0} ?",(()=>{const t=[];for(e of Array.from(i))t.push(e.filename);return t})().join(", "))}).then(t=>{if(t){for(e of Array.from(i))e.dirty=!1;return this.quit(!1)}});else for(let t in this.extensions)this.extensions[t]&&this.extensions[t].cleanup&&this.extensions[t].cleanup()}menu(){return[this.fileMenu(),{text:"__(View)",nodes:[{text:"__(Toggle bottom bar)",dataid:"bottombar"},{text:"__(Toggle split view)",dataid:"splitview"}],onchildselect:(t,e)=>{switch(t.data.item.data.dataid){case"bottombar":return this.toggleBottomBar();case"splitview":return this.toggleSplitMode()}}}]}loadExtensionMetaData(){this.loadExtensionMetaFromFile(this.meta().path+"/extensions/extensions.json").catch(t=>this.error(__("Cannot load extension meta data"),t))}loadExtensionMetaFromFile(t){return new Promise((e,i)=>{t.asFileHandle().read("json").then(t=>{for(let e of t)for(let t of e.actions)this.eum.addAction(e,t,(t,i)=>{this.loadAndRunExtensionAction(t,i,e.root)});e()}).catch(t=>{i(__e(t))})})}loadAndRunExtensionAction(t,e,a){if(i.extensions[t])this.runExtensionAction(t,e);else{let i=`${this.meta().path}/extensions/${t}/main.js`;a&&(i=a+"/main.js"),this._api.requires(i,!0).then(()=>this.runExtensionAction(t,e)).catch(e=>this.error(__("unable to load extension: {0}",t),e))}}runExtensionAction(t,e){if(!this.extensions[t]){if(!i.extensions[t])return this.error(__("Unable to find extension: {0}",t));this.extensions[t]=new i.extensions[t](this)}if(!this.extensions[t][e])return this.error(__("Unable to find action: {0}",e));this.extensions[t].preload().then(()=>this.extensions[t][e]()).catch(t=>this.error(__("Unable to preload extension"),t))}}e.Antedit=i;class a{constructor(){this.active_editor=void 0,this.models=[]}get editors(){return this.models}set contextmenuHandle(t){for(let e of this.models)e.contextmenuHandle=t}get active(){return this.active_editor}add(t){return this.models.push(t),this.active_editor||(this.active_editor=t),t.on("focus",()=>{this.active_editor=t}),this}addAction(t,e,i){const a={id:`${t.name}:${e.name}`,label:`${t.text.__()}: ${e.text.__()}`,keybindings:[],precondition:null,keybindingContext:null,contextMenuGroupId:t.name,run:()=>i(t.name,e.name)};if(e.shortcut){const t=e.shortcut.split("-");let i=0;for(const e of t)switch(e){case"CTRL":i|=monaco.KeyMod.CtrlCmd;break;case"ALT":i|=monaco.KeyMod.Alt;break;case"SHIFT":i|=monaco.KeyMod.Shift;break;case"SUPPER":i|=monaco.KeyMod.WinCtrl;break;default:const t="Key"+e;monaco.KeyCode[t]?i|=monaco.KeyCode[t]:i=0}0!=i&&a.keybindings.push(i)}for(let t of this.models){const e=t.getEditor();e.getAction(a.id)||e.addAction(a)}}set onstatuschange(t){for(let e of this.models)e.onstatuschange=t}dirties(){let t=[];for(let e of this.models)t=t.concat(e.dirties());return t}resize(){for(let t of this.models)t.resize()}}class s{constructor(t){this.target=t}info(t){this.log("info",t,!0)}warn(t){this.log("warn",t,!0)}error(t){this.log("error",t,!0)}log(t,e,i){let a=$("
").attr("class","code-pad-log-"+t);if(i){let t=new Date,i=t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds();a.text(`[${i}]: ${e.__()}`)}else a.text(e.__());$(this.target).append(a),$(this.target).scrollTop($(this.target)[0].scrollHeight)}print(t){t.match(/warn/i)?this.log("warn",t,!1):t.match(/error/i)?this.log("error",t,!1):this.log("info",t,!1)}clear(){$(this.target).empty()}}i.Logger=s,i.dependencies=["pkg://MonacoCore/path.js","pkg://MonacoCore/bundle/app.bundle.js"]}(i=t.application||(t.application={}))}(OS||(OS={})),function(t){class e{constructor(t,e){this.app=e,this.name=t}preload(){return t.API.require(t.application.Antedit.extensions[this.name].dependencies)}basedir(){return`${this.app.meta().path}/extensions/${this.name}`}notify(t){return this.app.notify(t)}error(t,e){return this.app.error(t,e)}logger(){return this.app.setting.showBottomBar?this.app.showOutput(!1):this.app.showOutput(!0),this.app.logger}metadata(e){return new Promise((i,a)=>{if(!this.app.currdir)return a(t.API.throwe(__("Current folder is not found")));`${this.app.currdir.path}/${e}`.asFileHandle().read("json").then(t=>{!t.root&&this.app.currdir&&(t.root=this.app.currdir.path),i(t)}).catch(s=>{this.app.openDialog("FileDialog",{title:__("Select build directory"),root:this.app.currdir.path,mimes:["dir"]}).then(t=>{`${t.file.path}/${e}`.asFileHandle().read("json").then(e=>{e.root||(e.root=t.file.path),i(e)}).catch(t=>a(t))}).catch(e=>a(t.API.throwe(__("Unable to read meta-data"))))})})}}e.dependencies=[],t.application.Antedit.extensions={},t.application.Antedit.EditorBaseExtension=e,t.application.Antedit.extensions.EditorExtensionMaker=class extends e{constructor(t){super("EditorExtensionMaker",t)}create(){this.logger().clear(),this.app.openDialog("FileDialog",{title:"__(New extension at)",file:{basename:__("ExtensionName")},mimes:["dir"]}).then(t=>this.mktpl(t.file.path,t.name))}build(e){this.logger().clear(),this.metadata("extension.json").then(async i=>{try{const a=await t.API.VFS.cat(i.javascripts.map(t=>`${i.root}/${t}`),"");await(i.root+"/build/debug/main.js").asFileHandle().setCache(a).write("text/plain"),await(i.root+"/build/debug/extension.json").asFileHandle().setCache(i.meta).write("object"),await t.API.VFS.copy(i.copies.map(t=>`${i.root}/${t}`),i.root+"/build/debug"),this.logger().info(__("Files generated in {0}",i.root+"/build/debug")),e&&e()}catch(t){return this.logger().error(__("Unable to build extension:{0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to read meta-data:{0}",t.stack)))}run(){this.logger().clear(),this.metadata("extension.json").then(async e=>{if(!e||!e.meta||!e.meta.name)return this.logger().error(__("Invalid extension meta-data"));try{const i=e.root+"/build/debug/main.js";t.API.shared[i]&&delete t.API.shared[i],await t.API.requires(i),this.app.extensions[e.meta.name]&&this.app.extensions[e.meta.name].cleanup&&this.app.extensions[e.meta.name].cleanup(),this.app.extensions[e.meta.name]=new t.application.Antedit.extensions[e.meta.name](this.app);for(let t of e.meta.actions)this.app.eum.addAction(e.meta,t,(t,i)=>{this.app.loadAndRunExtensionAction(t,i,e.root+"/build")});this.app.eum.active.getEditor().trigger(e.meta.name,"editor.action.quickCommand")}catch(t){return this.logger().error(__("Unable to run extension:{0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to read meta-data:{0}",t.stack)))}release(){this.logger().clear(),this.metadata("extension.json").then(async e=>{this.build(async()=>{try{await t.API.VFS.mkar(e.root+"/build/debug",`${e.root}/build/release/${e.meta.name}.zip`),this.logger().info(__("Archive created at {0}",`${e.root}/build/release/${e.meta.name}.zip`))}catch(t){return this.logger().error(__("Unable to create archive: {0}",t.stack))}})}).catch(t=>this.logger().error(__("Unable to read meta-data: {0}",t.stack)))}install(){this.logger().clear(),this.app.openDialog("FileDialog",{title:"__(Select extension archive)",mimes:[".*/zip"]}).then(async t=>{try{return await this.installZip(t.file.path),this.logger().info(__("Extension installed")),this.app.loadExtensionMetaData()}catch(t){return this.logger().error(__("Unable to install extension: {0}",t.stack))}})}installFromURL(){this.logger().clear(),this.app.openDialog("PromptDialog",{title:__("Enter URI"),label:__("Please enter extension URI:")}).then(async t=>{if(t)try{return await this.installZip(t),this.logger().info(__("Extension installed")),this.app.loadExtensionMetaData()}catch(e){return this.app.error(__("Unable to install extension: {0}",t))}})}mktpl(e,i){const a=`${e}/${i}`,s=[a,a+"/build",a+"/build/release",a+"/build/debug"],n=[["main.tpl",`${a}/${i}.js`],["meta.tpl",a+"/extension.json"]];t.API.VFS.mkdirAll(s,!0).then(async()=>{try{return await t.API.VFS.mktpl(n,this.basedir(),t=>t.format(i,`${e}/${i}`)),this.app.currdir=a.asFileHandle(),this.app.toggleSideBar(),this.app.eum.active.openFile(`${a}/${i}.js`.asFileHandle())}catch(t){return this.logger().error(__("Unable to create extension template: {0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to create extension directories: {0}",t.stack)))}uninstall(t){return new Promise(async(e,i)=>{try{const i=this.app.meta().path+"/extensions",a=(i+"/extensions.json").asFileHandle(),s=await a.read("json");let n=void 0,o=void 0;for(let e in s)if(s[e].name===t){n=s[e],o=e;break}if(void 0===n)return e();await`${i}/${t}`.asFileHandle().remove(),s.splice(o,1),a.cache=s,await a.write("object"),e()}catch(t){i(t)}})}installZip(e){return new Promise(async(i,a)=>{try{await t.API.requires("os://scripts/jszip.min.js");const a=await e.asFileHandle().read("binary"),s=await JSZip.loadAsync(a),n=await s.file("extension.json").async("uint8array"),o=JSON.parse(new TextDecoder("utf-8").decode(n));await this.uninstall(o.name);const r=this.ext_dir(o.name),l=[r],h=[];for(let t in s.files)s.files[t].dir?l.push(r+"/"+t):"extension.json"!=t&&h.push(t);l.length>0?(await t.API.VFS.mkdirAll(l,!0),await this.installFiles(h,s,o)):await this.installFiles(h,s,o),i()}catch(t){a(__e(t))}})}ext_dir(t){return`${this.app.meta().path}/extensions/${t}`}installFiles(t,e,i){return 0===t.length?this.installMeta(i):new Promise(async(a,s)=>{try{const n=t.splice(0,1)[0],o=`${this.ext_dir(i.name)}/${n}`,r=await e.file(n).async("uint8array"),l=await o.asFileHandle().setCache(new Blob([r],{type:"octet/stream"})).write("text/plain");if(l.error)return s(l.error);await this.installFiles(t,e,i),a()}catch(t){s(__e(t))}})}installMeta(t){return new Promise(async(e,i)=>{const a=(this.ext_dir("")+"/extensions.json").asFileHandle();try{const s=await a.read("json"),n=[];for(let t of s)n.push(t.name);const o=n.indexOf(t.name);o>=0&&s.splice(o,1),s.push(t);try{return await a.setCache(s).write("object"),e()}catch(t){return i(__e(t))}}catch(s){try{return await a.setCache([t]).write("object"),e()}catch(t){return i(__e(t))}}})}}}(OS||(OS={}));
\ No newline at end of file
+var OS;!function(t){let e,i;!function(e){let i;!function(e){class i extends t.API.VFS.BaseFileHandle{constructor(t){super(""),this.path=`${t[0].path} -> ${t[1].path}`,this.cache=t,this.basename=`${t[0].basename} -> ${t[1].basename}`,this.info={type:"file",mime:void 0,size:0,name:this.basename,path:this.path},this.ready=!0}meta(){return new Promise(async(t,e)=>{try{await Promise.all([this.cache[0].meta(),this.cache[1].meta]),t({result:this.info,error:!1})}catch(t){e(t)}})}_rd(t){return new Promise(async(t,e)=>{try{this.cache[0].cache=await this.cache[0].read(),this.cache[1].cache=await this.cache[1].read(),t(this.cache)}catch(t){e(t)}})}_wr(t){return new Promise((t,e)=>{t({result:!0,error:!1})})}setPath(t){}}e.DiffEditorFileHandle=i}(i=e.VFS||(e.VFS={}))}(e=t.API||(t.API={})),function(t){t.BaseEditorModel=class{constructor(t,e,i){this.container=i,this.currfile="Untitled".asFileHandle(),this.tabbar=e,this.editorSetup(i),this.app=t,this.editormux=!1,this.onstatuschange=void 0,this.on("focus",()=>{this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}),this.on("input",()=>this.editormux?(this.editormux=!1,!1):this.currfile.dirty?void 0:(this.currfile.dirty=!0,this.currfile.text+="*",this.tabbar.update(void 0))),this.on("changeCursor",()=>{this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}),this.tabbar.ontabselect=t=>this.selecteTab($(t.data.item).index()),this.tabbar.ontabclose=t=>{const e=t.data.item;return!!e&&(e.data.dirty?(this.app.openDialog("YesNoDialog",{title:__("Close tab"),text:__("Close without saving ?")}).then(t=>t?this.closeTab(e):this.focus()),!1):this.closeTab(e))}}findTabByFile(t){const e=this.tabbar.items,i=(()=>{const i=[];for(let a=0;a(t.cache=e||"",this.newTab(t))).catch(e=>this.app.error(__("Unable to open: {0}",t.path),e)):this.newTab(t):this.tabbar.selected=e}write(){this.currfile.cache=this.getValue(),this.currfile.write("text/plain").then(t=>{this.currfile.dirty=!1,this.currfile.text=this.currfile.basename,this.tabbar.update(void 0)}).catch(t=>this.app.error(__("Unable to save file: {0}",this.currfile.path),t))}save(){return this.currfile.cache=this.getValue(),this.currfile.basename?this.write():this.saveAs()}reload(){return new Promise(async(t,e)=>{try{if("Untitled"===this.currfile.path.toString())return t(!0);if(this.currfile.dirty&&!await this.app.openDialog("YesNoDialog",{title:__("File modified"),text:__("Continue without saving ?")}))return t(!0);const e=await this.currfile.read();this.currfile.cache=e||"",this.currfile.dirty=!1,this.currfile.text=this.currfile.basename?this.currfile.basename:this.currfile.path,this.editormux=!0,this.setValue(this.currfile.cache),this.tabbar.update(void 0)}catch(t){this.app.error(__("Unable to open: {0}",this.currfile.path),t),e(t)}})}saveAs(){this.app.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(t=>{let e=t.file.path.asFileHandle();"file"===t.file.type&&(e=e.parent()),this.currfile.setPath(`${e.path}/${t.name}`),this.write()})}dirties(){const t=[];for(let e of Array.from(this.tabbar.items))e.dirty&&t.push(e);return t}set contextmenuHandle(t){this.container.contextmenuHandle=t}closeAll(){this.tabbar.items=[],this.openFile("Untitled".asFileHandle()),this.resetEditor()}isDirty(){return this.dirties().length>0}setTabbarCtxMenu(t,e){this.tabbar.contextmenuHandle=(i,a)=>(a.items=t,a.onmenuselect=t=>{if(e){const a=$(i.target).closest("afx-list-item");e(a[0],t.data.item.data)}},a.show(i))}}}(i=t.application||(t.application={}))}(OS||(OS={})),function(t){let e;!function(e){class i extends t.application.BaseEditorModel{constructor(t,e,i){super(t,e,i)}resetEditor(){}getTexModel(){return{model:this.editor.getModel(),position:this.editor.getPosition()}}setTextModel(t){this.editor.setModel(t.model),t.position&&(this.editor.setPosition(t.position),this.editor.revealLineInCenter(t.position.lineNumber)),this.editor==this._code_editor&&this.editor.updateOptions({readOnly:!1,domReadOnly:!1})}newTextModelFrom(t){if(Array.isArray(t.cache))return{model:{original:this.newTextModelFrom(t.cache[0]).model,modified:this.newTextModelFrom(t.cache[1]).model}};{if("Untitled"===t.path.toString())return{model:monaco.editor.createModel(t.cache,"textplain")};const e=monaco.Uri.parse(t.protocol+"://antedit/file/"+t.genealogy.join("/")),i=monaco.editor.getModel(e);return i?(i.setValue(t.cache),{model:i}):{model:monaco.editor.createModel(t.cache,void 0,e)}}}getModes(){return monaco.languages.getLanguages().map(t=>{const e=t;return t.aliases?e.text=t.aliases[0]:e.text=t.id,t})}setTheme(t){}setMode(t){if(this.editor==this._code_editor)monaco.editor.setModelLanguage(this.editor.getModel(),t.id);else for(const e of this.editor.getModel())monaco.editor.setModelLanguage(e,t.id);this.onstatuschange&&this.onstatuschange(this.getEditorStatus())}get editor(){return Array.isArray(this.currfile.cache)?this._diff_editor:this._code_editor}editorSetup(t){this.code_container=$("
").css("width","100%").css("height","100%"),this.diff_container=$("
").css("width","100%").css("height","100%").css("display","none"),$(t).append(this.code_container),$(t).append(this.diff_container),this._code_editor=monaco.editor.create(this.code_container[0],{value:"",language:"textplain",readOnly:!1,domReadOnly:!1}),this._diff_editor=monaco.editor.createDiffEditor(this.diff_container[0],{readOnly:!0}),i.modes||(i.modes={},monaco.languages.getLanguages().forEach(t=>{i.modes[t.id]=t}))}on(t,e){switch(t){case"input":this._code_editor.onDidChangeModelContent(e);break;case"focus":this._code_editor.onDidFocusEditorText(e),this._diff_editor.getOriginalEditor().onDidFocusEditorText(e),this._diff_editor.getModifiedEditor().onDidFocusEditorText(e);break;case"changeCursor":this._code_editor.onDidChangeCursorPosition(e),this._diff_editor.getOriginalEditor().onDidChangeCursorPosition(e),this._diff_editor.getModifiedEditor().onDidChangeCursorPosition(e)}}resize(){this.editor&&this.editor.layout()}focus(){Array.isArray(this.currfile.cache)?(this.code_container.hide(),this.diff_container.show()):(this.code_container.show(),this.diff_container.hide()),this.editor&&(this.editor.layout(),this.editor.focus())}getModeForPath(t){return{}}getEditorStatus(){let t=void 0;this.editor==this._code_editor?t=this.editor:(t=this.editor.getOriginalEditor(),this.editor.getModifiedEditor().hasTextFocus()&&(t=this.editor.getModifiedEditor()));const e=t.getPosition();let a=void 0;const s=t.getModel();return s&&(a=i.modes[s.getLanguageId()]),{row:e.lineNumber,column:e.column,line:s?s.getLineCount():0,langmode:{text:a?a.aliases[0]:"",mode:a},file:this.currfile.path}}getValue(){return this.editor==this._code_editor?this.editor.getValue():this.currfile.cache}setValue(t){this.editor==this._code_editor&&this.editor.setValue(t)}getEditor(){return this._code_editor}}e.MonacoEditorModel=i}(e=t.application||(t.application={}))}(OS||(OS={})),function(t){let e,i;!function(t){let e;!function(t){class e extends t.ListViewItemTag{itemlayout(){return{el:"div",children:[{el:"afx-label",ref:"label"},{el:"p",ref:"desc",id:"ext-list-item-d-p"},{el:"p",id:"ext-list-item-b-p",children:[{el:"i",ref:"intall_status"},{el:"afx-button",ref:"btn_remove"},{el:"afx-button",ref:"btn_install"}]}]}}ondatachange(){const t=this.data;if(!t)return;const e=this.refs.label;e.iconclass="bi bi-puzzle",e.text=`${t.text} - v${t.version}`;const i=this.refs.desc;$(i).text(t.description);const a=this.refs.btn_install,s=this.refs.btn_remove;t.installed?($(s).show(),s.iconclass="bi bi-trash-fill",a.iconclass="bi bi-arrow-repeat",$(this.refs.intall_status).text(__("Installed: v{0} ",t.installed).__())):($(s).hide(),a.iconclass="fa bi-cloud-download-fill",$(this.refs.intall_status).text(" "))}init(){this.closable=!1,this.data={};const t=this.refs.btn_install,e=this.refs.btn_remove;t.onbtclick=t=>{this.data.download&&this.data.install_action&&this.data.install_action(this.data.download,t=>{this.data.installed=t,this.update(void 0)})},e.onbtclick=t=>{this.data.installed&&this.data.uninstall_action&&this.data.uninstall_action(this.data.name,()=>{delete this.data.installed,this.update(void 0)})}}reload(t){this.data=this.data}}t.define("afx-antedit-ext-list-item",e)}(e=t.tag||(t.tag={}))}(e=t.GUI||(t.GUI={})),function(e){class i extends e.BaseApplication{constructor(t){super("Antedit",t),this.currdir=void 0,this.diff_buffer=[void 0,void 0]}main(){this.extensions={},this.eum=new a,this.fileview=this.find("fileview"),this.sidebar=this.find("sidebar"),this.sidebar_container=this.find("sidebar-tab-container"),this.bottombar=this.find("bottombar"),this.langstat=this.find("langstat"),this.editorstat=this.find("editorstat"),this.filestat=this.find("current-file-lbl"),this.extension_list_view=this.find("extension-list"),this.logger=new s(this.find("output-tab")),this.split_mode=!0,this.fileview.fetch=t=>new Promise((async function(e,i){let a;a="string"==typeof t?t.asFileHandle():t;try{const t=await a.read();return t.error?i(t.error):e(t.result)}catch(t){return i(__e(t))}}));let e="Untitled".asFileHandle();this.args&&this.args.length>0&&(this.addRecent(this.args[0].path),"dir"===this.args[0].type?this.currdir=this.args[0].path.asFileHandle():(e=this.args[0].path.asFileHandle(),this.currdir=e.parent())),this.setting.recent||(this.setting.recent=[]),this.setting.extension_repos||(this.setting.extension_repos=["https://raw.githubusercontent.com/lxsang/antos-antedit-extensions/master/extensions.json"]);const i=this.find("wrapper");$(i).css("visibility","hidden"),monaco.editor.setTheme("vs-dark");const n=new t.application.MonacoEditorModel(this,this.find("left-tabbar"),this.find("left-editorarea")),o=new t.application.MonacoEditorModel(this,this.find("right-tabbar"),this.find("right-editorarea"));n.setTabbarCtxMenu(this.tb_ctxmenu,(t,e)=>this.tabbar_ctx_menu_handle(t,e,n)),o.setTabbarCtxMenu(this.tb_ctxmenu,(t,e)=>this.tabbar_ctx_menu_handle(t,e,o)),this.eum.add(n).add(o),this.eum.onstatuschange=t=>this.updateStatus(t),$(i).css("visibility","visible"),this.setup(),this.eum.active.openFile(e)}get tb_ctxmenu(){return[{text:"__(Close)",id:"close"},{text:"__(Reload)",id:"reload",shortcut:"A-R"},{text:"__(Close All)",id:"close-all"},{text:"__(Move to other side)",id:"mv-side"}]}tabbar_ctx_menu_handle(t,e,i){switch(e.id){case"close":if(!t)return;i.closeTab(t);break;case"close-all":i.closeAll();break;case"reload":this.eum.active.reload();break;case"mv-side":if(!t)return;let e=this.eum.editors[0];i==e&&(e=this.eum.editors[1]),e.openFile(t.data),i.closeTab(t),0==this.split_mode&&this.toggleSplitMode()}}setup(){this.sidebar_container.selectedIndex=0,this.extension_list_view.itemtag="afx-antedit-ext-list-item",this.fileview.onfileopen=t=>{if(t.data&&t.data.path&&(this.addRecent(t.data.path),"dir"!==t.data.type))return this.eum.active.openFile(t.data.path.asFileHandle())},this.fileview.onfileselect=t=>{t.data&&t.data.path&&"dir"!==t.data.type&&this.eum.active.selectFile(t.data.path)},this.on("resize",()=>this.eum.resize()),this.on("focus",()=>this.eum.active.focus()),this.fileview.contextmenuHandle=(t,e)=>{let i=this.fileview.selectedFile;const a=[{text:"__(New file)",id:"new"},{text:"__(New folder)",id:"newdir"},{text:"__(Rename)",id:"rename"},{text:"__(Delete)",id:"delete"},{text:"__(Upload)",id:"upload"}];return i&&"file"===i.type&&(a.push({text:"__(Select for compare)",id:"diff-org"}),a.push({text:"__(Compare with selected)",id:"diff-mod"}),a.push({text:"__(Open to right)",id:"open-right"})),e.items=a,e.onmenuselect=t=>this.ctxFileMenuHandle(t),e.show(t)},this.bindKey("ALT-N",()=>this.menuAction("new")),this.bindKey("ALT-O",()=>this.menuAction("open")),this.bindKey("ALT-F",()=>this.menuAction("opendir")),this.bindKey("CTRL-S",()=>this.menuAction("save")),this.bindKey("ALT-W",()=>this.menuAction("saveas")),this.bindKey("ALT-R",()=>this.eum.active.reload()),$(".list-container",this.find("editor-main-container")).each((t,e)=>{$(e).on("wheel",t=>{e.scrollLeft+=t.originalEvent.deltaY})}),this.on("tab-opened",t=>{const e=$(t).closest(".list-container");e&&e[0]&&(e[0].scrollLeft=e[0].scrollWidth)}),this.fileview.ondragndrop=t=>{if(!t.data.from||!t.data.to)return;const e=t.data.from[0].data.path.asFileHandle(),i=t.data.to.data.path;return e.move(`${i}/${e.basename}`).then((function(a){const s=i,n=e.parent().path;s.lengththis.error(__("Unable to move file/folder"),t))},this.on("filechange",t=>{let{path:e}=t.file;return"file"===t.type&&({path:e}=t.file.parent()),this.fileview.update(e)}),this.find("logger-clear").onbtclick=()=>{this.logger.clear()},void 0===this.setting.showBottomBar&&(this.setting.showBottomBar=!1);const t={name:"Editor",text:__("Editor")},e={name:"langmode",text:__("Change language mode"),shortcut:"CTRL-K"};this.eum.addAction(t,e,async t=>{try{const t=await this.openDialog("SelectionDialog",{title:__("Select language"),data:this.eum.active.getModes()});this.eum.active.setMode(t)}catch(t){console.log(t)}}),$(this.find("txt_ext_search")).keyup(t=>this.extension_search(t)),this.loadExtensionMetaData(),this.toggleSideBar(),this.toggleSplitMode(),this.applyAllSetting()}extension_search(t){let e;const i=this.find("txt_ext_search");switch(t.which){case 37:return t.preventDefault();case 38:return this.extension_list_view.selectPrev(),t.preventDefault();case 39:return t.preventDefault();case 40:return this.extension_list_view.selectNext(),t.preventDefault();case 13:return t.preventDefault();default:var a=i.value,s=[];if(2===a.length)return void(this.extension_list_view.data=this.extension_meta_data);if(a.length<3)return;var n=new RegExp(a,"i");for(e in this.extension_meta_data)this.extension_meta_data[e].text.match(n)&&s.push(this.extension_meta_data[e]);this.extension_list_view.data=s}}refreshExtensionRepositories(){const t=[],e=this.meta().path+"/extensions/extensions.json";for(let i of[e].concat(this.setting.extension_repos))t.push(i.asFileHandle().read("json"));Promise.all(t).then(t=>{const e={};for(let i of t.shift())e[i.name]=i;this.extension_meta_data=[];for(let a of t)for(let t of a)e[t.name]&&(t.installed=e[t.name].version),t.install_action=(e,a)=>{new i.extensions.EditorExtensionMaker(this).installZip(e).then(()=>{this.loadExtensionMetaData(),a&&a(t.version),this.notify(__("Extension '{0}' installed",t.text))}).catch(e=>{this.error(__("Unable to install '{0}': {1}",t.text,e.toString()),e)})},t.uninstall_action=(t,e)=>{new i.extensions.EditorExtensionMaker(this).uninstall(t).then(()=>{this.loadExtensionMetaData(),e&&e(),this.notify(__("Extension '{0}' uninstalled",t))}).catch(e=>{this.error(__("Unable to uninstall '{0}': {1}",t,e.toString()),e)})},this.extension_meta_data.push(t);this.extension_list_view.data=this.extension_meta_data}).catch(t=>{this.error(__("Unable to read extension from repositories: {0}",t.toString()),t)})}updateStatus(t){t||(t=this.eum.active.getEditorStatus()),this.editorstat.text=__("Row {0}, col {1}, lines: {2}",t.row,t.column,t.line),t.langmode&&(this.langstat.text=t.langmode.text),this.filestat.text=t.file;let e=this.scheme;e.apptitle!=t.file&&(e.apptitle=t.file)}toggleSideBar(){this.currdir?($(this.sidebar).show(),this.fileview.path=this.currdir.path,this.refreshExtensionRepositories()):$(this.sidebar).hide(),this.trigger("resize")}showOutput(t=!1){t&&this.showBottomBar(!0),this.bottombar.selectedIndex=0}openDiff(e){const i=new t.API.VFS.DiffEditorFileHandle(e);this.eum.active.openFile(i)}applySetting(t){"showBottomBar"==t&&this.showBottomBar(this.setting.showBottomBar)}showBottomBar(t){this.setting.showBottomBar=t,t?$(this.bottombar).show():$(this.bottombar).hide(),this.trigger("resize")}toggleBottomBar(){this.showBottomBar(!this.setting.showBottomBar)}toggleSplitMode(){const t=this.find("right-panel"),e=this.eum.editors[1],i=this.eum.editors[0];if(this.split_mode){if(e.isDirty())return void this.notify(__("Unable to disable split view: Please save changes of modified files on the right panel"));e.closeAll(),$(t).hide(),this.split_mode=!1,i.focus()}else $(t).show(),this.split_mode=!0,e.openFile("Untitled".asFileHandle()),e.focus();this.trigger("resize")}fileMenu(){const t=this.setting.recent.map(t=>({text:t}));return{text:__("File"),nodes:[{text:__("New"),dataid:"new",shortcut:"A-N"},{text:__("Open Recent"),dataid:"recent",nodes:t,onchildselect:(t,e)=>{const i=t.data.item.data.text.asFileHandle();i.onready().then(t=>{t&&("dir"==t.type?(this.currdir=i,this.toggleSideBar()):this.eum.active.openFile(i))})}},{text:__("Open"),dataid:"open",shortcut:"A-O"},{text:__("Open Folder"),dataid:"opendir",shortcut:"A-F"},{text:__("Save"),dataid:"save",shortcut:"C-S"},{text:__("Save as"),dataid:"saveas",shortcut:"A-W"}],onchildselect:(t,e)=>this.menuAction(t.data.item.data.dataid,e)}}ctxFileMenuHandle(t){const e=t.data.item;if(!e)return;const i=e.data;if(!i)return;let a=this.fileview.selectedFile,s=this.currdir;switch(a&&"dir"===a.type&&(s=a.path.asFileHandle()),a&&"file"===a.type&&(s=a.path.asFileHandle().parent()),i.id){case"new":if(!s)return;this.openDialog("PromptDialog",{title:"__(New file)",label:"__(File name)"}).then(async t=>{const e=`${s.path}/${t}`.asFileHandle();try{return await e.write("text/plain"),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to create: {0}",t.stack),__e(t))}});break;case"newdir":if(!s)return;this.openDialog("PromptDialog",{title:"__(New folder)",label:"__(Folder name)"}).then(async t=>{try{return await s.mk(t),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to create: {0}",s.path),__e(t))}});break;case"rename":if(!a)return;this.openDialog("PromptDialog",{title:"__(Rename)",label:"__(File name)",value:a.filename}).then(async t=>{if(t!==a.filename){a=a.path.asFileHandle(),s=a.parent();try{return await a.move(`${s.path}/${t}`),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to rename: {0}",a.path),__e(t))}}});break;case"delete":if(!a)return;this.openDialog("YesNoDialog",{title:"__(Delete)",iconclass:"fa fa-question-circle",text:__("Do you really want to delete: {0}?",a.filename)}).then(async t=>{if(t){a=a.path.asFileHandle(),s=a.parent();try{return await a.remove(),this.fileview.update(s.path)}catch(t){return this.error(__("Fail to delete: {0}",a.path),__e(t))}}});break;case"upload":if(!s)return;s.upload().then(t=>(this.notify(__("File uploaded to: {0}",s.path)),this.fileview.update(s.path))).catch(t=>this.error(__("Unable to upload file: {e}",t.toString()),__e(t)));break;case"diff-org":if(!a)return;this.diff_buffer[0]=a.path.asFileHandle();break;case"diff-mod":if(!a)return;if(!this.diff_buffer[0])return;this.diff_buffer[1]=a.path.asFileHandle(),this.openDiff(this.diff_buffer);break;case"open-right":if(!a||"dir"===a.type)return;0==this.split_mode&&this.toggleSplitMode(),this.eum.editors[1].openFile(a.path.asFileHandle())}}addRecent(t){this.setting.recent||(this.setting.recent=[]),this.setting.recent.includes(t)||(this.setting.recent.unshift(t),this.setting.recent.length>10&&(this.setting.recent=this.setting.recent.slice(0,10)))}menuAction(t,e){let i=this;switch(e&&(i=e),t){case"new":return i.eum.active.openFile("Untitled".asFileHandle());case"open":return i.openDialog("FileDialog",{title:__("Open file"),mimes:Array.from(i.meta().mimes).filter(t=>"dir"!==t)}).then(t=>{this.addRecent(t.file.path),i.eum.active.openFile(t.file.path.asFileHandle())});case"opendir":return i.openDialog("FileDialog",{title:__("Open folder"),mimes:["dir"]}).then((function(t){return i.addRecent(t.file.path),i.currdir=t.file.path.asFileHandle(),i.toggleSideBar()}));case"save":return i.eum.active.save();case"saveas":return i.eum.active.saveAs();default:return console.log(t)}}cleanup(t){let e;const i=this.eum.dirties();if(0!==i.length)t.preventDefault(),this.openDialog("YesNoDialog",{title:"__(Quit)",text:__("Ignore all unsaved files: {0} ?",(()=>{const t=[];for(e of Array.from(i))t.push(e.filename);return t})().join(", "))}).then(t=>{if(t){for(e of Array.from(i))e.dirty=!1;return this.quit(!1)}});else for(let t in this.extensions)this.extensions[t]&&this.extensions[t].cleanup&&this.extensions[t].cleanup()}menu(){return[this.fileMenu(),{text:"__(View)",nodes:[{text:"__(Toggle bottom bar)",dataid:"bottombar"},{text:"__(Toggle split view)",dataid:"splitview"}],onchildselect:(t,e)=>{switch(t.data.item.data.dataid){case"bottombar":return this.toggleBottomBar();case"splitview":return this.toggleSplitMode()}}}]}loadExtensionMetaData(){this.loadExtensionMetaFromFile(this.meta().path+"/extensions/extensions.json").catch(t=>this.error(__("Cannot load extension meta data"),t))}loadExtensionMetaFromFile(t){return new Promise((e,i)=>{t.asFileHandle().read("json").then(t=>{for(let e of t)for(let t of e.actions)this.eum.addAction(e,t,(t,i)=>{this.loadAndRunExtensionAction(t,i,e.root)});e()}).catch(t=>{i(__e(t))})})}loadAndRunExtensionAction(t,e,a){if(i.extensions[t])this.runExtensionAction(t,e);else{let i=`${this.meta().path}/extensions/${t}/main.js`;a&&(i=a+"/main.js"),this._api.requires(i,!0).then(()=>this.runExtensionAction(t,e)).catch(e=>this.error(__("unable to load extension: {0}",t),e))}}runExtensionAction(t,e){if(!this.extensions[t]){if(!i.extensions[t])return this.error(__("Unable to find extension: {0}",t));this.extensions[t]=new i.extensions[t](this)}if(!this.extensions[t][e])return this.error(__("Unable to find action: {0}",e));this.extensions[t].preload().then(()=>this.extensions[t][e]()).catch(t=>this.error(__("Unable to preload extension"),t))}}e.Antedit=i;class a{constructor(){this.active_editor=void 0,this.models=[]}get editors(){return this.models}set contextmenuHandle(t){for(let e of this.models)e.contextmenuHandle=t}get active(){return this.active_editor}add(t){return this.models.push(t),this.active_editor||(this.active_editor=t),t.on("focus",()=>{this.active_editor=t}),this}addAction(t,e,i){const a={id:`${t.name}:${e.name}`,label:`${t.text.__()}: ${e.text.__()}`,keybindings:[],precondition:null,keybindingContext:null,contextMenuGroupId:t.name,run:()=>i(t.name,e.name)};if(e.shortcut){const t=e.shortcut.split("-");let i=0;for(const e of t)switch(e){case"CTRL":i|=monaco.KeyMod.CtrlCmd;break;case"ALT":i|=monaco.KeyMod.Alt;break;case"SHIFT":i|=monaco.KeyMod.Shift;break;case"SUPPER":i|=monaco.KeyMod.WinCtrl;break;default:const t="Key"+e;monaco.KeyCode[t]?i|=monaco.KeyCode[t]:i=0}0!=i&&a.keybindings.push(i)}for(let t of this.models){const e=t.getEditor();e.getAction(a.id)||e.addAction(a)}}set onstatuschange(t){for(let e of this.models)e.onstatuschange=t}dirties(){let t=[];for(let e of this.models)t=t.concat(e.dirties());return t}resize(){for(let t of this.models)t.resize()}}class s{constructor(t){this.target=t}info(t){this.log("info",t,!0)}warn(t){this.log("warn",t,!0)}error(t){this.log("error",t,!0)}log(t,e,i){let a=$("
").attr("class","code-pad-log-"+t);if(i){let t=new Date,i=t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds();a.text(`[${i}]: ${e.__()}`)}else a.text(e.__());$(this.target).append(a),$(this.target).scrollTop($(this.target)[0].scrollHeight)}print(t){t.match(/warn/i)?this.log("warn",t,!1):t.match(/error/i)?this.log("error",t,!1):this.log("info",t,!1)}clear(){$(this.target).empty()}}i.Logger=s,i.dependencies=["pkg://MonacoCore/path.js","pkg://MonacoCore/bundle/app.bundle.js"]}(i=t.application||(t.application={}))}(OS||(OS={})),function(t){class e{constructor(t,e){this.app=e,this.name=t}preload(){return t.API.require(t.application.Antedit.extensions[this.name].dependencies)}basedir(){return`${this.app.meta().path}/extensions/${this.name}`}notify(t){return this.app.notify(t)}error(t,e){return this.app.error(t,e)}logger(){return this.app.setting.showBottomBar?this.app.showOutput(!1):this.app.showOutput(!0),this.app.logger}metadata(e){return new Promise((i,a)=>{if(!this.app.currdir)return a(t.API.throwe(__("Current folder is not found")));`${this.app.currdir.path}/${e}`.asFileHandle().read("json").then(t=>{!t.root&&this.app.currdir&&(t.root=this.app.currdir.path),i(t)}).catch(s=>{this.app.openDialog("FileDialog",{title:__("Select build directory"),root:this.app.currdir.path,mimes:["dir"]}).then(t=>{`${t.file.path}/${e}`.asFileHandle().read("json").then(e=>{e.root||(e.root=t.file.path),i(e)}).catch(t=>a(t))}).catch(e=>a(t.API.throwe(__("Unable to read meta-data"))))})})}}e.dependencies=[],t.application.Antedit.extensions={},t.application.Antedit.EditorBaseExtension=e,t.application.Antedit.extensions.EditorExtensionMaker=class extends e{constructor(t){super("EditorExtensionMaker",t)}create(){this.logger().clear(),this.app.openDialog("FileDialog",{title:"__(New extension at)",file:{basename:__("ExtensionName")},mimes:["dir"]}).then(t=>this.mktpl(t.file.path,t.name))}build(e){this.logger().clear(),this.metadata("extension.json").then(async i=>{try{const a=await t.API.VFS.cat(i.javascripts.map(t=>`${i.root}/${t}`),"");await(i.root+"/build/debug/main.js").asFileHandle().setCache(a).write("text/plain"),await(i.root+"/build/debug/extension.json").asFileHandle().setCache(i.meta).write("object"),await t.API.VFS.copy(i.copies.map(t=>`${i.root}/${t}`),i.root+"/build/debug"),this.logger().info(__("Files generated in {0}",i.root+"/build/debug")),e&&e()}catch(t){return this.logger().error(__("Unable to build extension:{0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to read meta-data:{0}",t.stack)))}run(){this.logger().clear(),this.metadata("extension.json").then(async e=>{if(!e||!e.meta||!e.meta.name)return this.logger().error(__("Invalid extension meta-data"));try{const i=e.root+"/build/debug/main.js";t.API.shared[i]&&delete t.API.shared[i],await t.API.requires(i),this.app.extensions[e.meta.name]&&this.app.extensions[e.meta.name].cleanup&&this.app.extensions[e.meta.name].cleanup(),this.app.extensions[e.meta.name]=new t.application.Antedit.extensions[e.meta.name](this.app);for(let t of e.meta.actions)this.app.eum.addAction(e.meta,t,(t,i)=>{this.app.loadAndRunExtensionAction(t,i,e.root+"/build")});this.app.eum.active.getEditor().trigger(e.meta.name,"editor.action.quickCommand")}catch(t){return this.logger().error(__("Unable to run extension:{0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to read meta-data:{0}",t.stack)))}release(){this.logger().clear(),this.metadata("extension.json").then(async e=>{this.build(async()=>{try{await t.API.VFS.mkar(e.root+"/build/debug",`${e.root}/build/release/${e.meta.name}.zip`),this.logger().info(__("Archive created at {0}",`${e.root}/build/release/${e.meta.name}.zip`))}catch(t){return this.logger().error(__("Unable to create archive: {0}",t.stack))}})}).catch(t=>this.logger().error(__("Unable to read meta-data: {0}",t.stack)))}install(){this.logger().clear(),this.app.openDialog("FileDialog",{title:"__(Select extension archive)",mimes:[".*/zip"]}).then(async t=>{try{return await this.installZip(t.file.path),this.logger().info(__("Extension installed")),this.app.loadExtensionMetaData()}catch(t){return this.logger().error(__("Unable to install extension: {0}",t.stack))}})}installFromURL(){this.logger().clear(),this.app.openDialog("PromptDialog",{title:__("Enter URI"),label:__("Please enter extension URI:")}).then(async t=>{if(t)try{return await this.installZip(t),this.logger().info(__("Extension installed")),this.app.loadExtensionMetaData()}catch(e){return this.app.error(__("Unable to install extension: {0}",t))}})}mktpl(e,i){const a=`${e}/${i}`,s=[a,a+"/build",a+"/build/release",a+"/build/debug"],n=[["main.tpl",`${a}/${i}.js`],["meta.tpl",a+"/extension.json"]];t.API.VFS.mkdirAll(s,!0).then(async()=>{try{return await t.API.VFS.mktpl(n,this.basedir(),t=>t.format(i,`${e}/${i}`)),this.app.currdir=a.asFileHandle(),this.app.toggleSideBar(),this.app.eum.active.openFile(`${a}/${i}.js`.asFileHandle())}catch(t){return this.logger().error(__("Unable to create extension template: {0}",t.stack))}}).catch(t=>this.logger().error(__("Unable to create extension directories: {0}",t.stack)))}uninstall(t){return new Promise(async(e,i)=>{try{const i=this.app.meta().path+"/extensions",a=(i+"/extensions.json").asFileHandle(),s=await a.read("json");let n=void 0,o=void 0;for(let e in s)if(s[e].name===t){n=s[e],o=e;break}if(void 0===n)return e();await`${i}/${t}`.asFileHandle().remove(),s.splice(o,1),a.cache=s,await a.write("object"),e()}catch(t){i(t)}})}installZip(e){return new Promise(async(i,a)=>{try{await t.API.requires("os://scripts/jszip.min.js");const a=await e.asFileHandle().read("binary"),s=await JSZip.loadAsync(a),n=await s.file("extension.json").async("uint8array"),o=JSON.parse(new TextDecoder("utf-8").decode(n));await this.uninstall(o.name);const r=this.ext_dir(o.name),l=[r],h=[];for(let t in s.files)s.files[t].dir?l.push(r+"/"+t):"extension.json"!=t&&h.push(t);l.length>0?(await t.API.VFS.mkdirAll(l,!0),await this.installFiles(h,s,o)):await this.installFiles(h,s,o),i()}catch(t){a(__e(t))}})}ext_dir(t){return`${this.app.meta().path}/extensions/${t}`}installFiles(t,e,i){return 0===t.length?this.installMeta(i):new Promise(async(a,s)=>{try{const n=t.splice(0,1)[0],o=`${this.ext_dir(i.name)}/${n}`,r=await e.file(n).async("uint8array"),l=await o.asFileHandle().setCache(new Blob([r],{type:"octet/stream"})).write("text/plain");if(l.error)return s(l.error);await this.installFiles(t,e,i),a()}catch(t){s(__e(t))}})}installMeta(t){return new Promise(async(e,i)=>{const a=(this.ext_dir("")+"/extensions.json").asFileHandle();try{const s=await a.read("json"),n=[];for(let t of s)n.push(t.name);const o=n.indexOf(t.name);o>=0&&s.splice(o,1),s.push(t);try{return await a.setCache(s).write("object"),e()}catch(t){return i(__e(t))}}catch(s){try{return await a.setCache([t]).write("object"),e()}catch(t){return i(__e(t))}}})}}}(OS||(OS={}));
\ No newline at end of file
diff --git a/Antedit/build/release/Antedit.zip b/Antedit/build/release/Antedit.zip
index ae88805236cd3c189e7804b0bc9c4b95c8a9f259..8b7d352d47099734479473225dcb047cf174dc1a 100644
GIT binary patch
delta 8906
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
Jm@)sG|3BJs|3Cl$

delta 8908
zcmZXaRZtwv*0l$B2=49#cV}>ScXu1y8Js|HhY;M|2~L6zuE8O=y9DPu=e&Q_Cx2I8
ztXjK!)!x-NeeuLQWjdj&DZ;=a0{{R-z(I4qb|d;D4BEd1Nn3C#8x;WH*}Q`01qCJw
z8v>p<^Rfjtungj1%F>I%-_-5jAS_do^qf9EM(VNl86p-4$;NZdT3ZY!tB8T8j<#0n
z#&20+Rwa<5G@dgRP(IA$sGNBI{Jjs$gx4js>|6_u)%pS?!4JEEXy{QDq&S7u40o3D%wb41AA@X>-D?_
zY;(H3v@=*wpW2ka#;FN7eeB7XsGa{o%XGLu)Jli??ao(M!E0DKj0Pn%9u-3N{U8-U
zzZ+?{_m&Oqog#hmrzX;lMA1w{)%N&OliYdt+~z0E^n#qAgE+00nydnE4_5uEd|y_QU|r-4*4>|Xwfjc
z8TSTfNvy6>YGC`ec$c-zIw4lim+Ip8ghp{}-$tSojl6t+aFj21lwCAV27y{R}
ztFQY+mN7>+6T!Ja!@_6*;_oW3pdaXuXulN8N!_4}2{}Lq!74QJVPFX+QE6sLH)bry
z1x+_Z10r+>1runl@a=%K8ha~o+vOL*>|u~pb;{GiMVr&$BpR}|9s93ZgeeV*dY;G3
z9NJ?j06ME1O3}bP9>J^s=uS>A2zvEbkCRd|@BqVMX;9YlS?E%agenrnPe57_FQ+cEN5I#r7$DnepzfMD0rXA0o2^o7ZzjZ
zM3-LMeb_}zgi1Nm`+W!`T~yA1d1DH#LFdd5vaG~o;9pc)APW&D|ExaALoO*nZU2oj
z|FO|xi58S7D9%m~xhM(8w3{N4Q{@5(tv+Qt24^+qp450$FTf93?T%0(Awfv_3{TiIy=sE+{Z-=*
zQjC!P5=tWu7!b`?1eA((AkNgF6h2sfT&;vsCXKR3-QM(j#Fg^IW6MLm7MR&nVaC@8
zAcNu*lPcDM1m8j8v24vfJtgJ3j?i~hqY@AFo5%^Lny}PCk>T|B
zoPNK#&w{&Ywm0zA{alWXm{ulgQz&QY
z0FAya{J-%W9q)AYTJ20JCPbzzISThb_~?Ix{N=v%csdRUQ6Y2`6_%XgQfD`#C!B8>
z3k$UXe?`l6j|+?1M8S-UN)lzn+m>KY)fcO@KllGy*NMsD1I
z-^Hq?a~E~?`%&Op4`vKdJmYkt^Jn7incPzVd(t>HN`^;O9Mt9KQ4VlcCJ%VEtGx&R4Q#1b->;&sRf~P&L
ztU2y)lBqfmx#kGp2<1pjRwXM}rBzcNO7`1I1XsajK}HzQQnDg%4d*<%m2-b4dr^&j
zp+ys2Hb|ANmwI8~&odU$JmpWlFb$&w_geGidKNAn!00XJI5+j{w5|J0C_vFSi*SXl
z;`HmNIA!bMX!s>=)<5QCd6Z8_(-jSHe~U)pmK_htIv4oG&(Y9=b>^JLL*$>vdyS5v
zJaGS|Z?)Vle0}TAIHcm`kL})I$!kKYC_Nxh>fSXa*@+u6vn=8gar&y{0#Vmwv_Eq5){FhK?A`X5OLn`}^wg6xIX!jO)n>y+P&t$o4%dV9I{
z#hP5J%#U%-p0m~DXFIX2a-nRvdp}0slipZ64n00
zFk#nsaPf7zGR8+ob?~JCB3ScY~
z-tLQCX;fJm4+6DiEDyU`L$f{2OeJ!Ur&19yeN?=V(MQ4+8keRq)iL^kN8W+2B8}E!
z-n3eSr%Ocg;syK`0`isuZqx4mXmlG}aD4%A@aqBI&61K+xzrv&Fwhm2G4LDSZ8`(K
z*}f`kMVyj^_oO0@|G0crun(NJiznr$d1018i@j
z3|)nA&SDDgB}2wjh4#*jMeTv5dls=}sRBA3==IDiaygL}i&mY3+)uHT;%Lu{2_?K3
z68R!=%Lzybnxc4WVCm(&(j}@6yyD4+!+egZT5V(0jQM(2LfZC6xAAXyZIv(VJcW3C
zOjK^jHhwC`?4EFN@f4O5BtZwQe}8MY^teZ+Fv|HahOkXF)i?3-b+?oLVkQ1vCj&Au
zD_?2I;pr!kLE8$sNGW=-K1AVFfJuC>(6u>{ckdE9#=6rr1cPokxFPBipY#mUU~gFo
zr-ax}&n;RiE}1+l9UjSYM3wu?PNZl{?!7X-z6SH3st*Q5aq*(@fDemi&
zY`PBM<6+ruuyGKQeK&EvErP^7jYDIKXZb*kl+UYkAL^
zOCkWpcwJ@Jm1mwCa-4*ZSZDZWg%vivv}|J8lqHu4JYjT|b5vx4GA&2kMrw{T&&w`S
z?`T$dx_Q(#(;^X*NI&grH8uxCI%#(=EhDX~+d_6jeSjki5M`=Y6e|0b+KXt|J)v~FYKm=tby5y!ykdIi5gQLkp)_!BDp^*SZIGQ#$=Tt;Do$_^r$aZ*W!
z@(Qyv7_yrdR^`^WeFWk^9igXpk8PwFh}Qx{W*5ZV*Q@DmD_K43ii*o7jZIw_eHu20
zbs}iRLuF(jy#_MHCAjeM)!INk&ij|fV@=_G^$ASC%XhZC8NGqNiynq=P{OTyWaeiJ
z&kNGBdi}|}jdZtz#hS+qwHrbNi`rFp#`Hs9^|FfURnZmGGYe9$6L19<{;(eWX
zGy;ieDP7Xxo=(e-0id<$7IyF`Oc!_wvy^_*QrdoQ_cJH4lCZaE{?qesgwD_Ag;%Ql
zVADCbYl2YSLb^yabKl$(Q*Oy{(V`=qD!MF7gZOB1>@&*x`hy$nC~;&`koM35R&`y&
zg+r;O6dW5<#3LVZZCl2fcf2fpwfl4VLu|l`CEZxUDAZD&^zu?jh@Dk-HaU$z({
zsMzqrLdVFDctfKG3RLLShO@vqCO?)A?o}zI)T(tp7sA@=G=SW+09u=pZ&_M=dHwOZ
zb&*u2$L7dEQk_4RP6B4C7^IkVyXDo`j}K1QFoO$sf&sI?{2TZ?tZg8>8oDKdCR
zLrGYp7Jm0fi6B*Rq8yQKr8R2lni{17er9+>;zBFKuSeANyWqN%
z_J}E3IVRKZ`2$Ej@i5bhC3hNNxtG*sntl*r@~6fr{=$hH{pHm&fnN@2%88WSQ0NKq
z_t~&fWF#h4b>ncZMle!pqdYTK4Ms3xVbAzhGDrT_ny~j`F2Z%qr5JyZc)8&XEmH6z
zAi8Eu0{!uBD&vEHRH2Iqwc)wQ?aqrkJLHA9#RGcss>{;eQV5iuNVk80rG*E&%oRoSp;nkCB|&e
zGRVzyxG~sXKb}NdbWyi}7X!aBkbA@xWl7%QB5DX``+QEwO?JOqiL=@yKp14_F)=;3%s+;rmAKKub@@V0;NLv&_v$>`
zK>TRh!=dyj=RrTw_Vl_E2=V{(;XVn<31V*jl)>`5E?J;5Fb*9DJb{gsMK#!?NG&MM
z*vyN=RoCH77dtk8v-o9L@Trqie<=H#UKi}bT5TlO&UO;tL&1gZ+UY)_fB^%^W>)g`E#Yd_Xy9#dNG{FB7}f!
zQZa$3?U38u@3{&B&dLcnC?F*q?&s3MyeV>puwAh<|ID%5KRe=Xe{Un*KPVkTlrwHC
zWCf~b*jxTWHu;SEuAsEcRd}+lDH*f>%5q-T`(8_k=nyw%lqm?u#oe`d;fv&>0Q%Ay
zYrVl(Xh8u*k)#K&P&D3jbYtH)M=QopOeS7sZiop`K;~8ftF{K+q;^AF8MQX>-Qsdq
zB)$fBxh>f7@Ge4c0ESV1;caEFUUpcqWp%-p-b>FQ_gO2~&oCxGXejw%7~FKMI_l|L
zX^<9tA!vTXRZ>Rv4{XP}P1o2-6?2SVCt)t
zJ_;}^TvK4M823ClPuRVT?Z^kFLE&o?S!M4-u}6+(K&y1N59_<0ErE
zWSM;)IohFX%(4mUq7s50;oc2;lO4ErbJ-{K9dYe_X@Te^BQH}becO&9sM(5duiptX
zO|cE`rhBftp;t8ssyFf9{DVs^y(VXw9a^j3s8y_4|q5yV5AIaV^QM8skr(Tg}xCV)+U6
zecB7?%Z(9rXFdp96Iu}A%f}KUj4RUcP>;N_;N&uN+0p7iSvex;XWmV7=#)J9lt&&=
zL(mT1Wj>?U&1UH!+yM{4-_z0Vi!fpz%9?pJD)}dw?N()2_^E3Aevl7t7dj5kT(&NG
zmQlO7KnHQ@E6JTEIAqB;37t4{z7k&5*q2R4!5IJ4DP(C`M=
z*vRWb-hwyxV+Y~{^6%)cJYvr71<%PLLb>lO()MP3z_07_=PpQhirryzC?@wC`rkE9
zGfbGeXV4uyzKME&CA=Mc@XwUmOlGpWqoAna4nf%!Rrmc{J>~#0QQWQnda~G*WJ^@&
zy>By3HxN7ULnmUpjF&4qOBD7QXo?EvVh$90kJ2Uy_g5dWrQGS&_)dP7`#p_oV&ow<
zvYwDO$mN&-BB7=Llz^d?n@in8VD|<}7mr(wu{)~U@8|96
z?Uz4iJxIouN3!R2C19mgwt`200cgMrwb-XTdIl1D3e$t}bI!%dc((A!zGLK6f3*n4U_dN;lwCC*PTukvMSB3E
zDK4Q{pidmp26#$c&+JEB$}D>_ZzHHLLm{+5BIjQ0CKSqg9;|@&_zFT_5#ZGRwxDN5
z8w4caZ-=SMJ>$IEqpic#LmNO5uXr%tt)Hja%S3vLXg5S)ztp=d>23mug9W%>zVm^6Haw14{iAi9ekKc>vs+|BZ)9_mig;2(?~XK
z@D;m^bbuRgKitgSh|)W;PW{V;em8p5%+5+C+a|nDQHe%{BWm1lNtfSHWNNu&l-b|t
zo)U%_d(`NG>MuzdSzh3Cc<#qF3N3Sa>a=@IA`7kPM6!OnGcr$t7|zNs*hi
zgDvQTkqG#y_*yMP$ZIwA5tuPmHU(M`L1D&d{2PYpE~2$=gnlr>LxG8!93LGjK_LlS
zBZlY9qbS<&uTe98yhy{S-Sh7!p3_>9vQy*Mzc2Aac7{lB+4IGsQ)VXKADN*u&30P6
z$`Q|FT6|38`fR5H^>Z?GG~sfmSUMN1$u0#pb;exjc43b8+U8S(7bH|kPUkZ$rkYcC
zaPkFD0%#?HQgNBD);jMwzght!5W~*IKQ~gujcT9B*wS=|
z!L0hgCGF;tbYy1Un2#3vw%EPq*Y-=ne||98(DH&QlhUUHEdYF-$+7uVfd^0Z3M;Z?
z<jpr@V(MQk@8-?i9*i>YW8O!HGEO3+r5E0TNaxDBa+nM4W-2DsL~KKW{x!G|WEi
z5Izc~KyJa;splK`{j1
zN{8mXtqywVgpQ>oQEk6Y@`J(%W`4fHfTXrQ3Kzg21!kd7)b8A5!e8gU?p-w^0|^At
ziq^Z6vdWplDtyx1Uz%#lQ{mykQ2{F7V~oZ
z!hZBz@r1i^4Ds`HPvhz({4>|&&t;RSaddCzvj6<(6$}oRV)&j+`VusT=GXp|XD1V{N8&z&Y@T4&Z#Pf=
z+lD67CVh$AfjSC(vrncbJ#jojvh%cdkGmLRfqz-&Zpe#%LA(r$g>r_UbcWGl|9y!rwe1xl8k{ez$<4~0g!=h1xAc(F7&K>Pd3ed(#OUx&bE>dGFn;$`t_u%YAhbH@l|L{@(QtZM%1d3$Z+9$3Sw
zE`k7amUXs}5As0JUNXcH7c7|KgWl@cR61Cl(@~|6(M2+cPW2JE8)5>
zDH!m#Cm)6unGJWMCMEl1iK0d?qdRHI8C^l~%%Ls?9ku8-(c3om)pFQ2d^mIl9AQ=q
zrn9YO9?j4Z(TjO3vUdH%QtDf`;x+5Yi6;9cD@3#FCM4N|bmXaeRz*r81F<|g_fnh5
zc~1CTEW7bzF*seS1!)xs9w+)jFAc6tG!r`yZ|Xq6EEkcPOr~)hSm*YVRF@#qnJh}(
ziySR!Rxzj^6uya6O0N#+fz#v*T(6CAq>vsFF}_*e_vmB_!JZ3v
zbf^u*kJV`XE;G?&f~;#b?+;OzBc!%2I#_jr;St!QdaT;rmXzfK&lfwVfy(&^lpTdH
zG2-wiqrTazSg`J1b_9~2#_Fh+n_j!mC94!b^x4Q1N$KK_CIX}KSdq!k&J>%(n>L8!
zR`)kdpw*EFWIGsx*enaRw3cy;e#MbTtdqI<6bGGQry^6tP<;KK&FuYcHliwl;A7Aw
z+h4VWhmgz{C7fXf9Ce~G6J8lm#snP3&K*Gs?&)!h^3I`RiH6$Cj(W+D6-J?WD#sM*~=+45(yV~G;
z|Bk74dkszy`8RX3%`U{OPwpX1<+1RqxQ>rI5=Nqa7G(5D<1n#q!BmNczB$qD35u#F
z=k~L=uwq5l4_7V8#CMpukW2Fqc4^Ub0n|$6KRhKdlGBu}CtVon2iFZKvrZ}wuAR$-
z{!gt(gmVI52ePZk-th85spz-Y-CO@2n~KoaFl;!j_Ybc;ert?(9oyKP&m4th@faU<
z$-BO%i8T-lS!$LeahIXLS{+fz7n}OIKD+rt2LmPte`~VqVdISQH5K51=ZIuHxRnThLLUbn_uh`
zYD`POdL!2AldP;7Sas~Y-@VI*2d>7gp}c$tD-)hLc;6x>_ZJS;3dk%iJWq=_C{@_qdL
z?984j+soOQv)b)?BHUFF(Jqj?iFbLJT#l5g?Y)SKQUIgN>W1pQ(lwqwE5kt@Zo}g<
z8~xP8+NeS+J?W=|U;eld{@g|DY~FvdMiY9$c4vBzSoiZ>w)J7{4z5RAYn~`Scdl$5
ze67kdnsjZjW<5Uxzvl)XY^@-85<%Vk@J9zSo+kj!1W1BYal1-NO1@-AvCP+2?Bx^K
zn3Oy&&znwf_0C@Y*&VxzS;HqWo-!MB-FLsEKk6ue?hX*U*Q+faFwjTyXNm7&^^UYP
z)y3OCE9zj@>8;M^`n#m?aZy$3c?&dQ?A&r1ZVoCzW)5;f>GpPVeU9>Onp(%X9TN(FW
zQET-dKkP&@jmX-uDgxp!s|Jle5$rSESNk1sSQ)Z!w96y=NEhI>zSBL82EcxBk8q)=
zrI$TX|0uCV9C@NeJ{zC;<9Mqu?+Ge9(Jy@`+F2{Dt?bMG{-@R{f422P;*kAx*+pLH
z4l)=>zUdLM8uSf=wvUgQPBQSApr7=Ohe*tc<4x>;^AgQoh%eBv{{|+Skzs9N|52VO
zI?(Wd|L_#4MC`QxF;gYkpZ*a*4#9tp1#{3q{bQAJPW~f&xOg%D7k%La03f9Ha^WdD
zc&I5tLE`}a8`V&S-e~#_4FF`J0095m|6{4q0RSGBcGk|;tahHxPXG5}Y9kjBi7F!i
z;B0R1!fNU9|0SnVa1)VsvH$=Y(&AFe(yY!_{~huF#){)662xN%0IYpItzA6qU0pob
z{`<^7D9Q6eXu{CHy26J60EqracL0D`>K|^#e+EY5A%Yg>NLAsWNmb@S{>L-?m*@X)
fk1Dl}1M$=U%}s6mSG|byKlMu<0(dvBe~14U5%&A2

diff --git a/Antedit/ts/BaseEditorModel.ts b/Antedit/ts/BaseEditorModel.ts
index f09d2c8..151965d 100644
--- a/Antedit/ts/BaseEditorModel.ts
+++ b/Antedit/ts/BaseEditorModel.ts
@@ -59,8 +59,7 @@ namespace OS {
                     });
                 }
                 
-                protected _wr(t: string, d: any): Promise {
-                    this.cache = d;
+                protected _wr(t: string): Promise {
                     return new Promise((resolve, reject) =>
                     {
                         resolve({
diff --git a/Antedit/ts/main.ts b/Antedit/ts/main.ts
index 7e36825..4829621 100644
--- a/Antedit/ts/main.ts
+++ b/Antedit/ts/main.ts
@@ -817,7 +817,7 @@ namespace OS {
                             dataid: "recent",
                             nodes: recent,
                             onchildselect: (
-                                e: GUI.TagEventType,
+                                e: GUI.TagEventType,
                                 r: Antedit
                             ) => {
                                 const handle = e.data.item.data.text.asFileHandle();
@@ -849,7 +849,7 @@ namespace OS {
                         },
                     ],
                     onchildselect: (
-                        e: GUI.TagEventType,
+                        e: GUI.TagEventType,
                         r: Antedit
                     ) => {
                         return this.menuAction(e.data.item.data.dataid, r);
@@ -866,9 +866,9 @@ namespace OS {
              * @memberof Antedit
              */
             private ctxFileMenuHandle(
-                e: GUI.TagEventType
+                e: GUI.TagEventType
             ): void {
-                const el = e.data.item as GUI.tag.MenuEntryTag;
+                const el = e.data.item;
                 if (!el) {
                     return;
                 }
@@ -1150,7 +1150,7 @@ namespace OS {
                             }
                         ],
                         onchildselect: (
-                            e: GUI.TagEventType,
+                            e: GUI.TagEventType,
                             r: EditorFileHandle
                         ) => {
                             switch (e.data.item.data.dataid) {
diff --git a/Antunnel/build/release/Antunnel.zip b/Antunnel/build/release/Antunnel.zip
index e6bd64c572aaf7e8efb73477a64ba16446c7a558..114cac62cda8ffebb2a429d3cb4d1fc5cd9d95a3 100644
GIT binary patch
delta 167
zcmbO$K3AMCz?+$ci-CcGgW+Mp!LW&ZA6P*2W)G&>96ZP}o0%A`82K2PL>LgNCx7HJ
zvjiy*){x6=;$UESD9OOU4m1n_z5toIiJ5tNS;Ya~Xu7qzrIcrLGB5gA>c
Tc(byBv@!$XG9djBWEBGdR|_Pe

delta 146
zcmbO$K3AMCz?+$ci-CcGgCVrEEqEf|2Nn>$c_pV6BM-97W+ukj9DIySA`A%ClRt8q
zft62A;Fgm80yHJa)zQV*RWCOsz#C1eHn)_b6%zwPZenJhURH5{H!B-ZJp(fkE(6jJ
IL8dYQ0A|}BbN~PV

diff --git a/AntunnelPlugins/build.json b/AntunnelPlugins/build.json
index 13cd03a..2c1de80 100644
--- a/AntunnelPlugins/build.json
+++ b/AntunnelPlugins/build.json
@@ -17,8 +17,10 @@
                     "data": ["build","build/debug","build/release"]
                 },
                 {
-                    "name": "ts-import",
-                    "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"]
+                    "name": "ts-antos-sdk",
+                    "data": {
+                        "version": "2.0.x"
+                    }
                 },
                 {
                     "name": "ts-compile",
diff --git a/AntunnelPlugins/build/release/AntunnelPlugins.zip b/AntunnelPlugins/build/release/AntunnelPlugins.zip
index 7b7bd3523ace0f78c86931df619dde5c6f0f36c2..6e557b6deb8da4c11857f959a478e7a30a536a4f 100644
GIT binary patch
delta 213
zcmeBH?N;Rr@MdP=Vqjq4V7OdxFl-}V9w!TkF?or=Hy&h}%?+HkY!In~{MY#ynM4>6
z+9t0MG=|7|3rQ&yaWXIzBqnDkrl;y<73b##c%!MlFDMmJ0@R(Gn3)Gufi6Ew<8{g&
qppz6B85n>@A%U#|3=Bc8jxN5gdbue9-mGjOITj$i3#4ZVf_MO((KDw2

delta 213
zcmeBH?N;Rr@MdP=Vqjq4U@+>g3Es$;$H@X>Y;NMRWdpM&9~QXIgREw91LrqBMkWyk
zgto~m1dT00+S2>$>txs%7}$k@7-%X26mc>z17oMc%$j|6OxkM%+J6O#CQVf}!HRpp@D)0S1PG#N_P6^i-fB`FR1}tU#L>7+8StE|8uf2;u<%d15Si

diff --git a/Archive/build/release/Archive.zip b/Archive/build/release/Archive.zip
index 216bde7b6d8e6f312bc4851c3aa832af3b076438..24f870c653356aa5bac4637b9e434f0ab4fc03cd 100644
GIT binary patch
delta 273
zcmaDT^-zj8z?+$ci-CcGgJFHa!O6^w51E1VMBdLJYO*TV9}vA+gf=ZwZ2
zyo^jD3<$0DJksVsa~N_HGxPM4i;DxiQRKrI4@F9y0m?@+GBEIf6vDxi$%#DDVEbP2
zNXy&;$_KeRy7;>4<))w+GFg#VI_f4914D6gMrv-VUPei74w{m%VpA1&Ne%{vJ(3Iz
e>~K3kj33NU*JS}6$I1p0Vg*7`poL~&7Xbi-#XHjg

delta 314
zcmaDT^-zj8z?+$ci-CcGgW+Ln{lt%-nL!lqLlCu@mBpBY8%cWdbH+bliDyhAjJ%9Y
zA`EbyldE~8t%1fc6eK2RC#I+BWfkY=1$d*V3A@>NB6=TCjTsZjK4kE1aw3m-JqXwe%bCI$vBpb!VpQOIDjp|uFaX_IeRNy~cxl@%l=XD6no>SYz@=LLA9
z7&UpJl{C`}w#oafB*E^=vXTxw0W>wp)zQV*RWCOMSv}BMVSu4mnFq86p$X!BFKd0U={45YV0xFe5tx2&Z3U*+*+{GY(PCgoEXdSP%+ycL
zDJ?EZEz-*=O+=W)0S?F<8)>H9CX+jDz`-|J$3|Mn$qcSBF)uNvvN(0}Z5t^7yh4Ba

delta 494
zcmexb`L&Waz?+$ci-CcGgP|mG-{xmLI+Cmq=2b2}CT5V>SGK#%U`8m@Tow>xBd;?P
zD+5Dm;=ak^YVyoLdb6e4Peu@9vZ;m=SRhJc4HKB*Z+4TJ8)gMa=?Rk-u+q((+FLlC
z7@0&E;MRu;J~C_Kkz`17oMc%x{Ve9uZc)DWmC$koxs*Hte!
z1x-O%;N{gzYd
Q#^jvR;*!*&$+vB!06W!zj{pDw

diff --git a/Booklet/build/release/Booklet.zip b/Booklet/build/release/Booklet.zip
index 5b0f39545a73419ad2a2cfa5d125010a739e7901..d65be054efd8adfc7b369a55400a0fbb6b068bac 100644
GIT binary patch
delta 275
zcmaE*@k)a?z?+$ci-CcGgW+7k!O4C6H<*F+<}N-)Mi65oZxtVio}4Chn;S{t=1hT4
zjJ%9YA`A$a|#CQV65!3s1`=ciLQ$Y{dtnd{00bjF`Tzg`

delta 274
zcmaE*@k)a?z?+$ci-CcGgMn|4^5!>;Rea3+dz3f6U}OZ*6M1idsLlR@pBTAe3V{NX
zGX-w*GBSxUz_m`^CoF9aG>0KKF*8put2n?LAq~_J=01&i&n=*I3?l;r4@eyx)bdSU
zC@clCX0o5Kv~(js)Qsd}bVDZVh)Bo82rw`NxjMS|y6WYopxaWMcUEsN(BxX6E!=P$
kK#WKs28QC~jMUszy^NCFoB(fDHjpqY5Q+j7+Y5tu06EPx8vp&CcXe~W)?061_lm>I|T>BCi5|0V*xQX|6mkigs@&PTR>SVtnN@&KAZaz
z9%PLh`R+0DF*1oTAep7NTAGnzve#;F21gMxhd${gxOw-DFGEQGcz!7GfZB)nuke;
zdGhYnlEomWh)$CIt+#}M;mc$u26hxf%UPgK$-;06@BAk-j{%LmCCk9ThN9`z3I>Lx
YbiJ&C^Z;*GuoN3mg(pz$mQ^5y01En4EdT%j

delta 350
zcmbPygK6>&CcXe~W)?061_lm>TRY~5ZoaYN9wQI3$i^2!j4U9jiG0_<^yYtz77&rm
zR?O~DRx6A95+_C`5e9@&yz`&TJjTeta7&hffemN@Do9G#%PL3@@J7`$`QIuji&sER
zxrv#1ddbDb=n7`JWbkhQnxqU=!-Hxf^W+Dsq!d6d)hbtw7X>PK0K}Xqif%Da4p=P?
z_QvGw)lyMntPBjr$r-7+sd^bDxjE>ziB6LJt+#}M;mc$u26hyK5`jJfyD2Y53wi7+56O`W_|
zY8FuMGa%+fF+){svcI&r9mu97zg=B87#SE|0x{4sB=Ag(fuSHVIXf{u6=-;V9SS+eX={+7sgt)#%>tVA42U_AO=JicXJ80&b#(D{)yqx6FeOXc9snw$Hn{)*

diff --git a/CodePad/ts/main.ts b/CodePad/ts/main.ts
index 225f5f7..679c5f4 100644
--- a/CodePad/ts/main.ts
+++ b/CodePad/ts/main.ts
@@ -244,7 +244,7 @@ namespace OS {
                         {
                             text: __("Change theme"),
                             onmenuselect: async (
-                                e: GUI.TagEventType
+                                e: GUI.TagEventType
                             ) => {
                                 try{
                                     const themes = this.eum.active.getThemes();
@@ -263,7 +263,7 @@ namespace OS {
                         {
                             text: __("Change language mode"),
                             onmenuselect: async (
-                                e: GUI.TagEventType
+                                e: GUI.TagEventType
                             ) => {
                                 try{
                                     const modes = this.eum.active.getModes().map(v => {
@@ -284,7 +284,7 @@ namespace OS {
                             text: __("Build with AntOSDK"),
                             shortcut: " (CTRL-ALT-B)",
                             onmenuselect: async (
-                                e: GUI.TagEventType
+                                e: GUI.TagEventType
                             ) => {
                                 try{
                                     this.build();
@@ -542,7 +542,7 @@ namespace OS {
                             dataid: "recent",
                             nodes: recent,
                             onchildselect: (
-                                e: GUI.TagEventType,
+                                e: GUI.TagEventType,
                                 r: CodePad
                             ) => {
                                 const handle = e.data.item.data.text.asFileHandle();
@@ -574,7 +574,7 @@ namespace OS {
                         },
                     ],
                     onchildselect: (
-                        e: GUI.TagEventType,
+                        e: GUI.TagEventType,
                         r: CodePad
                     ) => {
                         return this.menuAction(e.data.item.data.dataid, r);
@@ -591,9 +591,9 @@ namespace OS {
              * @memberof CodePad
              */
             private ctxFileMenuHandle(
-                e: GUI.TagEventType
+                e: GUI.TagEventType
             ): void {
-                const el = e.data.item as GUI.tag.MenuEntryTag;
+                const el = e.data.item;
                 if (!el) {
                     return;
                 }
@@ -845,7 +845,7 @@ namespace OS {
                             }
                         ],
                         onchildselect: (
-                            e: GUI.TagEventType,
+                            e: GUI.TagEventType,
                             r: EditorFileHandle
                         ) => {
                             switch (e.data.item.data.dataid) {
diff --git a/DiffEditor/build/release/DiffEditor.zip b/DiffEditor/build/release/DiffEditor.zip
index 26a6bca02683fff3ab31045ad0fee26453f93fae..fc6762eccdaf17f4a7561b3d21c0e92306a641ef 100644
GIT binary patch
delta 306
zcmZn{Zx`na@MdP=Vqjq4V0c<^Fl_P`j$T8y75Q
z<6~qJVL;L@$SqY5G>joPF*8puxwtsM8&$!b*h^+Mj0_A*nHdpE6p&S%oRONF
zs+Uocn}e=#(p%n&LqH`-K+QaGO(2Fo69Yp*Vsdt3da7Plaekfvy4J}#TvATbKnsIh
p9bJ4~^>S0tRh)XjHnoe5fk94$fq@;x@U=i~V83J)PcGyZ0|2(UM)Uvx

delta 246
zcmZn{Zx`na@MdP=Vqjq4V0gc4e&}RP<~|k>WAkq2#cVvtQX6k1GJ>Th@*M-ylWmzE
zXfZO0Fd($gXf#sD1{zid#GF8k3?>_Li$nDJa7&p_0!rm3X6ET-6$f~u8geK0l9>%7
z1H)2g1_o|q6Br!XC-38ugcy>;B_*?r18PWeF@`CVZ*xfr6aXDjkeHmEn4Su>C_is<
HA-5O+-LgPH

diff --git a/Docify/build.json b/Docify/build.json
index ae3e803..6ed4d77 100644
--- a/Docify/build.json
+++ b/Docify/build.json
@@ -33,8 +33,10 @@
             ],
             "jobs": [
                 {
-                    "name": "ts-import",
-                    "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"]
+                    "name": "ts-antos-sdk",
+                    "data": {
+                        "version": "2.0.x"
+                    }
                 },
                 {
                     "name": "ts-compile",
diff --git a/Docify/build/release/Docify.zip b/Docify/build/release/Docify.zip
index d47517edb9ef77545d64b643608db8d96cfc43ca..0b5285e3b28d95734c937a34c4760dbfb084aeb0 100644
GIT binary patch
delta 369
zcmaEE`P`B>z?+$ci-CcGgW*EK!Oi;wS(uqYj0KV}8M%>UHuBc+gCr&&5%>;P(8F)a
z2xc4=xxiA-$Rxr5HzjOlhxW_6ObiS^xfvLEfM%nDg2d$P#Pn3Xtm6E<0B=;C>n7|p
zKF!F$@Rf~$0jL=Xuro6-6enk-=BDapl;q~1Y79OYX7fGibQC`W!xlRR26iNU3=F?n
z7#MOBGxLBJqUt&rw)XeJ7gvCaj{~jbK+#ksGFe_m4D936($Y>Pq6`c{u8uCgu6nsC
i=%(Zu=&alZv}B?Hy47pM7#I=@GWBvw6DMDk5d#2b3s^M(

delta 301
zcmaEE`P`B>z?+$ci-CcGgJIc}>dhRiHT=vVMx&@HBZx7%UF186-pI?s43^j_c7cT(
zS&InsOGaKsCJ_d>DU&&6q|JdwGUO&^=ILb>2Y91MhjF~Fi4kOEVAu)7oFH{@P|rVk
zqKr7$UOO4-(Cq?HGm?uj44K)X{qimo1H(^l1_mCu0U*XkK?a6`#N_P6^i-hb`FUv8
uPhKq}Eww|0fg!OVQ!l495ncL%v^4)@Nd|`Ef5WyAnJJ4wL+

diff --git a/GPClient/build/release/GPClient.zip b/GPClient/build/release/GPClient.zip
index 6b2b2b3283920ab092ae71eed397874412258550..5b8fe6f1f162b76bd2a5919fb0f5f6f9a70d5412 100644
GIT binary patch
delta 1446
zcmca3xSO9Zz?+$ci-CcGgW+Sr!LZ3US%0yB8Q0m4Kp6Acz3P#b6tm9w(aOTWFrAly
zfgPwZH!(9$FROTOSYZBbGl75FGJz^WUYYkU?YXhAU5~XZ>1EKC*TG3!wzx#QWO#|L
zv}jxXf1k4E$w`k{zP9P|H@e=F-T(gG57}ndr9#R@qAjNM4DntEr+yThF(X1<
zGXCR+I735=juo8|Eax=8RkvIgZ?sDWlk`6=!;Hip-H}FgdJP7^Z2g6La8Z
zQ(wm-n`tq+zGi~r0>7S~z7SBSoMwGnT3CDAqs@~iA2?F~-6u>Szg~aNlsh3yKh633
zvv{%4G9kS}iRW2)LYkATrCLf}_3R5h#KODeoZ^0I32v*>Gopzu{yJ%{+f5T0V%|4w
z=C(~_sNwEBI3q|Zf-6U?YD=R0tW&)aIZgWUOn)4UmRUBf`7C6pd9Yz|>jR^!7Ch>!
zp1Mh2E4BAK7NYgD{-o!7nbUJ`pkjnGyl%Hr^Ql#?rGgT`vpx)R|a@@oiE&c{jImzbD^7FF1`YPUR%0tyVs$_
zV^SNhcv|Ji+3YGYn|B2wQb*xo7?xZKRoXy;VAL^BLBp$-wPks@3iF&>u>+_
z^YPV>0jq=lSzJ1PLhhhFv(K%ZlwzMFOCnYoYQ258B)+}x#vUWJaJw##%**HcB(`o@
z_ueY(-WT>}lj#}aFD~iY$gc4}H~WTJ6YKwt*@s_hG75g!r24NnCzkWB=ky!X*FC$%
zqjGvKV|k49E#ZbEtle*n-rYVjZ_%=P^XS>
zky!7oC#>Oei3@&6Eh))vnOKw4`k-`{((V`i#})5HPheuzGWxnJYJ-qj(%Ig|YKdy=
zh;=1mGZ+J+&42ayOI&-B$)~-LZ<0YT&n-)4sp~J++Xoh(6h3^pyls7l#TMr_t`lEk
z>mMjayvr}za#A~_NXsO
zcC5413ODt5VSKWwNzKXaS2XLrzym*?D@HC-v
zEk|4MCyitOkGrrcT-@7GR4#RA`qDC;tzrMq^1NK~Z?bpH*aqihCSOey&bzVh>xa(<
zvOC20vpOHys3-jEMAw(NS7!V9&dr-yy{7m3{nho)eB~GT-Mn}zIp4g+Nqe1EN$d@w
zOcPh$3EY(lqvTdi_IKa
z1MBtw96!CDx%>VE#u;`y7uolE+-_HmKh!GyO?>-ijmGlb-qjXAr31VfnM4?n$~7Gh
zsYqa9#ZZu#oSm4S3M{bl^UxLPT8kf;4^;C6h`B+E;ou*TRh*oWnwzSZQIea3u5t2w
v4ylM^j0_Axu8uCgu6nsC=qk_)O}NPnGEDFyG{Bpc4J5$=g!h5;F)$ARW<7fc

delta 1739
zcmZ{lc~lbk7RON$(lEtc+;A<)?YW?grCCxGI=L2VR-%KNyWx`A;8rfrQZ&>j?xH4c
zSq`I;NoCX1+)~4G!)0(KozhX%5r@uuf7CnY-Fxo&-E+6|`|JB*N>4&b&R8*^Bme+7
z1R!^od0^Ds|ELiM0DwvW09aTJ^$iL$zH#$CE;M`sDI-|B_5vz~s9@w;ye+Us4ppCW
zG4#od*_Q`O8NEZw6-A*D51{<6b1^FI1;s8E)BkumLh|h5ci^9_+&bvllDb_!BUuH_M3INrX%{my9keY2%sK?Jod>&G
zyCoP!rTKWT)H!zyh1+uB=}U$Eyq#QvNX)0%=K;34pNowHtu0{G(w$%7j@Flm&JVYt
zDRwP=6rRqHuZK!>o*;fIQ%H&XSt@JdweGuz8M-XO=Gn#qB8dj?@V>I@ME1a>YyTp4
z$Y}&34uNP;+beu)(`Wo@7S41J-HnuN8Ef`I14}OtTk&F+vf`djIcrEfDgX63gPpA*
zF=&7bI?P-^b`t9U3f~Oj$?4&>@x77C)%Z&Mz#Q0ADkA&0fj$+FTlx(P+r@RT38#+{
zXvF;TnGw@a5{_M8=eJaKJB52*J!K6L<@jk%<`^q`)gu0Fs&?V
z8*?_py=D0a{+1D|%vvv38*bV!GphzXR%F&Im+|WH?UNz??<M1JnGooJOk)pC*5#XM|w2bRN)dYnw6I9(2WEo-USx%-LFS158rQtRK<
zyYZD(Z=cd9T*i0NS4S(VYS
z2t!a(`EipwK;Nzr)I8j+xKyXao}(`@Oh*#b;&Z8{$*BlY>g0G6oJgc8nQ$$J-C!*X
zSH=hRdRXzgb*?$t+BPc0#i(h=;!kj+rPqn`CljS~u@FRD~ZdAa`Rht87@^$czBZqqsh{$Mg5wSh6R4`VSX!49@SBW;yYi|py@
zz>82o82xlTVN
zz$cn~L8o`#=$PR$#&>dt+Y?snR=D&k&!Z^_9-xwwOYC&yusQ0M<~@Wb9##d6imS+Z
zW~Sd$E8axbMQCg@@&2l8+xXzL7?@vsUA8TMuR8kU)Uk%6rn_LDGwlasi}f$gMZ}M(
zViut;8;TDk4)_hE?0cf?*$z4Xim9C5{2ls3RGy*dG6$^0f
zu&E%{nq$A5+!d@#KnViw&`$F%Cu+C}9RI1F*b5m4S1OnHis%m|XR7&_SSskjls*(h
z4OG4TZC>>lYDoSF@7c-az2*|VO@s<;tvS<$|&k(F)|Mhdv
rhyh3w;SEz^NPKsTEF_UD+TOtlZ5-oc?E;0)5x$FGF$MS=BvKSh

diff --git a/GitGraph/build.json b/GitGraph/build.json
index e6c775b..4ad777b 100644
--- a/GitGraph/build.json
+++ b/GitGraph/build.json
@@ -17,8 +17,10 @@
                     "data": ["build","build/debug","build/release"]
                 },
                 {
-                    "name": "ts-import",
-                    "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"]
+                    "name": "ts-antos-sdk",
+                    "data": {
+                        "version": "2.0.x"
+                    }
                 },
                 {
                     "name": "ts-compile",
diff --git a/GitGraph/build/release/GitGraph.zip b/GitGraph/build/release/GitGraph.zip
index 305eda0500177aa3be5299cc8400a687ce755abb..02d0e652d94368cb5e5290c323797d51b8a83621 100644
GIT binary patch
delta 326
zcmaED_S%duz?+$ci-CcGgJD;}!LZ5RqR-hN%*~oivzb{yf*bk7nOJs%WKXbu12Z-s
zV%x$9VO4RQ=3!%C083kl$w368#DJ!P%{wS1#l*lc`L2{W)Y!@QB&BlS0xir<%*@kE
zE-nu6W@Hj!KsX^Lbf(=mMh1p5W(Ed!pgIKTVS(z(LeT`WdVfOti3>oL(Ljwn2pvGy
za<<6^Qc@7-`$#CQVf^0X)n8%5UZjRCB8vW1u&L^?{$n>iF@NKEKVyKjsP3}ws=4D3KlP(f~DW}aSFaey}?
zlL!OC4Y@A04V6F*@q!>%Ap>cq$^Rt9Ag=P2k_z9&%D_;Nn4F!Mo(eQ4KM&ocFTdu9
zPXt;&g^7WI6WJh!EkHL1xjMS|y6WYoplh4FPfCg@hhy?BDJgr1CzS$@6&?W^un%Y$
jH;O^Fq6`eh$r-7+sd^bDxj6`S%n9~HXAWYGP2ADvYNNDv~Oi$1Y)M`TUnTs{CQyN
zK(ZV86d=kr`!hK~SyP!s82K2PL>LgpO^*p-mZ}Gu&XAj!nWvXrTpZwyPysTiuIrSA
zr#~~pTUj0kc923ikY$AG%EHhz!9{N4U!cM+pb}2F1`wk=fSDo4)zQV*RWCOMYL^;N
zoPz;mnRDp`b&#?DnHU(jQS_}3WS+i0gjoXY_35X9u2%aR#LQ5Tn4F!Mo~oBsoSzrq
T&B_MS!wQ6=Ktn`Bn1MV1hEqo!

delta 309
zcmX@Giub@OUcLZtW)?061_lm>&3osEZl4*ztiZ?uVs7MQ)MXhN82$rQaU&~Ya0H4JCugMQrs`#sLxFytm?<^h!ic(byBY+(gLQJ}S=AwUxt
E0B%)8l>h($

diff --git a/ImageEditor/build/release/ImageEditor.zip b/ImageEditor/build/release/ImageEditor.zip
index d986222d128bfe606da690193baecda9b31a5033..60d014a5b43758f3b47910553693da65bc05b40e 100644
GIT binary patch
delta 274
zcmeydj_t=fHogFFW)?061_llWhr)wln@t(-%dmi1ujFM|Agr@;l8j*1Mm}W-W3q(Y
zMixh)`erVb?OZC1>_uSt=|0mKr7VDkG2|v@=IJFD7YBGVGKnxC%=gcj6Y-mwfuV?#
zfq@;Q5Dp&8Oc$KaC<-xWH_#j#W<>^ug2d$P#Pn3Xtm6DUbhD0{EDmH~WMHTPVxVzI
tKtXA`;WS2Z1&}|sD(J=a0OeePs<@HVFfh0)PoFo9Q4;Kr=~~kn{Qw!GK?nc<

delta 230
zcmeydj_t=fHogFFW)?061_llWw|(F}hKP6rS<-jp85nXCGxPMa
NiqWl_t~H&}4*+1_K#~9e

diff --git a/LibreOffice/build.json b/LibreOffice/build.json
index dbdd827..d1a93ca 100644
--- a/LibreOffice/build.json
+++ b/LibreOffice/build.json
@@ -17,8 +17,10 @@
                     "data": ["build","build/debug","build/release"]
                 },
                 {
-                    "name": "ts-import",
-                    "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"]
+                    "name": "ts-antos-sdk",
+                    "data": {
+                        "version": "2.0.x"
+                    }
                 },
                 {
                     "name": "ts-compile",
diff --git a/LibreOffice/build/release/LibreOffice.zip b/LibreOffice/build/release/LibreOffice.zip
index 2b1d691dd143230469b281ce10af86363cdb4241..ebad0861b66311b34bb58282d7f06f48eeb05e91 100644
GIT binary patch
delta 502
zcmbPvlWFEnCf)#VW)?061_lm>0|f^+-xJ7SWCk)OdkW14(HnWs34rL$cSL-_5}Th3
zeS$D_#AdL8m6|H5f|W2woD1YeHY`^0tRgD|$lS@tW#qwXUdp($utKcTcRnei#mFSW
z0Jl9%#MdO*k&%I+hM9qZ2k0hbFxg<06xcf7RnpSgKt;KUnR$B2#l->MD27bFw^CY)
zlL;!Hg(1Cbm9+IOAqIxxeygOVfKFk^P0Y;G%PJ1=MwPy|Qkv1E@Y^;5gIL)>YFL3#6sXfw21qaf03OIUBLDyZ

delta 291
zcmaE`i{-&C7Ty4FW)?061_llwRNP$1#LvhKWNhRO1Jje6ng4?L&CM*^n^_pQh;t*U
zUYy3rsKv-6!T{GF_NsvK+e@HnolFc2+&~%`Ous0@D5(H6ENl_?{-4H-3=DD1AbXL4
z5aaYj8AdUXmDAtKFiHnz0}Tptb#(D{)yqu@@J6*w>E^9jv&0!0PMb3`up=A8kPS3B
yH!(9$FRK_$)ATB!v1(ed$=QkNsX!(9c>&(6Y#;+zflw6aGE*5K!2kgNPcG&F

diff --git a/MarkOn/build/release/MarkOn.zip b/MarkOn/build/release/MarkOn.zip
index 49997be9cf641c557e2365d76e7b73e6aa5c6d63..aa3fe1d4fd6681fef6e05e37136b4eb5e352e873 100644
GIT binary patch
delta 315
zcmeAd>KEb-@MdP=Vqjq4U|3slaB?|&J~uM|0NWO3khn7I9}vBfSC|#dS7Mti&B!Fe
z0M{9&#&$d`1ZYkK$gIhX9AZMr#l->MD2gV}=yAQT0<;0f4h
E00Rp^&;S4c

delta 267
zcmeAd>KEb-@MdP=Vqjq4U|`;ZpP1VaN$<0Ai5~jv>JS+rgdIS)2AZ!7$ve+3I
eauYN2^pcB#&SM1{!@$4_grYzvJpsxwFaQ9Uk}Zh<

diff --git a/MonacoCore/build/release/MonacoCore.zip b/MonacoCore/build/release/MonacoCore.zip
index 6107652d7e34aed8f4c739153b3a4c19dc9ef74d..0b6c447b2649b073d7106bca40173af9927e0c4d 100644
GIT binary patch
delta 4512
zcmZ8k3sh9q8s6v39AIEThlk1l!+?N1VttK_x{g>2iE!)d;R;{-~ZTq|7TCv
zs#`)Az$;^dPVY_#aU<46`=45Wp+FzX{(Bwg{~cMv_xhn=aKwlqUTko@L5^GIN{Bv)
zZp@a_YQNY`T{)w6V&)cg^y)vaxSAL_;m8YnmPv#>U?OCOqp>2jwoKe4ak`S1FI2d5
z$%(n|#IJ)GqQgE0pFK7lyoxS;7iwoKw`(~9Jj()6vuM9^A
zDs~ug)coS7Blt*({8so47c0g$1+xcQ{gw;AW8})bTwy(GD!qBai#jAk*@abV)bqa<
z{-qMWatJ3qkub?B=`a8#qgohjLThEGev)1v26a#@jly*w9L~HggnHw!bfcgcO^h(9
zWcHO|9)ui?A>>JFZ51A(h3&G*5x3c0>AfTl^YCJ<%Gl;D4k+hQ6EBov|6Z(-P^!#N
zbP2&>MWUE%;QYho1H0$2y$Yab3{skMa+6`TE0W~3VzI?SdG0N2;nr%YTUDUh(jhf6*GWJ^){UA7Bt*FklG4A7BOq
z00IF)01F@(U1nisq4+md8?Qq-wo0Rr=5atDLpVP@J{P
zUCG+zvEl#{_tqLGs8vZ>VfakahqF^1TWA{Pio-QEh6WctEN&ZmA0P@a91snN0mK60
z0P%nkfRTVvfCRv3KqBCNz!*RhAQ_MXNLAW~%DFp@&Mw6ro6C*U-OzE}Dr2P@&cqF-
zLSMAbvm3{$gdHCkbJZZ1Y&MSb#2`EEQgNr<1>mZ5+TAv^qS<4wvDjm;C%_9ZK=If+
zFnAwIt}QTZb;sekTGK&;iA9n$UFUuqj^Ax)aMM_WQ=;ECSg{bw+-(MnI?O0B*oNTZ
z?RBQtj5s{=n(>4O4(F^io%6MnZ`9cr}mwOsUJ*yiu(O5C!@C91m^wz%$(}@SPZ5M
zugXR%`yP1fPkSY^tU?Ky@>hgxP!o(Q-M`3ToZ9zMfVec&XQGfA&@5Zg;r?cDICV64
zNc~UB!Dvon<_a4PX%$A%>`c)>X|o)`)xW$yH|8e;A@-2|fy^#KbK#O
z$Zv0v<9YPHKI3-$Ari6*BGPVfMJZAXof~Yr
ze@!;)0tbkW95I=~!vL=^*S)nZeb@#oA&zZ?OxNg|{g{k;q+0z%3vIaw=Y%KLeh~!2
z5>c=%QN#m*bHnezoIOpX8#fuI@--oBO?%lUo0)Y(FL=dh9L;_Nb>v^=2$V3kfkgX6
zW=^5m*JM3=blit?d6!_$I1QIf9}8g}yXg$;6svd2EKEP;f*i$DobgfS-8%3(9(v@{
z8qaUN%&2ov`051^{%WO2*Bix*zKu%nEX#Y{myk{K;US?}eQXUn@^^?~cx-rWZvP58
z4WEdPDQ+p$=W{WLw>b2%;wsEtufX7cyz0#NI?KtY3eDp$%NAa-ymj}#HW>Pl!`i=M
z|JaG@yF27?6rOh(6r%Q_!k`RsNMAr7z~+n39AvRR$ch<*E6Unoh2x}1lWss44(^tX
z-05F$Cb(1DOX_`E&(9A$qlWN4&-vE(4lN!H=hBwizk}tT)6YrmThx`iS`ro^vArj`7l>`Op
zfX^6;&AbI-?}tn59Hr2mx10t4wG-^?qR`1N*^>Gl<-xVzfVs?(IF~UA0%sSWCtC1!
z9WydvkIL>7~%I*H0(-E^MO
zd{%&S=TZ5;owAkZ*DJU*J$gVSvtIHdff~^j9f5SgE(82*a30QQpAPmv&wh>!>7R%A
zWiSi4^l=-i`k#Mhstn!cXSny;qc)|EGih%(bZPcXE8T4~>$<-|>(WA#+RNA!9ex)=
zj<3hLA8HKu&c*6&W-onXFnR8kmuBb9iOb2)rz2YAL0pt}`~fSMyq&uZeEvVi~g>rnALz
zuI90<;f5EXEIghA`L#fo+u3L4{Woz=cUKPMG7#522
tCM4kD{=MUg-Kv8R1RDnK9b7bdGdwAdLonL+K++MF8&GM22Z7!;=udOIuTcO1

delta 4706
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
NSx7xp%p$GL|9^Hb$_D@d

diff --git a/OnlyOffice/build/release/OnlyOffice.zip b/OnlyOffice/build/release/OnlyOffice.zip
index e246a20a02641cdf0f37a6d1a41d12a7723bd8de..f2ba002f0dde3df8c46dd053f1854b361f30e897 100644
GIT binary patch
delta 502
zcmdmSm1)OSCf)#VW)?061_lm>qXh>y*E0q&GJ_b(;z=B=V6lz7`Cy^RU1HO~Qe3R2
z++fBPCSxY%V?f1D0?ur#3=BZ#!z
zot(QuS`O$0hT`Om)ZA3PjFQ}(0B=+!bt|RKLm3$uauYN2^sd*23N>68I
zVBi561qXXLCkL#MvIP1m>~zbWFU3HK13=6HR{&z@aYIc`E=D(c^4%5E^~ZtonaTNi
zdIfpu=vE7uFxl`kF)&!OFfeeUnEGFgfg#A%(Z$zQFE<5Q8!$Y=;{CUDE3+{$s7f#}
zu%l=*m1JN@EXdT$DNTfGf;biwyqi~=f&y`J{wnFoY^y{jH?*V
zGaD;d^<-=AX<(rw#v~3_29N=hyW~~DLJ?u-0=bb*ZgIRQ!Ut3lmcQWJ{soE*3`RPW
z`yItLUzT5{$jiti!T@)~;h;eej
z3P~%FA^{U78-AcJYZe9uPJ{{|>o`y}$koxs*Hte!CBPfiD#4Y~On+G>>#Y<6xq5Ql
zN*PH328P6fOud}aM0CZsS4d0OiZL+cCT8a8B^MW?%jc|+mJ$<(%4Z=-LxN`WN>i{U
t`KzQSv#k=DJZ}{nn#XllNi)?IPWD=*1XlPO=(wP^$p_`dCNEkg1^~M3XrKT9

diff --git a/Preview/build/release/Preview.zip b/Preview/build/release/Preview.zip
index 28305b328acc1aa96bd87f9ec999529ffc1383de..ec870e6b8f5bbae09b6ca3a7b168aa768c936105 100644
GIT binary patch
delta 1688
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
ZV-6t_>`+JlUYm!ry(OpK5=R68{sUU2S!MtL

diff --git a/RemoteCamera/build/release/RemoteCamera.zip b/RemoteCamera/build/release/RemoteCamera.zip
index 41cb39c0dbdcc6e73f32019cc48a29b7e95b90a5..e24bb1b208a063da9d40201a6333b08315233e78 100644
GIT binary patch
delta 308
zcmX>hc|wvmz?+$ci-CcGgW++(!O7P+XEFonjl9LIAbRsLHUma5qnXtK%$Qun^_3e*
z$L62xml$~&nM4>6h6M6RGchns&f^i22bvM4F2+RF+Ei;t2jRoP3L4u9%+>hpv@_%$@wX%ML;zH-mGjOBiMk@
L7ieB8H;4xSZa+x`

delta 321
zcmX>hc|wvmz?+$ci-CcGgW(91;>MN5tjs`qa}c`&BbXu2W&mMK<-EkmjihuU?@W+_
z$x}JL@-i}sFu={2yoy^o7-%3vZenJhURH5{H;Q!F;>iIkr5G6)GMO0|xIyaRpp2D)
zp*T4sH8)i+qa-&6P2=SI+|n{T*%%mtTpe9}UG;KP&=qv@NL#&OXJAN4P0mkAEy7~A
zmaHXv8PL9aK+FNR7sNQpIe8+t7}!VtJkn~ZK<^YJCTAz6rvi=1&kOKo1=`HOzy^fA
KK*y(oT@C>jeiV=d(X!zEN;+yS^x+tSE@JnVBt<5iImlhjAGb
zH%u{5YI+zO<6f|ozZTC$j
zK?cGBr`YuO`iznw2TV^eWR#XE6=z@wa&>g^b=AvFK{IE11JJH|H7N#$+{Da0z2ssH
zi^2-KKjbknFl4haFz~@G0WqEdb)}>x=cl9=;c(>7Ej1mN|1vOan99V!i=wwd7Rh%W
z58IV>z%?_|^$pe7bQ1_pK%y>-%z5Z7Xa%JezeUAl3;>jAepLVf

delta 466
zcmbRDm}TB$7Ty4FW)?061_lm>iM!OdFVSRt&B~1=vROyy+6PVE?zKn^Nkx7IBZo%|KLq=(7pmhwH$@zJD
z1$pTK-lz)r4H%`FzOhc%F<_Jg88Us2KBKgJ5<3G!L1J=tVtT4xR&jnFx~`8PUEUni
z`GCfQb=3m}q&?Xf8FCXd^YoI7i_vxH09Dp=vO^VQq05IYNR_<&U4((*uLA=EH^{+o
zpd`x3P+pdo9G_U63v>*c!C_&A-5>Ip7#OnI7#R5Anm`OEEk=fv)a3k>)FOypKMc)k
xVGC5cfSRwcFfeeUXuhMv$Pnb}=;G_Dmzxsc%?dOfq=b{uRf4q004|*T%C;`Kmo*!4HUZQp^G&0=I=
z-~rMI@S2T*p&&6iJ25>~FRM5|FTk6TNrVCJurSBW;}f0(by=`8FmNNZ0a-j83=GA|
x8L7FcdKo3TIp`X%=!O@_0(DF-krtAY0UDT_n3)H(0-+A#69E~0u#25!9002GOu_&F

delta 304
zcmZp&Y_jAH@MdP=Vqjq4VDPLD-~5A3j*%J2*vPw^6+~~=vg~**|)dI_HmgL}O
zVr2lSpPVf!4_4MIn$B7e6bQTiM!4-e(70KQ3=BL#8Wj{ICTAz6r|M-D=jR1@Gct)V
zz^x9OQeGW81!(LBL3EvpK(lf(lZp#-GD|>u(RE(Y4KI-8W|;g~T3G5n8v{dbVrCwu
zvdM=this.filter.max_log){let t=this.logs.shift();$(t.el).remove()}t.el=$("

").addClass(t.severity_label),t.el.text(t.message),$(this.log_container).append(t.el),this.log_container.scrollTop=this.log_container.scrollHeight,this.logs.push(t)}}openSession(){this.sub=new Antunnel.Subscriber(this.setting.topic),this.sub.onopen=()=>{console.log("Subscribed")},this.sub.onerror=t=>{this.error(__("Unable to connect to: syslog"),t),this.sub=void 0},this.sub.onmessage=t=>{if(t.data){let e=JSON.parse(new TextDecoder("utf-8").decode(t.data));e.priority&&(e.priority=parseInt(e.priority)),e.severity&&(e.severity=parseInt(e.severity)),e.facility&&(e.facility=parseInt(e.facility)),this.log(e)}},this.sub.onclose=()=>{this.sub=void 0,this.notify(__("Connection closed")),this.quit(!0)},this.tunnel.subscribe(this.sub)}cleanup(){this.sub&&this.sub.close()}checklib(){Antunnel.tunnel?(this.tunnel=Antunnel.tunnel,this.openSession()):this._gui.pushService("Antunnel/AntunnelService").then(t=>{let e=this.systemsetting.system.tunnel_uri;e||(this.error(__("Unable to connect to the tunnel")),this.quit(!0)),Antunnel.init(e).then(t=>{this.notify(__("Tunnel now connected to the server at: {0}",e)),this.tunnel=Antunnel.tunnel,this.openSession()}).catch(t=>{Antunnel.tunnel&&(Antunnel.tunnel.close(),this.error(__("Unable to connect to the tunnel: {0}",t.toString()),t),this.quit(!0))})}).catch(t=>{this.error(__("Unable to run Antunnel service: {0}",t.toString()),t),this.quit(!0)})}main(){if(!Antunnel)return this.error(__("Antunnel library is not available")),void this.quit(!0);this.log_container=this.find("log-container"),this.logs=[],$(this.log_container).css("overflow-y","auto"),this.find("menu-level").items=[{text:__("Default level"),nodes:[{text:__("Debug"),switch:!0,checked:!0,severity:"debug"},{text:__("Notice"),switch:!0,checked:!0,severity:"notice"},{text:__("Info"),switch:!0,checked:!0,severity:"info"},{text:__("Warning"),switch:!0,checked:!0,severity:"warning"},{text:__("Error"),switch:!0,checked:!0,severity:"err"},{text:__("Critical"),switch:!0,checked:!0,severity:"crit"},{text:__("Alert"),switch:!0,checked:!0,severity:"alert"},{text:__("Emergency"),switch:!0,checked:!0,severity:"emerg"}],onchildselect:t=>{let e=t.data.item.data;this.filter[e.severity]=e.checked}}],this.filter={max_log:500,err:!0,emerg:!0,debug:!0,info:!0,notice:!0,warning:!0,crit:!0,alert:!0,pattern:void 0,record:!0};let t=this.find("txt-n-log");t.value=this.filter.max_log.toString(),$(t).on("keyup",e=>{if("Enter"===e.key){let e=parseInt(t.value);if(!isNaN(e))for(this.filter.max_log=e;this.logs.length>e;)this.logs.shift().el.remove();t.value=this.filter.max_log.toString()}}),this.find("btn-clear").onbtclick=()=>{this.logs=[],$(this.log_container).empty()};let e=this.find("txt-reg");$(e).on("keyup",t=>{if("Enter"===t.key){if(""===e.value.trim())return this.filter.pattern=void 0;try{this.filter.pattern=new RegExp(e.value,"g")}catch(t){this.error(__("Invalid regular expression: {0}",t.toString()),t),this.filter.pattern=void 0,e.value=""}}}),this.find("sw-record").onswchange=t=>{this.filter.record=t.data},this.setting.topic?this.checklib():this.openDialog("PromptDialog",{title:__("Enter topic name"),label:__("Please enter Antunnel topic name")}).then(t=>{this.setting.topic=t,this.checklib()})}}t.ServerLogClient=e,e.dependencies=["pkg://Antunnel/main.js"],e.singleton=!0}(e=t.application||(t.application={}))}(OS||(OS={})); \ No newline at end of file +var OS;!function(t){let e;!function(t){class e extends t.BaseApplication{constructor(t){super("ServerLogClient",t)}check(t){return!(!this.filter.record||!this.filter[t.severity_label]||this.filter.pattern&&!t.message.match(this.filter.pattern))}log(t){if(this.check(t)){if(this.logs.length>=this.filter.max_log){let t=this.logs.shift();$(t.el).remove()}t.el=$("

").addClass(t.severity_label),t.el.text(t.message),$(this.log_container).append(t.el),this.log_container.scrollTop=this.log_container.scrollHeight,this.logs.push(t)}}openSession(){this.sub=new Antunnel.Subscriber(this.setting.topic),this.sub.onopen=()=>{console.log("Subscribed")},this.sub.onerror=t=>{this.error(__("Unable to connect to: syslog"),t),this.sub=void 0},this.sub.onmessage=t=>{if(t.data){let e=JSON.parse(new TextDecoder("utf-8").decode(t.data));e.priority&&(e.priority=parseInt(e.priority)),e.severity&&(e.severity=parseInt(e.severity)),e.facility&&(e.facility=parseInt(e.facility)),this.log(e)}},this.sub.onclose=()=>{this.sub=void 0,this.notify(__("Connection closed")),this.quit(!0)},this.tunnel.subscribe(this.sub)}cleanup(){this.sub&&this.sub.close()}checklib(){Antunnel.tunnel?(this.tunnel=Antunnel.tunnel,this.openSession()):this._gui.pushService("Antunnel/AntunnelService").then(t=>{let e=this.systemsetting.system.tunnel_uri;e||(this.error(__("Unable to connect to the tunnel")),this.quit(!0)),Antunnel.init(e).then(t=>{this.notify(__("Tunnel now connected to the server at: {0}",e)),this.tunnel=Antunnel.tunnel,this.openSession()}).catch(t=>{Antunnel.tunnel&&(Antunnel.tunnel.close(),this.error(__("Unable to connect to the tunnel: {0}",t.toString()),t),this.quit(!0))})}).catch(t=>{this.error(__("Unable to run Antunnel service: {0}",t.toString()),t),this.quit(!0)})}main(){if(!Antunnel)return this.error(__("Antunnel library is not available")),void this.quit(!0);this.log_container=this.find("log-container"),this.logs=[],$(this.log_container).css("overflow-y","auto");let t=this.find("menu-level");t.onmenuselect=t=>{let e=t.data.item.data;this.filter[e.severity]=e.checked,console.log(this.filter)},t.items=[{text:__("Debug"),switch:!0,checked:!0,severity:"debug"},{text:__("Notice"),switch:!0,checked:!0,severity:"notice"},{text:__("Info"),switch:!0,checked:!0,severity:"info"},{text:__("Warning"),switch:!0,checked:!0,severity:"warning"},{text:__("Error"),switch:!0,checked:!0,severity:"err"},{text:__("Critical"),switch:!0,checked:!0,severity:"crit"},{text:__("Alert"),switch:!0,checked:!0,severity:"alert"},{text:__("Emergency"),switch:!0,checked:!0,severity:"emerg"}],this.filter={max_log:500,err:!0,emerg:!0,debug:!0,info:!0,notice:!0,warning:!0,crit:!0,alert:!0,pattern:void 0,record:!0};let e=this.find("txt-n-log");e.value=this.filter.max_log.toString(),$(e).on("keyup",t=>{if("Enter"===t.key){let t=parseInt(e.value);if(!isNaN(t))for(this.filter.max_log=t;this.logs.length>t;)this.logs.shift().el.remove();e.value=this.filter.max_log.toString()}}),this.find("btn-clear").onbtclick=()=>{this.logs=[],$(this.log_container).empty()};let i=this.find("txt-reg");$(i).on("keyup",t=>{if("Enter"===t.key){if(""===i.value.trim())return this.filter.pattern=void 0;try{this.filter.pattern=new RegExp(i.value,"g")}catch(t){this.error(__("Invalid regular expression: {0}",t.toString()),t),this.filter.pattern=void 0,i.value=""}}}),this.find("sw-record").onswchange=t=>{this.filter.record=t.data},this.setting.topic?this.checklib():this.openDialog("PromptDialog",{title:__("Enter topic name"),label:__("Please enter Antunnel topic name")}).then(t=>{this.setting.topic=t,this.checklib()})}}t.ServerLogClient=e,e.dependencies=["pkg://Antunnel/main.js"],e.singleton=!0}(e=t.application||(t.application={}))}(OS||(OS={})); \ No newline at end of file diff --git a/ServerLogClient/build/debug/scheme.html b/ServerLogClient/build/debug/scheme.html index 1ebbf4f..6b6cbb1 100644 --- a/ServerLogClient/build/debug/scheme.html +++ b/ServerLogClient/build/debug/scheme.html @@ -1,17 +1,15 @@ - - - - - - - - - - - -

- -
- + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/ServerLogClient/build/release/ServerLogClient.zip b/ServerLogClient/build/release/ServerLogClient.zip index 8580803b4876b03ec0b985f37601d882066e0044..79b093cbfe9e787b46d0d1bd3cb8176032560db7 100644 GIT binary patch delta 2428 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 { + let data = e.data.item.data; + this.filter[data.severity] = data.checked; + console.log(this.filter); + } menu.items = [ { - text: __("Default level"), - nodes: [ - { - text: __("Debug"), - switch: true, - checked: true, - severity: "debug" - }, - { - text: __("Notice"), - switch: true, - checked: true, - severity: "notice" - }, - { - text: __("Info"), - switch: true, - checked: true, - severity: "info" - }, - { - text: __("Warning"), - switch: true, - checked: true, - severity: "warning" - }, - { - text: __("Error"), - switch: true, - checked: true, - severity: "err" - }, - { - text: __("Critical"), - switch: true, - checked: true, - severity: "crit" - }, - { - text: __("Alert"), - switch: true, - checked: true, - severity: "alert" - }, - { - text: __("Emergency"), - switch: true, - checked: true, - severity: "emerg" - } - ], - onchildselect: (e) => { - let data = e.data.item.data; - this.filter[data.severity] = data.checked; - } + text: __("Debug"), + switch: true, + checked: true, + severity: "debug" + }, + { + text: __("Notice"), + switch: true, + checked: true, + severity: "notice" + }, + { + text: __("Info"), + switch: true, + checked: true, + severity: "info" + }, + { + text: __("Warning"), + switch: true, + checked: true, + severity: "warning" + }, + { + text: __("Error"), + switch: true, + checked: true, + severity: "err" + }, + { + text: __("Critical"), + switch: true, + checked: true, + severity: "crit" + }, + { + text: __("Alert"), + switch: true, + checked: true, + severity: "alert" + }, + { + text: __("Emergency"), + switch: true, + checked: true, + severity: "emerg" } ]; diff --git a/ServerLogClient/scheme.html b/ServerLogClient/scheme.html index 1ebbf4f..6b6cbb1 100644 --- a/ServerLogClient/scheme.html +++ b/ServerLogClient/scheme.html @@ -1,17 +1,15 @@ - - - - - - - - - - - -
- -
-
+ + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/ShaderPlayground/build.json b/ShaderPlayground/build.json index caba844..293ecf9 100644 --- a/ShaderPlayground/build.json +++ b/ShaderPlayground/build.json @@ -17,8 +17,10 @@ "require": ["ts"], "jobs":[ { - "name": "ts-import", - "data": ["sdk://core/ts/core.d.ts", "sdk://core/ts/jquery.d.ts","sdk://core/ts/antos.d.ts"] + "name": "ts-antos-sdk", + "data": { + "version": "2.0.x" + } }, { "name": "ts-compile", diff --git a/ShaderPlayground/build/release/ShaderPlayground.zip b/ShaderPlayground/build/release/ShaderPlayground.zip index 3918dfdfc49dd4fb8e744a0b4748a3440f5671af..649565c2b4a392f59185f39cab8427814aa8c4ba 100644 GIT binary patch delta 262 zcmeyS^G%00z?+$ci-CcGgW+ev!Ogxx9~qfJ3?*g_elX)FqZ&lSQG|z)8%ga(-iM65 zj7%a7aNU#th)Rb5jbbQBOwLYBPu0sR&d&?*Mo|;SocQu58$Sa>tPTSMJ4i7cd|_l@ z$W6@518PIlGS0t6ofG+zWm9? z&%h9?!@$4}G6@bunI~@)6$Lq9a+IjFyn_$}LqTG4c4B&}URH5_9-2Xu#H9I6L>L%~ TlQU9tQ}r@Ra&smph=~CJRKYCN diff --git a/ShowCase/build/release/ShowCase.zip b/ShowCase/build/release/ShowCase.zip index 985dc6c6a63085279547b91001386a3c05c1dc35..e6a8f55050510ad834b2d93808a5ad432d3de374 100644 GIT binary patch delta 181 zcmaDZ^<0WKz?+$ci-CcGgW+ny!OaVpIT)FNjETHzV9Kl9mJUY zkw=<|fnhQquN0W;%_A+%&B(xzo0yrWmt0&N;LXS+!T>jRawAZ=3FG8>JmNM$-C+e> lYc-Ao_1geda0Bf|fOSAaijy-^b5r#)N^*11&C%wy0RT`-GTi_G delta 224 zcmaDZ^<0WKz?+$ci-CcGgCU<)ak2!X8Z(G?WGn~Kn|Cw5Wdboa@^UbO1y-}nWw!(h zgiU61H$~>Jkpk$K$StRjxN5gdbufR3c?Dw z)@mGQVqmZV>fuH)axueXeqKqi>%4iSXVOa%uw^3G=jQj^y)UIS9iZ}_&q;bYvr z0LY#$wSiGu8mOKjH!(9$FS)olz?+dtgaK~E^p)!wrDf817#MS0tRXhNy SU}EQ+{ue|8jSSepXafMB)ho0B delta 166 zcmeBq$ky|ajW@uXnT3mifq{eJ^;YH0#XR#FnYJoV7U8=Fq&D)V@BpdiH+%xQEZwWHKkY)z4Y6Tdh7(uLsykKhkQC&tZMs6g< z%>sS;^gk9hAs_3XR1H%<&Mxd$aAU82HPcON+IKUf4*K}`vMrpa% zKyAgz8L7FcdKo3TIp}Kc=rKymd&n{{6eK2RC#I+BWfkY=p)1-2G$_Jbj)5V_)zQV* zRWCOMO-0x@;kWlZ_!$|N6frZfqqr|Yo`C`Ez$~EqSlK{wtUxHr$iQ$`4@fWo0F8!2 AF8}}l delta 288 zcmexypXJAW7Ty4FW)?061_lm>E>^|Gp|Xt3K)N|setWJwV-i0%lH}$e(ota9jl3_U zL8>-K$Z;|9GBSxUzzvx0tXRUATc>RF+Ei;t2jR|z#CQ39-tx%W<~~v+{Da0 zpb9kkuo-$UubTj+!`T=ZxIu=&L4g3{bOU`x36S;E@8~f~N1hdAgcy@tjA72E_*Xse tfO=N|&EkZc0b=aXWn>6)b#(D{)yqu@@MZ;C#K6D`grY#DXZ3&t0{~znHgEs{ diff --git a/TinyEditor/build/release/TinyEditor.zip b/TinyEditor/build/release/TinyEditor.zip index df908851136571e5a9f7fd0be6277e8f3dd3fd44..d47242afbe5057497c12abb7e7a208b80681b56c 100644 GIT binary patch delta 237 zcmaDM_Cky|z?+$ci-CcGgCVr=;O6U0ADNkfjETIDLDXbDrez>{^Jz8flS>)5 zfz^F3=VfFPVSt-3`2&|U69dC!UTzt%0Rlko7v{;jTv9ebbHX^@oON#i+O`Xbxq%n~ zZm}>h6enk-=BDapl;q|Fc%vGt!!0e<%*w!!o0yrWmsN}|-2k-a7{}zfT;gC`y||>g P>p7vSlZz(@a*G21#o#>X delta 281 zcmaDM_Cky|z?+$ci-CcGgJCzT;$%ja$IKwQhqIg;S^P4`Hn8|}mSrG%BkxCM5WRT< zs|7PJBa;XN!U!KOX?dV|3&(2YP7kfEuI0@3vfv@ono4-%OwN$(|#^#u6=A!$7D?o7bYn%W3n#e3Xn{*AWOR- z3nLIS0WmWWgZQl51zFgn%s>jJ>shgxgBkO!*rXX1rth|5ld1cG`iN5tQ1MD2=0w)S5XsEI5ajCU;_IrHn}V(_ Y@9F2y-%QyUbQr}L*cqnFTC?c_0CKQ55dZ)H delta 241 zcmX^0P2$uy3Elv2W)?061_lm>yR3>Ed1V=yf%N1w<`p1%vo50~SYWd!lN6ZIEXdL> z$ifK3OhC*G#2`NFc0m?4DKn6k>3UXd=Jh~EnBVFnPAx!_R{}975F>yBBLhQ_tD}pr zt6pwOfHxzP2m{;+VG`3BGd=^=&Szp^;6~^HvQ7iF6(?t;=BDapl;q~1Ydox25c3_V b%$tc}`dTYCe#Yn1_gb-ugB`_Z&1M4ta8fdA diff --git a/libantosdk/README.md b/libantosdk/README.md index 5fdf758..0d13a77 100644 --- a/libantosdk/README.md +++ b/libantosdk/README.md @@ -2,6 +2,7 @@ AntOSDK: development API for AntOS based applications/projects ## Change logs +- 0.1.2: add batch building support - 0.1.1: linux worker is renamed to backend, linux-exec job re to cmd-exec, add lua-exec job for backend lua script execution - 0.1.0: antOS SDK is no longer delivered in this package, it will be fetched directly from AntOS release site - 0.0.18: Add some public API on grid view diff --git a/libantosdk/build/debug/README.md b/libantosdk/build/debug/README.md index 5fdf758..0d13a77 100644 --- a/libantosdk/build/debug/README.md +++ b/libantosdk/build/debug/README.md @@ -2,6 +2,7 @@ AntOSDK: development API for AntOS based applications/projects ## Change logs +- 0.1.2: add batch building support - 0.1.1: linux worker is renamed to backend, linux-exec job re to cmd-exec, add lua-exec job for backend lua script execution - 0.1.0: antOS SDK is no longer delivered in this package, it will be fetched directly from AntOS release site - 0.0.18: Add some public API on grid view diff --git a/libantosdk/build/debug/main.js b/libantosdk/build/debug/main.js index 4f34b07..62aabc2 100644 --- a/libantosdk/build/debug/main.js +++ b/libantosdk/build/debug/main.js @@ -1 +1 @@ -var OS;!function(t){let e;!function(e){class i{constructor(e){this.worker=new Worker(e.asFileHandle().getlink()),this.jobs={},this.worker.onmessage=t=>{let e=t.data,i=this.jobs[e.id];i?"log"===e.type?i.logger&&(e.error?i.logger.error(e.result):!1===e.show_time&&i.logger.print?i.logger.print(e.result):i.logger.info(e.result)):(i.callback(e),delete this.jobs[e.id]):console.log("Unable to identify result of job",e.id,e)};const i={};for(const e in t.setting.system.packages){const s=t.setting.system.packages[e];i[e]={path:s.path,name:s.pkgname}}this.submit("sdk-setup",{REST:t.API.REST,pkgs:i})}newJobID(){return"job_"+Math.random().toString(36).replace(".","")}exectue_job(t,e,i,s,r){const o=this.newJobID(),n={id:o,cmd:t,data:e,root:i};this.jobs[o]={callback:s,logger:r},this.worker.postMessage(n)}submit(t,e,i,s){return new Promise((r,o)=>{this.exectue_job(t,e,i,t=>{if(t.error)return o(t.error);r(t.result)},s)})}terminate(){this.worker.terminate()}}class s{constructor(t,e){this.root=e,this.logger=t,s.worker||(s.worker=new i("pkg://libantosdk/core/worker.js"))}require(t){return this.run("sdk-import",t.map(t=>t+".worker.js"))}compile(t,e){return new Promise(async(i,s)=>{try{await this.require([t]),i(await this.run(t+"-compile",e))}catch(t){s(__e(t))}})}run(e,i){return"sdk-run-app"===e?new Promise(async(e,s)=>{try{let s=i;1==s.split("://").length&&(s=`${this.root}/${i}`);const r=await(s+"/package.json").asFileHandle().read("json");return r.text=r.name,r.path=s,r.filename=r.pkgname,r.type="app",r.mime="antos/app",r.icon&&(r.icon=`${r.path}/${r.icon}`),r.iconclass||r.icon||(r.iconclass="fa fa-adn"),this.logger.info(__("Installing...")),t.setting.system.packages[r.pkgname]=r,r.app?(this.logger.info(__("Running {0}...",r.app)),t.GUI.forceLaunch(r.app,[])):this.logger.error(__("{0} is not an application",r.pkgname)),e(void 0)}catch(t){s(t)}}):s.worker.submit(e,i,this.root,this.logger)}batch(t,e){return e.root&&(this.root=e.root),new Promise(async(i,s)=>{try{e.targets||s("No target found");for(const i of t){const t=e.targets[i];if(!t)return s(__("No target: {0}",i));if(t.depend&&await this.batch(t.depend,e),t.require&&await this.require(t.require),this.logger&&this.logger.info(__("### RUNNING STAGE: {0}###",i).__()),t.jobs)for(const e of t.jobs)await this.run(e.name,e.data)}i(void 0)}catch(t){s(t)}})}}let r;e.AntOSDKBuilder=s,function(t){class e extends t.RemoteFileHandle{constructor(t){super(t);const e="pkg://libantosdk/"+this.genealogy.join("/");this.setPath(e.asFileHandle().path)}}t.SDKFileHandle=e,t.register("^sdk$",e)}(r=e.VFS||(e.VFS={}))}(e=t.API||(t.API={}))}(OS||(OS={})),function(t){let e;!function(e){class i{constructor(t){this.target=t}info(t){this.log("info",t,!0)}warn(t){this.log("warn",t,!0)}error(t){this.log("error",t,!0)}log(t,e,i){let s=$("
").attr("class","sdk-log-"+t);if(i){let t=new Date,i=t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds();s.text(`[${i}]: ${e.__()}`)}else s.text(e.__());$(this.target).append(s),$(this.target).scrollTop($(this.target)[0].scrollHeight)}print(t){t.match(/warn/i)?this.log("warn",t,!1):t.match(/error/i)?this.log("error",t,!1):this.log("info",t,!1)}clear(){$(this.target).empty()}}class s extends e.BaseApplication{constructor(t){super("SDKBuilder",t)}main(){this.logger=new i(this.find("container")),this.sdk=new t.API.AntOSDKBuilder(this.logger,""),this.filehandle=void 0,this.options=void 0,this.targets=this.find("target-list"),this.args&&this.args.length>0&&(this.filehandle=this.args[0].path.asFileHandle()),this.find("btnbuild").onbtclick=t=>{const e=this.targets.selectedItem;e&&this.load(this.compile([e.data.text]))},this.find("btnclear").onbtclick=t=>{this.logger.clear()},this.find("btnrefresh").onbtclick=t=>{this.open()},this.find("btnopen").onbtclick=async t=>{try{const t=await this.openDialog("FileDialog",{title:__("Select build file"),mimes:this.meta().mimes});this.filehandle=t.file.path.asFileHandle(),this.open()}catch(t){this.logger.error(t.toString())}},this.open()}open(){void 0!==this.filehandle&&this.filehandle.read("json").then(t=>{if(!t.targets)return this.logger.error(__("Invalid build file: {0}",this.filehandle.path));const e=Object.keys(t.targets).map(t=>({text:t}));this.scheme.apptitle=this.filehandle.path,this.options=t,this.options.root=this.filehandle.parent().path,this.targets.data=e,this.logger.info(__("Loaded: {0}",this.filehandle.path))}).catch(t=>this.logger.error(__("Unable to load build file: {0}: {1}",this.filehandle.path,t.toString())))}compile(t){return new Promise(async(e,i)=>{try{this.logger.clear(),await this.sdk.batch(t,this.options),e("OK")}catch(t){i(__e(t))}})}}e.SDKBuilder=s}(e=t.application||(t.application={}))}(OS||(OS={}));
\ No newline at end of file
+var OS;!function(t){let e;!function(e){class i{constructor(e){this.worker=new Worker(e.asFileHandle().getlink()),this.jobs={},this.worker.onmessage=t=>{let e=t.data,i=this.jobs[e.id];i?"log"===e.type?i.logger&&(e.error?i.logger.error(e.result):!1===e.show_time&&i.logger.print?i.logger.print(e.result):i.logger.info(e.result)):(i.callback(e),delete this.jobs[e.id]):console.log("Unable to identify result of job",e.id,e)};const i={};for(const e in t.setting.system.packages){const r=t.setting.system.packages[e];i[e]={path:r.path,name:r.pkgname}}this.submit("sdk-setup",{REST:t.API.REST,pkgs:i})}newJobID(){return"job_"+Math.random().toString(36).replace(".","")}exectue_job(t,e,i,r,o){const s=this.newJobID(),a={id:s,cmd:t,data:e,root:i};this.jobs[s]={callback:r,logger:o},this.worker.postMessage(a)}submit(t,e,i,r){return new Promise((o,s)=>{this.exectue_job(t,e,i,t=>{if(t.error)return s(t.error);o(t.result)},r)})}terminate(){this.worker.terminate()}}class r{constructor(t,e){this.root=e,this.logger=t,r.worker||(r.worker=new i("pkg://libantosdk/core/worker.js"))}require(t){return this.run("sdk-import",t.map(t=>t+".worker.js"))}compile(t,e){return new Promise(async(i,r)=>{try{await this.require([t]),i(await this.run(t+"-compile",e))}catch(t){r(__e(t))}})}run(e,i){return"sdk-run-app"===e?new Promise(async(e,r)=>{try{let r=i;1==r.split("://").length&&(r=`${this.root}/${i}`);const o=await(r+"/package.json").asFileHandle().read("json");return o.text=o.name,o.path=r,o.filename=o.pkgname,o.type="app",o.mime="antos/app",o.icon&&(o.icon=`${o.path}/${o.icon}`),o.iconclass||o.icon||(o.iconclass="fa fa-adn"),this.logger.info(__("Installing...")),t.setting.system.packages[o.pkgname]=o,o.app?(this.logger.info(__("Running {0}...",o.app)),t.GUI.forceLaunch(o.app,[])):this.logger.error(__("{0} is not an application",o.pkgname)),e(void 0)}catch(t){r(t)}}):"batch"===e?new Promise(async(t,e)=>{try{if(!i||!i.target){const t=__("No target provided for job: batch");throw this.logger.error(t),new Error(t.__())}let e=i.pwd;e||(e=this.root);const o=await e.asFileHandle().read();if(o.error)throw this.logger.error(o.error),new Error(o.error);const s=o.result.filter(t=>"dir"===t.type);for(let t of s){const e=(t.path+"/build.json").asFileHandle();try{await e.onready()}catch(e){this.logger.info(__("No build.json file found in {0}, ignore this file",t.path));continue}this.logger.info(__("########### BUILDING: {0} ###########",t.path));const o=new r(this.logger,t.path),s=await e.read("json");s.root||(s.root=t.path),await o.batch([i.target],s)}return this.logger.info(__("########### Batch building done ###########")),t(void 0)}catch(t){e(t)}}):r.worker.submit(e,i,this.root,this.logger)}batch(t,e){return e.root&&(this.root=e.root),new Promise(async(i,r)=>{try{e.targets||r("No target found");for(const i of t){const t=e.targets[i];if(!t)return r(__("No target: {0}",i));if(t.depend&&await this.batch(t.depend,e),t.require&&await this.require(t.require),this.logger&&this.logger.info(__("### RUNNING STAGE: {0}###",i).__()),t.jobs)for(const e of t.jobs)await this.run(e.name,e.data)}i(void 0)}catch(t){r(t)}})}}let o;e.AntOSDKBuilder=r,function(t){class e extends t.RemoteFileHandle{constructor(t){super(t);const e="pkg://libantosdk/"+this.genealogy.join("/");this.setPath(e.asFileHandle().path)}}t.SDKFileHandle=e,t.register("^sdk$",e)}(o=e.VFS||(e.VFS={}))}(e=t.API||(t.API={}))}(OS||(OS={})),function(t){let e;!function(e){class i{constructor(t){this.target=t}info(t){this.log("info",t,!0)}warn(t){this.log("warn",t,!0)}error(t){this.log("error",t,!0)}log(t,e,i){let r=$("
").attr("class","sdk-log-"+t);if(i){let t=new Date,i=t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear()+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds();r.text(`[${i}]: ${e.__()}`)}else r.text(e.__());$(this.target).append(r),$(this.target).scrollTop($(this.target)[0].scrollHeight)}print(t){t.match(/warn/i)?this.log("warn",t,!1):t.match(/error/i)?this.log("error",t,!1):this.log("info",t,!1)}clear(){$(this.target).empty()}}class r extends e.BaseApplication{constructor(t){super("SDKBuilder",t)}main(){this.logger=new i(this.find("container")),this.sdk=new t.API.AntOSDKBuilder(this.logger,""),this.filehandle=void 0,this.options=void 0,this.targets=this.find("target-list"),this.args&&this.args.length>0&&(this.filehandle=this.args[0].path.asFileHandle()),this.find("btnbuild").onbtclick=t=>{const e=this.targets.selectedItem;e&&this.load(this.compile([e.data.text])).catch(t=>this.logger.error(__(t.stack)))},this.find("btnclear").onbtclick=t=>{this.logger.clear()},this.find("btnrefresh").onbtclick=t=>{this.open()},this.find("btnopen").onbtclick=async t=>{try{const t=await this.openDialog("FileDialog",{title:__("Select build file"),mimes:this.meta().mimes});this.filehandle=t.file.path.asFileHandle(),this.open()}catch(t){this.logger.error(t.toString())}},this.open()}open(){void 0!==this.filehandle&&this.filehandle.read("json").then(t=>{if(!t.targets)return this.logger.error(__("Invalid build file: {0}",this.filehandle.path));const e=Object.keys(t.targets).map(t=>({text:t}));this.scheme.apptitle=this.filehandle.path,this.options=t,this.options.root=this.filehandle.parent().path,this.targets.data=e,this.logger.info(__("Loaded: {0}",this.filehandle.path))}).catch(t=>this.logger.error(__("Unable to load build file: {0}: {1}",this.filehandle.path,t.toString())))}compile(t){return new Promise(async(e,i)=>{try{this.logger.clear(),await this.sdk.batch(t,this.options),e("OK")}catch(t){i(__e(t))}})}}e.SDKBuilder=r}(e=t.application||(t.application={}))}(OS||(OS={}));
\ No newline at end of file
diff --git a/libantosdk/build/debug/package.json b/libantosdk/build/debug/package.json
index 828f9c1..2f8487e 100644
--- a/libantosdk/build/debug/package.json
+++ b/libantosdk/build/debug/package.json
@@ -7,7 +7,7 @@
         "author": "Xuan Sang LE",
         "email": "mrsang@iohub.dev"
     },
-    "version": "0.1.1-b",
+    "version": "0.1.2-b",
     "category": "Development",
     "iconclass": "fa fa-cog",
     "mimes": [
diff --git a/libantosdk/build/release/libantosdk.zip b/libantosdk/build/release/libantosdk.zip
index 79ef70c174540b1347963c3fbdb0491b92306ce2..92d3c40a142c8908b57d4f77217e6b04c35c4690 100644
GIT binary patch
delta 4239
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
E1MV)HlxK(wlelmVMtlVQlcbf
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 this.logger.error(__(e.stack)));
                 }
 
                 (this.find("btnclear") as GUI.tag.ButtonTag).onbtclick = (e) => {
diff --git a/libantosdk/ts/main.ts b/libantosdk/ts/main.ts
index f69ba03..36ef5a8 100644
--- a/libantosdk/ts/main.ts
+++ b/libantosdk/ts/main.ts
@@ -195,6 +195,58 @@ namespace OS {
                         }
                     });
                 }
+                else if(job === "batch")
+                {
+                    return new Promise(async (resolve, reject) =>
+                    {
+                        try{
+                            if(!data || !data.target)
+                            {
+                                const err = __("No target provided for job: batch");
+                                this.logger.error(err);
+                                throw new Error(err.__());
+                            }
+                            let pwd = data.pwd;
+                            if(!pwd)
+                            {
+                                pwd = this.root;
+                            }
+                            const ret = await pwd.asFileHandle().read();
+                            if(ret.error)
+                            {
+                                this.logger.error(ret.error);
+                                throw new Error(ret.error);
+                            }
+                            const dirs = ret.result.filter(e => e.type === "dir");
+                            for(let entry of dirs)
+                            {
+                                const build_file = `${entry.path}/build.json`.asFileHandle();
+                                try {
+                                    await build_file.onready();
+                                }
+                                catch(e)
+                                {
+                                    this.logger.info(__("No build.json file found in {0}, ignore this file", entry.path));
+                                    continue;
+                                }
+                                this.logger.info(__("########### BUILDING: {0} ###########", entry.path));
+                                const sdk = new AntOSDKBuilder(this.logger,entry.path);
+                                const options = await build_file.read("json");
+                                if(!options.root)
+                                {
+                                    options.root = entry.path;
+                                }
+                                await sdk.batch([data.target], options);
+                            }
+                            this.logger.info(__("########### Batch building done ###########"));
+                            return resolve(undefined);
+                        }
+                        catch(error)
+                        {
+                            reject(error);
+                        }
+                    });
+                }
                 return AntOSDKBuilder.worker.submit(job,data, this.root, this.logger);
             }
             
diff --git a/libplotly/build/release/libplotly.zip b/libplotly/build/release/libplotly.zip
index 8a6f56b823fb0eb5a969d3eb9ce1d065189643cf..23dc90f4e08f7e784910ccf041ccaeb4daaf10a2 100644
GIT binary patch
delta 138
zcmey{;Pkh_i7&vLnT3mifq{d;weVorMm{q}77$~y2jdqoquGI}-GPY_h(RrFA(zqG5>Z4CV}2suu0P|)(aRzSR4%kW)PNBgMc*v
DIie;r

delta 138
zcmey{;Pkh_i7&vLnT3mifq{d;Ej%N5BcB-~3y3kq~YfS41Axqz4(hjjJ7X=5yCi0zR0nr<8TQGtd&Eib$;!KR&#hI8^`+`NL
UAMzq2m~P2@Yt0-`tGwqOJ^n#Gyg#hDnli!(8;_63Vf
VKjzP524+nQU^0dXnFlag0|3qA9|-^e

diff --git a/vTerm/build/release/vTerm.zip b/vTerm/build/release/vTerm.zip
index a03bfe5bc4a38709ab7d6cd5c12ced647e6b93eb..af5b392dcd0ff5ac98edfdb3da958850daa2a75a 100644
GIT binary patch
delta 191
zcmew;{85-Uz?+$ci-CcGgW+?*!O3YHGq{oXn{TnKV`K(OZ0=^e0cLFEJ;cJx$Rxsm
z(6f+rNg;J(K|3P@0~0d?15h6lILk6Qky8p}
z=j1w0X_-1U28JM4M;BjLz1$QuQzmnBN~=b4FfbG+XQbw)>SdJV<^*`N0(CGjumItG
LApHj@&ALgNC(8*)
zNdxsVl%*9{=w%fLc%#X$<(G;LmF>ACzM9srDiB{={9

diff --git a/xTerm/build/release/xTerm.zip b/xTerm/build/release/xTerm.zip
index 5e1a825ad2952e19a9e914ea67a7d888cc348348..2cf28f617ab3d49fe763aae8820cccffd10ee95e 100644
GIT binary patch
delta 117
zcmdne&$6YTg*U*PnT3mifq{b|xbWb{Tbb<4KzbtYDG;^UjpIKfnBl?I_6Nk6&dts!
yEe%x8keis9rErZMjHS+Jt9E>

delta 142
zcmdne&$6YTg*U*PnT3mifq{eJq>IYrO7>ICKzbu@COe4U?8fn*5zO%5YWrgg6bU;K
z_mpulP`w%>0|O6`Mg;|l$=QkNsd`z(`FR1}j7%a7aI>dhWMh2YL$mx#k
Mj3!`41v{e+0B@Be$N&HU