1 line
8.8 KiB
JavaScript
1 line
8.8 KiB
JavaScript
"use strict";var e,t=function(e){return e&&e.__esModule?e["default"]:e},o=function f(e,t,o){var s=Object.getOwnPropertyDescriptor(e,t);if(void 0===s){var i=Object.getPrototypeOf(e);return null===i?void 0:f(i,t,o)}if("value"in s&&s.writable)return s.value;var a=s.get;if(void 0!==a)return a.call(o)},s=t(require("react")),i=t(require("./tree-view")),a=t(require("./decorator-model")),r=t(require("marked")),n=t(require("../common/layout/layout")),d=t(require("../common/layout/h-layout")),l=t(require("../common/layout/v-layout")),h=t(require("./behavior-arguments-view")),c=t(require("../atom-react/mixins/pane-resize-event-mixin")),v=t(require("../atom-react/mixins/modal-mixin")),u=require("atom").CompositeDisposable,m=t(require("../common/undo-redo")),p=t(require("./modals/behavior-selector-modal"));module.exports=s.createClass(e={displayName:"BehaviorEditorView",mixins:[c,v],getInitialState:function(){var e=this.props.editor.schema,t=this.props.editor.model;return t.on("ondatachanged",this.onModelChanged),this.undoredo=new m(t),{schema:e,model:t,decoratorModel:new a(t),behavior:t.getRoot(),hoveredBehavior:void 0,hoveredDecorator:void 0,lastHovered:void 0,decoratorTreeKey:0}},onBehaviorRowHover:function(e){this.state.hoveredBehavior=e,this.state.lastHovered=this.state.hoveredBehavior},onBehaviorRowHoverLeave:function(){this.state.lastHovered=this.state.hoveredBehavior,this.state.hoveredBehavior=void 0},onDecoratorRowHover:function(e){this.state.hoveredDecorator=e,this.state.lastHovered=this.state.hoveredDecorator},onDecoratorRowHoverLeave:function(){this.state.lastHovered=this.state.hoveredDecorator,this.state.hoveredDecorator=void 0},addDecorator:function(){var e=this;this.state.lastHovered&&!function(){var t=e.state.lastHovered.props.element;e.chooseDecorator(function(o,s){e.state.model.addDecoratorAbove(t,0,o,s)})}()},addSiblingAbove:function(){var e=this;this.state.lastHovered&&(this.state.lastHovered.props.isBehavior?!function(){var t=e.state.lastHovered.props.element,o=e.state.lastHovered.props.row;e.chooseBehavior(function(s,i){e.state.model.addSiblingAbove(t,o,s,i)})}():!function(){var t=e.state.decoratorModel.owner,o=e.state.lastHovered.props.row;e.chooseDecorator(function(s,i){e.state.model.addDecoratorAbove(t,o,s,i)})}())},addSiblingBelow:function(){var e=this;this.state.lastHovered&&(this.state.lastHovered.props.isBehavior?!function(){var t=e.state.lastHovered.props.element,o=e.state.lastHovered.props.row;e.chooseBehavior(function(s,i){e.state.model.addSiblingBelow(t,o,s,i)})}():!function(){var t=e.state.decoratorModel.owner,o=e.state.lastHovered.props.row;e.chooseDecorator(function(s,i){e.state.model.addDecoratorBelow(t,o,s,i)})}())},addChild:function(){var e=this;this.state.lastHovered&&!function(){var t=e.state.lastHovered.props.element;e.chooseBehavior(function(o,s){e.state.model.addChild(t,o,s)})}()},swap:function(){var e=this;this.state.lastHovered&&!function(){var t=e.state.lastHovered.props.element;e.chooseBehavior(function(o,s){e.state.model.swap(t,o,s)})}()},moveUp:function(){if(this.state.lastHovered){var e=this.state.lastHovered.props.row,t=this.state.lastHovered.props.element;this.state.lastHovered.props.isBehavior?this.state.model.moveUp(t,e):this.state.decoratorModel.moveUp(t,e)}},moveDown:function(){if(this.state.lastHovered){var e=this.state.lastHovered.props.row,t=this.state.lastHovered.props.element;this.state.lastHovered.props.isBehavior?this.state.model.moveDown(t,e):this.state.decoratorModel.moveDown(t,e)}},editDescription:function(){if(this.state.lastHovered){var e=this.state.lastHovered.props.element;this.state.lastHovered.props.isBehavior?this._editBehaviorDescription(e):this._editDecoratorDescription(e)}},onModelChanged:function(){this.props.editor.checkModified(),this.setState(this.state)},onBehaviorRowSelected:function(e){e!==this.state.model.behavior&&(this.state.model.setRenderDescription(void 0),this.state.decoratorModel.setRenderDescription(void 0)),this.state.model.setSelectedElement(e),this.setState(this.state)},onDecoratorRowSelected:function(e){e!==this.state.model.behavior&&(this.state.model.setRenderDescription(void 0),this.state.decoratorModel.setRenderDescription(void 0)),this.state.decoratorModel.setSelectedElement(e),this.setState(this.state)},onRowDoubleClicked:function(e){this._editBehaviorDescription(e.props.element)},_editBehaviorDescription:function(e){this.state.model.setRenderDescription(e),this.state.decoratorModel.setRenderDescription(void 0),this.setState(this.state)},onDecoratorRowDoubleClicked:function(e){this._editDecoratorDescription(e.props.element)},_editDecoratorDescription:function(e){this.state.model.setRenderDescription(void 0),this.state.decoratorModel.setRenderDescription(e),this.setState(this.state)},dispose:function(){this.saveUiState(this.layout)},serialize:function(){return this.saveUiState(this.layout),o(Object.getPrototypeOf(e),"serialize",this).call(this)},render:function(){if(this.state.model.installJibo){var e="Please make sure the jibo module is installed in this project using `npm install jibo --save`.\nOtherwise, the behavior editor cannot render the behaviors.";return s.createElement("ul",{className:"background-message centered"},s.createElement("div",{style:{padding:20},dangerouslySetInnerHTML:{__html:r(e,{sanitize:!0})}}))}var t=this.state.model.getData();if(void 0===t){var o="Error parsing JSON data. This is likely caused by hand-editing behavior tree JSON or unresolved merge conflicts.";return s.createElement("ul",{className:"background-message centered"},s.createElement("li",null,o))}var a=this.props.editor,c=a.getNewSchema(a.uri),v={},u={};if(Object.keys(t).forEach(function(e){var o=t[e],s=o["asset-pack"]?o["asset-pack"]:"core";c[s]?c[s].schema[o["class"]]||(u[o["class"]]=!0):v[s]=!0}),v=Object.keys(v),u=Object.keys(u),v.length>0||u.length>0){var m=null;v.length&&!function(){var e=[];v.forEach(function(t){e.push(s.createElement("li",{style:{paddingLeft:15},className:"list-item"},s.createElement("span",{className:"icon icon-file-submodule"},t)))}),m=[s.createElement("h1",null,"Missing Asset Packs"),s.createElement("h2",null,"Make sure these following asset packs are in the package.json and have been installed"),{assetPacksList:e}]}();var p=null;return u.length&&!function(){var e=[];u.forEach(function(t){e.push(s.createElement("li",{style:{paddingLeft:15},className:"list-item"},s.createElement("span",{className:"icon icon-file-text"},t)))}),p=[s.createElement("h1",null,"Missing Behaviors"),s.createElement("h2",null,"Make sure the following behaviors are included in your schemas folder"),{behaviorList:e}]}(),s.createElement("div",null,s.createElement("ul",{className:"list-group",style:{paddingLeft:20}},m,p))}return s.createElement("div",{tabIndex:"-1"},s.createElement(n,{ref:"topLevel",width:this.props.paneWidth,height:this.props.paneHeight-40,serialized:this.props.editor.layout},s.createElement(d,null,s.createElement(l,null,s.createElement(i,{showRoot:!0,model:this.state.model,onRowSelected:this.onBehaviorRowSelected,onRowDoubleClicked:this.onRowDoubleClicked,onRowHover:this.onBehaviorRowHover,onRowHoverLeave:this.onBehaviorRowHoverLeave,rowClassName:"behavior",isBehavior:!0}),s.createElement(i,{key:this.state.decoratorTreeKey,showRoot:!1,model:this.state.decoratorModel,onRowSelected:this.onDecoratorRowSelected,onRowDoubleClicked:this.onDecoratorRowDoubleClicked,onRowHover:this.onDecoratorRowHover,onRowHoverLeave:this.onDecoratorRowHoverLeave,rowClassName:"decorator",isBehavior:!1})),s.createElement(l,null,s.createElement(h,{schema:this.state.schema,model:this.state.model,behavior:this.state.model.getSelectedBehavior(),isBehaviorArgs:!0,projectRoot:this.props.editor.projectRoot}),s.createElement(h,{schema:this.state.schema,model:this.state.model,behavior:this.state.model.getSelectedDecorator(),isBehaviorArgs:!1,projectRoot:this.props.editor.projectRoot})))))},chooseBehavior:function(e){var t=this;this.createModal(s.createElement(p,{schema:this.state.schema,types:["leaf","composite"],onChoose:function(t,o){e(t,o)},onClose:function(){t.destroyModal()}}))},chooseDecorator:function(e){var t=this;this.createModal(s.createElement(p,{schema:this.state.schema,types:["decorator"],onChoose:function(t,o){e(t,o)},onClose:function(){t.destroyModal()}}))},undo:function(){this.undoredo.undo()},redo:function(){this.undoredo.redo()},componentDidMount:function(){this.setupPaneResizeEventMixin(),this.disposable=new u,this.disposable.add(atom.commands.add(this.getDOMNode(),{"jibo-sdk:add-decorator":this.addDecorator,"jibo-sdk:add-sibling-above":this.addSiblingAbove,"jibo-sdk:add-sibling-below":this.addSiblingBelow,"jibo-sdk:add-child":this.addChild,"jibo-sdk:swap-behavior":this.swap,"jibo-sdk:move-up-behavior":this.moveUp,"jibo-sdk:move-down-behavior":this.moveDown,"jibo-sdk:edit-description":this.editDescription,"core:undo":this.undo,"core:redo":this.redo})),this.state.model.setSelectedElement(this.state.model.getRoot())},componentWillUnmount:function(){this.disposable.dispose(),this.cleanupPaneResizeEventMixin()}}); |