Files
JiboSDK/lib/behavior-editor/behavior-editor.js

1 line
6.1 KiB
JavaScript
Raw Permalink Normal View History

2026-03-22 03:21:45 +02:00
"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<a.length;o++)for(var n=t[a[o]],s=0;s<n.args.length;s++)Array.isArray(n.args[s])&&(n.args[s]=n.args[s].join("\n"));return t}},backup:{value:function(e){var t=d.cloneDeep(this.model.data),r=h.createHash("md5");r.update(e);for(var a=r.digest("hex"),o=n.basename(a),s=g+"/"+o+".backup",c=Object.keys(t),l=0;l<c.length;l++)for(var u=t[c[l]],v=0;v<u.args.length;v++)"string"==typeof u.args[v]&&(0===u.args[v].indexOf("function")||u.args[v].indexOf("=>")>=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<r.length;a++)for(var o=t[r[a]],n=0;n<o.args.length;n++)"string"==typeof o.args[n]&&(0===o.args[n].indexOf("function")||o.args[n].indexOf("=>")>=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