1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=e(require("react")),s=require("atom").CompositeDisposable,a=e(require("marked"));module.exports=t.createClass({displayName:"behavior-selector-modal",onChoose:function(){this.props.onChoose(this.state.currentAssetPackId,this.state.currentBehavior),this.props.onClose()},onCancel:function(){this.props.onClose()},getLength:function(){return Object.keys(this.behaviorToIndexMap).length},_moveUp:function(){var e=this._getIndexFromBehaviorName(this.state.currentBehavior["class"]);0===e?e=this.getLength()-1:e--;var t=this._getBehaviorNameFromIndex(e),s=this.props.schema[this.state.currentAssetPackId].schema[t];(void 0!==t||t!==this.state.currentBehavior["class"])&&this.setState({currentBehavior:s})},_moveDown:function(){var e=this._getIndexFromBehaviorName(this.state.currentBehavior["class"]);e===this.getLength()-1?e=0:e++;var t=this._getBehaviorNameFromIndex(e),s=this.props.schema[this.state.currentAssetPackId].schema[t];(void 0!==t||t!==this.state.currentBehavior["class"])&&this.setState({currentBehavior:s})},_getIndexFromBehaviorName:function(e){return this.behaviorToIndexMap[e]},_getBehaviorNameFromIndex:function(e){for(var t in this.behaviorToIndexMap)if(this.behaviorToIndexMap[t]===e)return t},getInitialState:function(){return{currentAssetPackId:"core",currentBehavior:"",filter:""}},onAssetPackSelected:function(e){this.state.currentBehavior=void 0,this.setState({currentAssetPackId:e})},onBehaviorSelected:function(e){this.setState({currentBehavior:e})},getPanelHeading:function(e){return t.createElement("div",{className:"panel-heading",style:{padding:"0px",width:"100%",height:30}},t.createElement("p",{style:{textAlign:"center",marginTop:"4px",marginBottom:"4px"}},e))},render:function(){var e=this;this.behaviorToIndexMap={};for(var s=[],i=Object.keys(this.props.schema),n=[],o=0;o<i.length;o++){var r=i[o],c=this.props.schema[r],h="list-item";if(this.state.currentAssetPackId===r){h+=" selected";var l=Object.keys(c.schema);l=l.sort();for(var d=[],m=!1,u=0,v=0;v<l.length;v++){var p=l[v];p.toLowerCase().includes(this.state.filter.toLowerCase())?-1!==this.props.types.indexOf(c.schema[p].type)&&(this.behaviorToIndexMap[p]=u++,d.push(p)):this.state.currentBehavior&&this.state.currentBehavior["class"]===p&&(m=!0)}l=d;for(var v=0;v<l.length;v++)!function(s){var a=l[s],i=c.schema[a],o="list-item";e.state.currentBehavior&&!m||0!==s?e.state.currentBehavior["class"]===a&&(o+=" selected"):(e.state.currentBehavior=i,o+=" selected"),n.push(t.createElement("li",{className:o,onClick:e.onBehaviorSelected.bind(e,i),onDoubleClick:function(){e.onBehaviorSelected(i),e.onChoose()}},t.createElement("span",null,a)))}(v)}s.push(t.createElement("li",{className:h,onClick:this.onAssetPackSelected.bind(this,r)},t.createElement("span",null,c.displayName)))}var f=this.state.currentBehavior&&this.state.currentBehavior.description?a(this.state.currentBehavior.description,{sanitize:!0}):"",g="Behavior";this.props.types.indexOf("decorator")>-1&&(g="Decorator");var b="Choose a "+g;return t.createElement("div",{className:"behavior-selector-modal",ref:"modal"},t.createElement("div",{className:"panel-heading",style:{padding:"0px"}},t.createElement("h2",{style:{textAlign:"center",marginTop:"6px",marginBottom:"6px"}},b)),t.createElement("label",{style:{marginLeft:10}},"Search"),t.createElement("atom-text-editor",{ref:"editor",style:{marginLeft:10,marginRight:10,marginBottom:10},mini:!0}),t.createElement("div",{className:"contents"},t.createElement("div",{className:"list-contents"},this.getPanelHeading("Asset Pack"),t.createElement("div",{className:"list-group asset-pack",ref:"assetPackList"},s)),t.createElement("div",{className:"list-contents"},this.getPanelHeading(g),t.createElement("ul",{className:"list-group schema-list",ref:"schemaList"},n)),t.createElement("div",{className:"description-contents"},this.getPanelHeading("Description"),t.createElement("div",{className:"behavior-description"},t.createElement("div",{dangerouslySetInnerHTML:{__html:f}})))),t.createElement("div",{className:"btn-group"},t.createElement("button",{className:"btn",onClick:this.onChoose},"Choose"),t.createElement("button",{className:"btn",onClick:this.onCancel},"Cancel")))},onLeft:function(){var e=t.findDOMNode(this.refs.assetPackList);e.focus()},onRight:function(){var e=t.findDOMNode(this.refs.schemaList);e.focus()},componentDidMount:function(){var e=this,a=t.findDOMNode(this.refs.editor),i=t.findDOMNode(this.refs.schemaList),n=t.findDOMNode(this.refs.assetPackList);setTimeout(function(){a.focus(),i.setAttribute("tabIndex",0),n.setAttribute("tabIndex",1),e.disposable=new s,e.disposable.add(atom.commands.add(i,{"jibo-sdk:up":e._moveUp,"jibo-sdk:down":e._moveDown,"jibo-sdk:confirm":e.onChoose,"jibo-sdk:left":e.onLeft})),e.disposable.add(atom.commands.add(n,{"jibo-sdk:right":e.onRight})),e.disposable.add(atom.commands.add(e.getDOMNode(),{"jibo-sdk:escape":e.onCancel})),e.disposable=atom.commands.add(a,"jibo-sdk:confirm",function(){e.onChoose()})},100);var o=a.getModel();o.onDidChange(function(){e.setState({filter:o.getText()})})},componentWillUnmount:function(){this.disposable.dispose()}}); |