Files
JiboSDK/lib/behavior-editor/tree-view-row-mixin.js
2026-03-22 03:21:45 +02:00

1 line
6.0 KiB
JavaScript

"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},o=e(require("react")),$=e(require("jquery")),r=e(require("../common/find-node")),t=require("atom").CompositeDisposable,i=30;module.exports={getInitialState:function(){return{}},getLine:function(e){var o=this.props.model.data[e.parent];if(!o)return 1;var r=this.getOlderSibling(e);return r?1+this.getLine(r)+this.getTotalChildren(r):1+this.getLine(o)},getOlderSibling:function(e){var o=this.props.model.data[e.parent];if(o)for(var r=0;r<o.children.length;r++)if(o.children[r]===e.id&&r>0)return this.props.model.data[o.children[r-1]]},getTotalChildren:function(e){var o=this;if(e.children===[]||!e.children)return 0;var r=function(){var r=0;return e.children.forEach(function(e){e=o.props.model.data[e],r+=1+o.getTotalChildren(e)}),{v:r}}();return"object"==typeof r?r.v:void 0},getDecoratorLine:function(e){for(var o=this.props.model.owner.decorators,r=0;r<o.length;r++)if(o[r]===e.id)return r+1},render:function(){for(var e=[],r=0;r<this.props.columnWidths.length;r++){var t=i*this.props.depth;this.props.model.shouldNotIndent(r)&&(t=0);var n={width:this.props.columnWidths[r],left:t},s=this.props.model.owner?this.getDecoratorLine(this.props.element):this.getLine(this.props.element),a=this.props.model.getLabel(this.props.element,r,this.props.columnWidths[r]-t-20,s),p={display:"inline-block","font-style":"italic",color:"#555555"},d=this.props.element.skipped?p:{display:"inline-block"},l="";this.props.model.isSelected(this.props.element)&&(l="row-selected-text");var h=null;if(this.doRenderArrow&&1===r){var c="arrow";c+=this.props.isExpanded?" fa fa-caret-down":" fa fa-caret-right",h=o.createElement("i",{className:c,onMouseUp:this.onArrowUp,onMouseOver:this.onArrowOver,onMouseOut:this.onArrowOut})}"string"==typeof a&&(a=o.createElement("p",{className:l,style:d},a)),e.push(o.createElement("div",{key:r,style:n,className:"cell"},h,a))}var m="row-wrapper";m+=" "+this.props.rowClassName,this.props.isRoot||(m+=" row-wrapper-not-root"),this.props.model.isSelected(this.props.element)&&(m+=" row-wrapper-selected"),this.props.model.canHaveChildren(this.props.element)&&(m+=" row-wrapper-parent");var u=this.props.isHidden?{display:"none"}:{},w=this.props.model.canHaveChildren(this.props.element)?null:o.createElement("div",{onDragEnter:this.onDragEnter,onDragLeave:this.onDragLeave,className:"drop-bar",ref:"dragBar"});return o.createElement("div",{ref:"rowWrapper",draggable:"true",style:u,onClick:this.onClick,onDoubleClick:this.onDoubleClick,onDragStart:this.onDragStart,className:m,onMouseOut:this.onMouseOut,onMouseOver:this.onMouseOver},e,w)},componentDidMount:function(){var e=o.findDOMNode(this.refs.dragBar);e&&(this.onDropSiblingCB=this.onDropBelowSibling.bind(this),e.addEventListener("drop",this.onDropSiblingCB));var r=o.findDOMNode(this.refs.rowWrapper);this.onDropParentCB=this.onDropParent.bind(this),r.addEventListener("drop",this.onDropParentCB),this.disposable=new t,this.disposable.add(atom.commands.add(this.getDOMNode(),{"jibo-sdk:delete-behavior":this.deleteRow,"jibo-sdk:skip-behavior":this.skip})),this.getDOMNode().treeRowView=this},componentWillUnmount:function(){var e=o.findDOMNode(this.refs.dragBar);e&&e.removeEventListener("drop",this.onDropSiblingCB);var r=o.findDOMNode(this.refs.rowWrapper);r.removeEventListener("drop",this.onDropParentDB),this.disposable.dispose()},canMoveUp:function(){return this.props.model.canMoveUp(this.props.element,this.props.row)},canMoveDown:function(){return this.props.model.canMoveDown(this.props.element,this.props.row)},isSkipped:function(){return this.props.model.isSkipped(this.props.element)},skip:function(){return this.props.model.skip(this.props.element)},onDragEnter:function(){var e=$(o.findDOMNode(this.refs.dragBar));e.css("background-color","#93c3cd")},onDragLeave:function(){var e=$(o.findDOMNode(this.refs.dragBar));e.css("background-color","")},onDragStart:function(){this.props.treeView.onDragStart(this.props.element)},onDropParent:function(e){e.preventDefault(),e.stopPropagation(),this.props.model.canHaveChildren(this.props.element)&&this.props.treeView.onDropParent(this.props.element)},onDropBelowSibling:function(e){e.preventDefault(),e.stopPropagation();var r=$(o.findDOMNode(this.refs.dragBar));r.css("background-color",""),this.props.treeView.onDropBelowSibling(this.props.element,this.props.row)},onDoubleClick:function(){this.props.treeView.onRowDoubleClicked(this)},onClick:function(){this.props.treeView.rowSelected(this)},onMouseOver:function(){this.props.treeView.rowHover(this)},onMouseOut:function(){this.props.treeView.rowHoverLeave(this)},deleteRow:function(){this.props.isBehavior?this.props.model.deleteRow(this.props.element,this.props.row):this.props.model.deleteDecorator(this.props.element,this.props.row)}},atom.contextMenu.add({".row-wrapper.behavior":[{label:"Add Decorator",command:"jibo-sdk:add-decorator"},{label:"Swap",command:"jibo-sdk:swap-behavior"}],".row-wrapper-parent":[{label:"Add Child",command:"jibo-sdk:add-child"}],".row-wrapper-not-root":[{label:"Add Sibling Above",command:"jibo-sdk:add-sibling-above"},{label:"Add Sibling Below",command:"jibo-sdk:add-sibling-below"},{label:"Delete",command:"jibo-sdk:delete-behavior"},{label:"Edit Description",command:"jibo-sdk:edit-description"},{type:"separator"},{created:function(e){var o=r.getAncestor(e.target,".row-wrapper");o&&o.treeRowView.isSkipped()?this.label="Unskip":this.label="Skip"},command:"jibo-sdk:skip-behavior"},{type:"separator"},{label:"Move Up",command:"jibo-sdk:move-up-behavior",shouldDisplay:function(e){var o=r.getAncestor(e.target,".row-wrapper");return o&&o.treeRowView.canMoveUp()}},{label:"Move Down",command:"jibo-sdk:move-down-behavior",shouldDisplay:function(e){var o=r.getAncestor(e.target,".row-wrapper");return o&&o.treeRowView.canMoveDown()}},{type:"separator"},{label:"Cut",command:"core:cut"},{label:"Copy",command:"core:copy"}],".row-wrapper-parent:not(.row-wrapper-not-root)":[{label:"Edit Description",command:"jibo-sdk:edit-description"},{type:"separator"},{label:"Copy",command:"core:copy"}],".arguments-scroll-container":[{label:"Paste",command:"core:paste",shouldDisplay:function(){return!0}}]});