"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=function(){function e(e,t){for(var r in t){var a=t[r];a.configurable=!0,a.value&&(a.writable=!0)}Object.defineProperties(e,t)}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),r=function m(e,t,r){var a=Object.getOwnPropertyDescriptor(e,t);if(void 0===a){var o=Object.getPrototypeOf(e);return null===o?void 0:m(o,t,r)}if("value"in a&&a.writable)return a.value;var i=a.get;if(void 0!==i)return i.call(r)},a=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)},o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},i=e(require("fs")),n=e(require("path")),s=e(require("../atom-react/core/react-editor")),c=e(require("./behavior-editor-view")),l=e(require("./tree-model")),u=e(require("../common/tree-view-helper")),d=e(require("lodash")),h=require("crypto"),v="win32"===process.platform?process.env.HOMEPATH:process.env.HOME,f=n.resolve(v,".jibo");i.existsSync(f)||i.mkdirSync(f);var g=n.resolve(f,"temp");i.existsSync(g)||i.mkdirSync(g);var BehaviorEditor=function(e){function BehaviorEditor(e){o(this,BehaviorEditor),r(Object.getPrototypeOf(BehaviorEditor.prototype),"constructor",this).call(this,e,!1),this.projectRoot=s.getProjectRoot(e),this.ignoreNextSave=!1,this.data=this.readJson(e),this.schema=BehaviorEditor.getNewSchema(e);var t=this.getUiState();this.layout=t?t:[],this.model=new l(this.data,this.schema,e),this.lastSaved=JSON.stringify(this.model.data)}return a(BehaviorEditor,e),t(BehaviorEditor,{readJson:{value:function(e){var t=void 0;try{t=JSON.parse(i.readFileSync(e,"utf8"))}catch(r){return void console.error(r)}for(var a=Object.keys(t),o=0;o")>=0)&&(u.args[v]=u.args[v].split("\n"));i.writeFileSync(s,JSON.stringify(t,null," "),"utf8")}},saveFile:{value:function(e){if(!BehaviorEditor.isValidDirectory(e))return alert('You must save behavior trees under the "behaviors" folder.'),!1;this.ignoreNextSave=!0,this.lastSaved=JSON.stringify(this.model.data);for(var t=d.cloneDeep(this.model.data),r=Object.keys(t),a=0;a")>=0)&&(o.args[n]=o.args[n].split("\n"));return i.writeFileSync(e,JSON.stringify(t,null," "),"utf8"),!0}},checkModified:{value:function(){var e=JSON.stringify(this.model.data);return e!==this.lastSaved?(this.setModifiedStatus(!0),!0):(this.setModifiedStatus(!1),!1)}},serialize:{value:function(){return this.saveUiState(this.layout),r(Object.getPrototypeOf(BehaviorEditor.prototype),"serialize",this).call(this)}},dispose:{value:function(){this.saveUiState(this.layout),r(Object.getPrototypeOf(BehaviorEditor.prototype),"dispose",this).call(this)}},getReactClass:{value:function(){return c}},getNewSchema:{value:function(e){return BehaviorEditor.getNewSchema(e)}},reload:{value:function(){var e=void 0===arguments[0]?this.uri:arguments[0];return this.ignoreNextSave?void(this.ignoreNextSave=!1):(this.data=this.readJson(e),this.model.reload(this.data,this.schema),void this.model.emit("ondatachanged"))}},getSaveDialogOptions:{value:function(){return{title:"Behavior Save As",filters:BehaviorEditor.getDialogFilter()}}}},{createNewFile:{value:function(e){var t=u.getFolderPathWithDirectory(u.getFolderPathOfSelection(),"behaviors");if(!t)return void alert("You must have a valid project loaded in order to create a new behavior tree file.");var r=atom.getCurrentWindow(),a=require("remote"),o=a.require("dialog");o.showSaveDialog(r,{title:"New Behavior Tree",defaultPath:t,filters:BehaviorEditor.getDialogFilter()},function(t){if(t){if(BehaviorEditor.isValidDirectory(t)){var r=BehaviorEditor.getNewSchema(t);l.createNewFile(t,r.core.schema.Sequence),atom.workspace.open(t)}else alert('You must save behavior trees under the "behaviors" folder.');if(e){var a=s.getProjectRoot(t),o=n.join(a,"behaviors");e(n.relative(o,t.toLowerCase()))}}})}},isValidDirectory:{value:function(e){var t=n.normalize("/behaviors/");return e.includes(t)?!0:!1}},getDialogFilter:{value:function(){return[{name:"Behavior Tree",extensions:["bt"]}]}},getNewSchema:{value:function(e){var t=function(e){var t=void 0;try{t=require(e),d.forEach(t,function(r,a){if(t[a].description&&t[a].description.url){var o=n.resolve(n.dirname(e),t[a].description.url);try{t[a].description=i.readFileSync(o,"utf8")}catch(s){t[a].description=""}}})}catch(r){}return t},r=function(e){var t={};return e.forEach(function(e){t=Object.assign(t,e)}),Object.keys(t).forEach(function(e){t[e]["class"]=e}),t},a=function(e,a,o){var s=n.resolve(o,"schemas"),c=[];try{i.lstatSync(s);for(var l=i.readdirSync(s),d=0;d