diff --git a/build/dataflow.build.js b/build/dataflow.build.js index c862cf2..9ccc19a 100644 --- a/build/dataflow.build.js +++ b/build/dataflow.build.js @@ -1,4 +1,4 @@ -/*! dataflow.js - v0.0.7 - 2013-10-02 (6:20:43 PM GMT+0200) +/*! dataflow.js - v0.0.7 - 2013-10-02 (7:09:36 PM GMT+0200) * Copyright (c) 2013 Forrest Oliphant; Licensed MIT, GPL */ // Thanks bobnice http://stackoverflow.com/a/1583281/592125 @@ -1239,6 +1239,39 @@ CircularBuffer.IndexError= {}; edge.view.unfade(); } }); + }, + startHighlightCompatible: function (port, fromInput) { + this.model.nodes.each(function (node) { + node.outputs.each(function (output) { + if (output === port) { + return; + } + if (!fromInput) { + output.view.blur(); + return; + } + if (output.canConnect() && (output.type === 'all' || output.type === port.type)) { + return; + } + output.view.blur(); + }); + node.inputs.each(function (input) { + if (input === port) { + return; + } + if (fromInput) { + input.view.blur(); + return; + } + if (input.canConnect() && (input.type === 'all' || input.type === port.type)) { + return; + } + input.view.blur(); + }); + }); + }, + stopHighlightCompatible: function (port, fromInput) { + this.$el.find('.dataflow-port.blur').removeClass('blur'); } }); @@ -1823,6 +1856,8 @@ CircularBuffer.IndexError= {}; graphSVGElement.appendChild(this.previewEdgeNewView.el); zoom = this.model.parentNode.parentGraph.get('zoom'); + + this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model, true); }, newEdgeDrag: function(event, ui){ if (!this.previewEdgeNewView || !ui) { @@ -1850,6 +1885,7 @@ CircularBuffer.IndexError= {}; this.previewEdgeNewView.remove(); delete this.previewEdgeNew; delete this.previewEdgeNewView; + this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model, true); }, getTopEdge: function() { var topEdge; @@ -1927,6 +1963,12 @@ CircularBuffer.IndexError= {}; delete this.previewEdgeChangeView; } }, + blur: function () { + this.$el.addClass('blur'); + }, + unblur: function () { + this.$el.removeClass('blur'); + }, connectEdge: function(event, ui) { // Dropped to this el var otherPort = ui.helper.data("port"); @@ -2132,6 +2174,7 @@ CircularBuffer.IndexError= {}; zoom = this.model.parentNode.parentGraph.get('zoom'); + this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model); }, newEdgeDrag: function(event, ui){ // Don't drag node @@ -2157,6 +2200,7 @@ CircularBuffer.IndexError= {}; this.previewEdgeView.remove(); delete this.previewEdge; delete this.previewEdgeView; + this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model); }, getTopEdge: function() { var topEdge; @@ -2234,6 +2278,12 @@ CircularBuffer.IndexError= {}; delete this.previewEdgeChangeView; } }, + blur: function () { + this.$el.addClass('blur'); + }, + unblur: function () { + this.$el.removeClass('blur'); + }, connectEdge: function(event, ui) { // Dropped to this el var otherPort = ui.helper.data("port"); diff --git a/build/dataflow.min.js b/build/dataflow.min.js index 55caa0a..039dae5 100644 --- a/build/dataflow.min.js +++ b/build/dataflow.min.js @@ -1,5 +1,6 @@ -/*! dataflow.js - v0.0.7 - 2013-10-02 (6:20:43 PM GMT+0200) +/*! dataflow.js - v0.0.7 - 2013-10-02 (7:09:36 PM GMT+0200) * Copyright (c) 2013 Forrest Oliphant; Licensed MIT, GPL */ -function CircularBuffer(a){this._array=new Array(a),this.length=0}CircularBuffer.prototype.toString=function(){return"[object CircularBuffer("+this._array.length+") length "+this.length+"]"},CircularBuffer.prototype.get=function(a){return 0>a||aa||athis.length;)this._array[this.length%this._array.length]=void 0,this.length++;this._array[a%this._array.length]=b,a==this.length&&this.length++},CircularBuffer.prototype.push=function(a){this._array[this.length%this._array.length]=a,this.length++},CircularBuffer.IndexError={},function(){var a=Backbone.Model.extend({$:function(a){return this.$el.find(a)},initialize:function(){this.el=document.createElement("div"),this.el.className="dataflow",this.$el=$(this.el),this.$el.data("dataflow",this);var a=Dataflow.prototype.module("card");if(this.shownCards=new a.Collection,this.shownCards.view=new a.CollectionView({collection:this.shownCards}),this.$el.append(this.shownCards.view.$el),this.debug=this.get("debug"),this.controls=this.get("controls"),this.controls!==!1&&(this.controls=!0),this.controls)for(var b in this.plugins)this.plugins[b].initialize&&this.plugins[b].initialize(this);this.inputs=this.get("inputs"),this.inputs!==!1&&(this.inputs=!0),this.editable=this.get("editable"),this.editable!==!1&&(this.editable=!0);var c=this.get("appendTo");c=c?c:"body","body"===c&&$("html, body").css({margin:"0px",padding:"0px",width:"100%",height:"100%"}),$(c).append(this.el),this.id||(this.id=$(c).attr("id")),this.loadState()},modules:{},module:function(a){return this.modules[a]?this.modules[a]:(this.modules[a]={},this.modules[a])},nodes:{},node:function(a){return this.nodes[a]?this.nodes[a]:(this.nodes[a]={description:""},this.nodes[a])},plugins:{},plugin:function(a){return this.plugins[a]?this.plugins[a]:(this.plugins[a]={},this.plugins[a])},addCard:function(a,b){b||this.hideCards(),this.shownCards.get(a)?this.shownCards.view.bringToTop(a):this.shownCards.add(a)},removeCard:function(a){this.shownCards.remove(a)},hideCards:function(){var a=this.shownCards.where({pinned:!1});this.shownCards.remove(a)},addPlugin:function(a){var b=this.plugins[a.id];if(b||(this.plugins[a.id]=b={}),b.info=a,b.enabled=!0,a.menu){var c=Dataflow.prototype.module("card"),d=new c.Model({dataflow:this,card:{el:a.menu},pinned:a.pinned?!0:!1});b.card=d,this.plugins.menu.addPlugin({id:a.id,icon:a.icon,label:a.label,showLabel:!1})}},showPlugin:function(a){this.plugins[a]&&this.plugins[a].card&&(this.addCard(this.plugins[a].card),"function"==typeof this.plugins[a].onShow&&this.plugins[a].onShow())},enablePlugin:function(a){var b=this.plugins[a];b&&this.addPlugin(b.info)},disablePlugin:function(a){this.plugins.menu.disablePlugin(a)},showContextBar:function(){this.contextBar.view.$el.show()},hideContextBar:function(){this.contextBar.view.$el.hide()},contexts:{},prepareContext:function(a){if(this.contexts[a])return this.contexts[a];var b=this.module("menucard");return this.contexts[a]=new b.Model({id:"context-"+a,dataflow:this,pinned:!0}),this.contexts[a].view=new b.View({model:this.contexts[a]}),this.contexts[a]},addContext:function(a){_.each(a.contexts,function(b){var c=this.prepareContext(b);c.menu.add(a)},this)},changeContext:function(a,b){var c=function(a,b){this.contexts[a]&&(this.contexts[a].set("label",b),this.shownCards.get("context-"+a)||this.shownCards.add(this.contexts[a]))}.bind(this),d=function(a){this.shownCards.get("context-"+a)&&this.shownCards.remove("context-"+a)}.bind(this);a.length>1?(c("nodes",a.length+" nodes"),d("node")):1===a.length?(c("node",a[0].get("label")),d("nodes")):(d("node"),d("nodes")),b.length>1?(c("edges",b.length+" edges"),d("edge")):1===b.length?(c("edge",b[0].id),d("edges")):(d("edge"),d("edges"))},loadGraph:function(a){this.graph&&(this.currentGraph.view&&this.currentGraph.view.remove(),this.graph.view&&this.graph.view.remove(),this.graph.remove());var b=this.module("graph");a.dataflow=this;var c=new b.Model(a);return c.view=new b.View({model:c}),this.$el.append(c.view.render().el),this.graph=this.currentGraph=c,c},showGraph:function(a){this.currentGraph.view.$el.detach(),this.$el.append(a.view.el),a.view.render(),this.currentGraph=a},debug:!1,log:function(a){this.trigger("log",a,arguments),this.debug&&console.log("Dataflow: ",arguments)},types:["all","canvas:2d","canvas:webgl","string","number","int","object","array"]});window.Dataflow=a,"object"==typeof exports&&(exports.Dataflow=a),Backbone.View.prototype.addEvents=function(a){this.delegateEvents(_.extend(_.clone(this.events),a))},Backbone.CollectionView=Backbone.Model.extend({prepend:!1,initialize:function(a){a.tagName&&(this.tagName=a.tagName),a.className&&(this.className=a.className),a.itemView&&(this.itemView=a.itemView),this.el=document.createElement(this.tagName),this.el.className=this.className,this.$el=$(this.el),this.parent=a.parent;var b=this.collection=this.get("collection");b.each(this.addItem,this),b.on("add",this.addItem,this),b.on("remove",this.removeItem,this)},addItem:function(a){a.view||(a.view=new this.itemView({model:a,parent:this.parent}),a.view.render()),this.prepend?this.$el.prepend(a.view.el):this.$el.append(a.view.el)},removeItem:function(a){a.view.remove()}})}(),function(a){var b=Backbone.Model.extend({});a.prototype.loadState=function(){var a="dataflow-"+(this.id?this.id:this.cid),c=JSON.parse(window.localStorage.getItem(a));c||(c={});var d=new b(c);this.set("state",d),d.on("change",function(b){window.localStorage.setItem(a,JSON.stringify(b.toJSON()))})}}(Dataflow),function(a){var b=a.prototype.module("graph"),c=a.prototype.module("node"),d=a.prototype.module("edge");b.Model=Backbone.Model.extend({defaults:{nodes:[],edges:[],panX:0,panY:0,zoom:1},initialize:function(){this.dataflow=this.get("dataflow");var a,b=this.nodes=new c.Collection;b.parentGraph=this,b.on("all",function(){this.trigger("change")},this),b.on("add",function(a){this.dataflow.trigger("node:add",this,a)},this),b.on("remove",function(a){a.remove(),this.dataflow.trigger("node:remove",this,a)},this);var e=this.get("nodes");for(a=0;a0;)this.nodes.remove(this.nodes.at(this.nodes.length-1))},toJSON:function(){return{nodes:this.nodes,edges:this.edges}}})}(Dataflow),function(a){var b=a.prototype.module("node"),c=a.prototype.module("input"),d=a.prototype.module("output");b.Model=Backbone.Model.extend({defaults:function(){return{label:"",description:"",type:"test",x:200,y:100,state:{},selected:!1}},initialize:function(){this.parentGraph=this.get("parentGraph"),this.type=this.get("type"),""===this.get("label")&&this.set({label:this.get("type")});var a=this.inputs;this.inputs=new c.Collection,this.inputs.parentNode=this;for(var b=0;b0;)this.connected[0].remove()}}),b.Collection=Backbone.Collection.extend({model:b.Model})}(Dataflow),function(a){var b=a.prototype.module("input"),c=a.prototype.module("output");c.Model=b.Model.extend({defaults:{id:"output",label:"",type:"all",description:"",multiple:!0}}),c.Collection=Backbone.Collection.extend({model:c.Model})}(Dataflow),function(a){var b=a.prototype.module("edge");b.Model=Backbone.Model.extend({defaults:{z:0,route:0,selected:!1,log:null},initialize:function(){var a,b,c,d=this.get("preview");if(this.parentGraph=this.get("parentGraph"),this.attributes.log=new CircularBuffer(50),d){a=this.get("parentGraph").nodes;var e=this.get("source"),f=this.get("target");e?(b=a.get(this.get("source").node),this.source=b.outputs.get(this.get("source").port)):f&&(c=a.get(this.get("target").node),this.target=c.inputs.get(this.get("target").port))}else{a=this.parentGraph.nodes;try{b=a.get(this.get("source").node),this.source=b.outputs.get(this.get("source").port),c=a.get(this.get("target").node),this.target=c.inputs.get(this.get("target").port)}catch(g){}this.source.connect(this),this.target.connect(this),b.on("send:"+this.source.id,this.send,this),this.bringToTop(),this.on("select",this.select,this)}},select:function(){this.parentGraph.trigger("select:edge",this)},send:function(a){this.target.parentNode.recieve(this.target.id,a)},isConnectedToPort:function(a){return this.source===a||this.target===a},isConnectedToNode:function(a){return this.source.parentNode===a||this.target.parentNode===a},toString:function(){return this.id?this.id:this.get("source").node+":"+this.get("source").port+"::"+this.get("target").node+":"+this.get("target").port},toJSON:function(){return{source:this.get("source"),target:this.get("target"),route:this.get("route")}},bringToTop:function(){var a=0;this.parentGraph.edges.each(function(b){if(b!==this){var c=b.get("z");c>a&&(a=c),b.view&&b.view.unhighlight()}},this),this.set("z",a+1)},remove:function(){this.source.disconnect(this),this.target.disconnect(this),this.collection&&this.collection.remove(this),this.source.parentNode.off("send:"+this.source.id,this.send,this),this.trigger("remove")}}),b.Collection=Backbone.Collection.extend({model:b.Model,comparator:function(a){return a.get("z")}})}(Dataflow),function(a){var b=a.prototype.module("graph");a.prototype.module("node");var c=a.prototype.module("edge"),d=.2,e=1.1;document.createElement("div").style.hasOwnProperty("zoom");var f='
';b.View=Backbone.View.extend({template:_.template(f),className:"dataflow-g",events:{"click .dataflow-graph":"deselect","dragstart .dataflow-graph-panzoom":"panStart","drag .dataflow-graph-panzoom":"pan","dragstop .dataflow-graph-panzoom":"panStop","click .dataflow-graph-gotoparent":"gotoParent",mousewheel:"mouseWheel"},initialize:function(){this.$el.html(this.template(this.model.toJSON()));var a=this.model.get("nodes"),b=this.model.get("edges");this.nodes=a.view={},this.model.nodes.each(this.addNode,this),this.model.nodes.on("add",this.addNode,this),this.model.nodes.on("remove",this.removeNode,this),this.edges=b.view={},this.model.edges.each(this.addEdge,this),this.model.edges.on("add",this.addEdge,this),this.model.edges.on("remove",this.removeEdge,this);var c=this.model.get("parentNode");c||this.$(".dataflow-graph-controls").hide(),this.$(".dataflow-graph-panzoom").draggable({helper:function(){var a=$("
");return this.model.dataflow.$el.append(a),a}.bind(this)}),this.$graphEl=this.$(".dataflow-graph"),this.graphEl=this.$(".dataflow-graph")[0],this.$graphEl.css({transform:"translate3d(0, 0, 0) scale3d(1, 1, 1) ",transformOrigin:"left top"}),this.bindInteraction()},panStartOffset:null,panStart:function(a,b){b&&(this.panStartOffset=b.offset)},pan:function(a,b){if(b){var c=this.model.get("zoom"),d=b.offset.left-this.panStartOffset.left,e=b.offset.top-this.panStartOffset.top;this.$(".dataflow-graph").css({transform:"translate3d("+d/c+"px, "+e/c+"px, 0)"})}},panStop:function(a,b){this.$(".dataflow-graph").css({transform:"translate3d(0, 0, 0)"});var c=this.model.get("zoom"),d=b.offset.left-this.panStartOffset.left,e=b.offset.top-this.panStartOffset.top;this.model.set({panX:this.model.get("panX")+d/c,panY:this.model.get("panY")+e/c})},tempPanX:0,tempPanY:0,setPanDebounce:_.debounce(function(){this.$(".dataflow-graph").css({transform:"translate3d(0, 0, 0)"}),this.model.set({panX:this.model.get("panX")+this.tempPanX,panY:this.model.get("panY")+this.tempPanY}),this.tempPanX=0,this.tempPanY=0},250),mouseWheel:function(a){a.preventDefault();var b=a.originalEvent;this.tempPanX+=b.wheelDeltaX/6,this.tempPanY+=b.wheelDeltaY/6,this.$(".dataflow-graph").css({transform:"translate3d("+this.tempPanX+"px, "+this.tempPanY+"px, 0)"}),this.setPanDebounce()},gotoParent:function(){var a=this.model.get("parentNode");a&&this.model.dataflow.showGraph(a.parentGraph)},bindInteraction:function(){this.bindZoom(),this.bindScroll()},bindZoom:function(){if(window.Hammer){var a,b,c,f,g,h,i,j,k,l,m=this;Hammer(this.$(".dataflow-graph-panzoom")[0]).on("transformstart",function(d){a=m.model.get("zoom"),b=d.gesture.center.pageX,c=d.gesture.center.pageY,f=b/a,g=c/a;var e=m.$el.offset();k=f-e.left,l=g-e.top,m.$graphEl.css({transformOrigin:f+"px "+g+"px"})}).on("transform",function(f){h=Math.max(d/a,Math.min(f.gesture.scale,e/a)),i=(f.gesture.center.pageX-b)/a,j=(f.gesture.center.pageY-c)/a,m.$graphEl.css({transform:"translate3d("+i+"px,"+j+"px, 0) "+"scale3d("+h+","+h+", 1) "})}).on("transformend",function(){m.$graphEl.css({transform:"translate3d(0, 0, 0) scale3d(1, 1, 1) "});var b=a*h;b=Math.max(d,Math.min(b,e)),m.model.set("zoom",b),k*=b,l*=b,m.model.set({panX:m.model.get("panX")+i,panY:m.model.get("panY")+j}),console.log(m.model.attributes)});var n=function(){var a=m.model.get("zoom"),b=m.zoomClass;m.zoomClass=.5>a?"zoom-tiny":.8>a?"zoom-small":1.3>a?"zoom-normal":"zoom-big",m.$graphEl.removeClass(b).addClass(m.zoomClass),m.graphEl.style.zoom=m.model.get("zoom")};this.model.on("change:zoom",n),1!==this.model.get("zoom")&&n()}},zoomClass:1,zoomIn:function(){var a=this.model.get("zoom"),b=.9*a;b=Math.max(d,b),b!==a&&this.model.set("zoom",b)},zoomOut:function(){var a=this.model.get("zoom"),b=1.1*a;b=Math.min(e,b),b!==a&&this.model.set("zoom",b)},zoomCenter:function(){var a=this.model.get("zoom"),b=1;b!==a&&this.model.set("zoom",1)},bindScroll:function(){},render:function(){var a=this;return _.defer(function(){a.rerenderEdges()},this),this},addNode:function(a){var b=this.model.dataflow.nodes[a.type];if(b&&b.View)a.view=new b.View({model:a,graph:this});else{var c=this.model.dataflow.node("base");a.view=new c.View({model:a,graph:this})}this.nodes[a.id]=a.view,a.view.render(),this.$(".dataflow-nodes").append(a.view.el)},removeNode:function(a){a.view.remove(),this.nodes[a.id]=null,delete this.nodes[a.id]},addEdge:function(a){a.view=new c.View({model:a}),this.edges[a.id]=a.view,a.view.render(),this.$(".dataflow-svg-edges")[0].appendChild(a.view.el)},removeEdge:function(a){a.view&&a.view.remove(),this.edges[a.id]=null,delete this.edges[a.id]},rerenderEdges:function(){_.each(this.edges,function(a){a.render()},this)},sizeSVG:function(){try{var a=this.$(".dataflow-svg-edges")[0],b=a.getBBox(),c=Math.max(Math.round(b.x+b.width+50),50),d=Math.max(Math.round(b.y+b.height+50),50);a.setAttribute("width",c),a.setAttribute("height",d)}catch(e){}},deselect:function(){this.model.nodes.invoke("set",{selected:!1}),this.model.edges.invoke("set",{selected:!1}),this.model.trigger("selectionChanged"),this.unfade(),this.model.dataflow.hideCards()},fade:function(){this.model.nodes.each(function(a){a.view&&(a.get("selected")||a.view.fade())}),this.fadeEdges()},fadeEdges:function(){this.model.edges.each(function(a){a.get("selected")||a.source.parentNode.get("selected")||a.target.parentNode.get("selected")?a.view.unfade():a.view.fade()})},unfade:function(){this.model.nodes.each(function(a){a.view&&a.view.unfade()}),this.model.edges.each(function(a){a.view&&a.view.unfade()})}})}(Dataflow),function(a){var b,c=a.prototype.module("node"),d=a.prototype.module("input"),e=a.prototype.module("output"),f='

<%- label %>

',g="";c.View=Backbone.View.extend({template:_.template(f),innerTemplate:_.template(g),className:"dataflow-node",events:function(){return{"click .dataflow-node-header":"select",dragstart:"dragStart",drag:"drag",dragstop:"dragStop"}},initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.graph=a.graph,this.$el.addClass(this.model.type),this.model.parentGraph.dataflow.editable||this.$(".dataflow-node-edit").hide(),this.inputs=this.model.inputs.view=new d.CollectionView({collection:this.model.inputs,parent:this}),this.outputs=this.model.outputs.view=new e.CollectionView({collection:this.model.outputs,parent:this}),this.$el.draggable({handle:"h1",helper:function(){return $("
")}}),this.$el.data("dataflow-node-view",this),this.$(".dataflow-node-inner").append(this.innerTemplate),this.listenTo(this.model.parentGraph,"change:panX change:panY",this.bumpPosition),this.listenTo(this.model,"change:selected",this.selectedChanged),this.listenTo(this.model,"change:label",this.changeLabel),this.listenTo(this.model,"remove",this.hideInspector),this.$inner=this.$(".dataflow-node-inner")},render:function(){return this.$el.css({left:this.model.get("x")+this.model.parentGraph.get("panX"),top:this.model.get("y")+this.model.parentGraph.get("panY")}),this.$(".dataflow-node-ins").html(this.inputs.el),this.$(".dataflow-node-outs").html(this.outputs.el),this.$(".dataflow-node-controls").hide(),this.$(".label-edit").hide(),this},_alsoDrag:[],_dragDelta:{},$dragHelpers:$('
'),dragStart:function(a,c){c&&(this.model.get("selected")||this.select(a,!0),a.stopPropagation(),b=this.model.parentGraph.get("zoom"),this.$dragHelpers.css({transform:"translate3d(0,0,0)"}),this.$el.parent().append(this.$dragHelpers),this._alsoDrag=this.model.collection.where({selected:!0}),_.each(this._alsoDrag,function(a){var b=a.view.$el,c=$('
').css({width:b.width(),height:b.height(),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)});this.$dragHelpers.append(c)},this))},changeLabel:function(){var a=this.model.get("label"),b=this.model.get("type");this.$(".dataflow-node-title").text(a).attr("title",a+": "+b)},drag:function(a,c){if(c){a.stopPropagation();var d=(c.position.left-c.originalPosition.left)/b,e=(c.position.top-c.originalPosition.top)/b;this.$dragHelpers.css({transform:"translate3d("+d+"px,"+e+"px,0)"})}},dragStop:function(a,c){if(c){a.stopPropagation(),this.model.parentGraph.get("panX"),this.model.parentGraph.get("panY");var d=(c.position.left-c.originalPosition.left)/b,e=(c.position.top-c.originalPosition.top)/b;this._alsoDrag.length&&(_.each(this._alsoDrag,function(a){a.view.moveToPosition(a.get("x")+d,a.get("y")+e)},this),this._alsoDrag=[]),this.$dragHelpers.empty(),this.$dragHelpers.remove()}},bumpPosition:function(){this.$el.css({left:this.model.get("x")+this.model.parentGraph.get("panX"),top:this.model.get("y")+this.model.parentGraph.get("panY")}),this.model.trigger("change:x change:y")},moveToPosition:function(a,b){this.model.set({x:a,y:b},{silent:!0}),this.bumpPosition()},removeModel:function(){this.model.remove()},bringToTop:function(){var a=0;this.model.collection.each(function(b){var c=parseInt(b.view.el.style.zIndex,10);c>a&&(a=c)},this),this.el.style.zIndex=a+1},select:function(a){a&&a.stopPropagation();var b=!1,c=this.model.get("selected");a&&(a.ctrlKey||a.metaKey)?(b=!0,c=!c,this.model.set("selected",c),c||this.fade()):(this.model.parentGraph.edges.invoke("set",{selected:!1}),this.model.parentGraph.nodes.invoke("set",{selected:!1}),this.model.parentGraph.view.fade(),c=!0,this.model.set("selected",!0)),this.bringToTop(),this.model.parentGraph.view.fadeEdges(),this.model.parentGraph.trigger("selectionChanged")},inspector:null,getInspector:function(){if(!this.inspector){var b=new c.InspectView({model:this.model}),d=a.prototype.module("card");this.inspector=new d.Model({dataflow:this.model.parentGraph.dataflow,card:b})}return this.inspector},showInspector:function(a){this.model.parentGraph.dataflow.addCard(this.getInspector(),a)},hideInspector:function(){this.model.parentGraph.dataflow.removeCard(this.getInspector())},fade:function(){this.$el.addClass("fade"),this.$el.removeClass("ui-selected")},unfade:function(){this.$el.removeClass("fade")},selectedChanged:function(){this.model.get("selected")?(this.highlight(),this.showInspector()):(this.unhighlight(),this.hideInspector())},highlight:function(){this.$el.removeClass("fade"),this.$el.addClass("ui-selected")},unhighlight:function(){this.$el.removeClass("ui-selected")}})}(Dataflow),function(a){var b=a.prototype.module("input"),c=a.prototype.module("edge"),d='',e=1;b.View=Backbone.View.extend({template:_.template(d),tagName:"li",className:"dataflow-port dataflow-in",events:{click:"getTopEdge",drop:"connectEdge","dragstart .dataflow-port-hole":"newEdgeStart","drag .dataflow-port-hole":"newEdgeDrag","dragstop .dataflow-port-hole":"newEdgeStop","dragstart .dataflow-port-plug":"changeEdgeStart","drag .dataflow-port-plug":"changeEdgeDrag","dragstop .dataflow-port-plug":"changeEdgeStop"},$input:null,initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.$el.addClass(this.model.get("type")),this.parent=a.parent;var b=this.parent.model,c=b.parentGraph;this.listenTo(b,"change:x change:y",function(){this._holePosition=null}.bind(this)),this.listenTo(c,"change:panX change:panY",function(){this._holePosition=null}.bind(this));var d=b.get("state");if(d&&d[this.model.id]&&this.$el.addClass("hasvalue"),this.model.parentNode.parentGraph.dataflow.editable){var e=this;if(this.$(".dataflow-port-plug").draggable({cursor:"pointer",helper:function(){var a=$('');return e.parent.graph.$el.append(a),a},disabled:!0,distance:10,delay:100}),this.$(".dataflow-port-hole").draggable({cursor:"pointer",helper:function(){var a=$('').data({port:e.model});return e.parent.graph.$el.append(a),a}}),this.$el.droppable({accept:".dataflow-port-plug.in, .dataflow-port-hole.out",activeClassType:"droppable-hover",refreshPositions:!0}),this.model.parentNode.parentGraph.dataflow.inputs){var f=this.model.get("type"),g=this.model.parentNode.get("state");if(a=this.model.get("options"),void 0!==a&&(_.isString(a)&&(a=a.split(" "),this.model.set("options",a)),_.isArray(a))){for(var h={},i=0;i').append(k).prepend(""+this.model.get("label")+" ");this.$input=l,this.model.connected.length&&l.addClass("connected"),this.model.on("connected",function(){this.$input.addClass("connected")},this),this.model.on("disconnected",function(){this.$input.removeClass("connected")},this)}}},renderInput:function(a,b){var c;if(b){c=$('').attr(f).addClass("int"===a?"input-int":"input-float"),"int"==a?c.change(this.inputInt.bind(this)):c.change(this.inputFloat.bind(this)),c;case"boolean":return c=$('
'),c.change(this.inputBoolean.bind(this)),c;case"object":return c=$(''),c.on("change, keyup",this.inputObject.bind(this)),c;case"bang":return c=$(''),c.click(this.inputBang.bind(this)),c;default:return c=$(''),c.change(this.inputString.bind(this)),c}},setInputValue:function(a,b,c){return a?"SELECT"===a[0].tagName?($("option",a).each(function(){var a=$(this).data("val");$(this).prop("selected",a==c)}),void 0):"boolean"===b?(a.prop("checked",c),void 0):"object"===b?(a.text(JSON.stringify(c,null,2)),void 0):(a.val(c),void 0):void 0},inputSelect:function(a){var b=$(a.target).find(":selected").data("val");this.model.parentNode.setState(this.model.id,b)},inputInt:function(a){this.model.parentNode.setState(this.model.id,parseInt($(a.target).val(),10))},inputFloat:function(a){this.model.parentNode.setState(this.model.id,parseFloat($(a.target).val()))},inputString:function(a){this.model.parentNode.setState(this.model.id,$(a.target).val())},inputBoolean:function(a){this.model.parentNode.setState(this.model.id,$(a.target).prop("checked"))},inputObject:function(a){try{var b=JSON.parse($(a.target).text());this.model.parentNode.setState(this.model.id,b)}catch(c){}},inputBang:function(){this.model.parentNode.setBang(this.model.id)},render:function(){return this},newEdgeStart:function(a,b){if(b){a.stopPropagation(),b.helper.data({route:this.topRoute}),this.previewEdgeNew=new c.Model({target:{node:this.model.parentNode.id,port:this.model.id},parentGraph:this.model.parentNode.parentGraph,preview:!0,route:this.topRoute}),this.previewEdgeNewView=new c.View({model:this.previewEdgeNew});var d=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];d.appendChild(this.previewEdgeNewView.el),e=this.model.parentNode.parentGraph.get("zoom")}},newEdgeDrag:function(a,b){if(this.previewEdgeNewView&&b){a.stopPropagation(),b.position.top=a.clientY/e,b.position.left=a.clientX/e;var c=this.model.parentNode.parentGraph.view.el;b.position.left+=c.scrollLeft,b.position.top+=c.scrollTop,this.previewEdgeNewView.render({left:b.position.left-c.scrollLeft,top:b.position.top-c.scrollTop}),this.model.parentNode.parentGraph.view.sizeSVG()}},newEdgeStop:function(a){a.stopPropagation(),this.previewEdgeNewView.remove(),delete this.previewEdgeNew,delete this.previewEdgeNewView},getTopEdge:function(){var a,b=-1;return this.isConnected&&(this.model.parentNode.parentGraph.edges.each(function(c){var d=c.get("z");c.target===this.model&&d>b&&(a=c,b=d),c.view&&c.view.unhighlight()},this),a&&a.view&&a.view.bringToTop()),a},changeEdgeStart:function(a,b){if(b&&(a.stopPropagation(),this.isConnected)){var d=this.getTopEdge();if(d){d.remove(),b&&b.helper.data({port:d.source,route:d.get("route")}),this.previewEdgeChange=new c.Model({source:d.get("source"),route:d.get("route"),parentGraph:this.model.parentNode.parentGraph,preview:!0}),this.previewEdgeChangeView=new c.View({model:this.previewEdgeChange});var f=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];f.appendChild(this.previewEdgeChangeView.el),e=this.model.parentNode.parentGraph.get("zoom")}}},changeEdgeDrag:function(a,b){b&&(a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.render(b.offset),this.model.parentNode.parentGraph.view.sizeSVG()))},changeEdgeStop:function(a){a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.remove(),delete this.previewEdgeChange,delete this.previewEdgeChangeView)},connectEdge:function(a,b){var c=b.helper.data("port"),d=this.model.parentNode.parentGraph.edges.length;if(c.parentNode.parentGraph.dataflow!==this.model.parentNode.parentGraph.dataflow)return!1;if(this.model.canConnect()){var e=0;void 0!==b.helper.data("route")&&(e=b.helper.data("route")),this.model.parentNode.parentGraph.edges.add({id:c.parentNode.id+":"+c.id+"::"+this.model.parentNode.id+":"+this.model.id,parentGraph:this.model.parentNode.parentGraph,source:{node:c.parentNode.id,port:c.id},target:{node:this.model.parentNode.id,port:this.model.id},route:e}),b.helper.data("removeChangeEdge",db&&(a=c,b=d)}},this),a)this.bringToTop(a);else{try{this.$(".dataflow-port-plug").draggable("disable")}catch(c){}this.$(".dataflow-port-plug, .dataflow-port-hole").removeClass("active"),this.isConnected=!1}},topRoute:0,bringToTop:function(a){var b=a.get("route");void 0!==b&&(this.$(".dataflow-port-hole, .dataflow-port-plug").removeClass("route"+this.topRoute),this.$(".dataflow-port-hole, .dataflow-port-plug").addClass("route"+b),this.topRoute=b)}}),b.CollectionView=Backbone.CollectionView.extend({tagName:"ul",itemView:b.View})}(Dataflow),function(a){var b=a.prototype.module("output"),c=a.prototype.module("edge"),d='<%= label %>',e=1;b.View=Backbone.View.extend({template:_.template(d),tagName:"li",className:"dataflow-port dataflow-out",events:{click:"getTopEdge",drop:"connectEdge","dragstart .dataflow-port-hole":"newEdgeStart","drag .dataflow-port-hole":"newEdgeDrag","dragstop .dataflow-port-hole":"newEdgeStop","dragstart .dataflow-port-plug":"changeEdgeStart","drag .dataflow-port-plug":"changeEdgeDrag","dragstop .dataflow-port-plug":"changeEdgeStop"},initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.$el.addClass(this.model.get("type")),this.parent=a.parent;var b=this.parent.model,c=b.parentGraph;if(this.listenTo(b,"change:x change:y change:w",function(){this._holePosition=null}.bind(this)),this.listenTo(c,"change:panX change:panY",function(){this._holePosition=null}.bind(this)),this.model.parentNode.parentGraph.dataflow.editable){var d=this;this.$(".dataflow-port-plug").draggable({cursor:"pointer",helper:function(){var a=$('');return d.parent.graph.$el.append(a),a},disabled:!0,distance:10,delay:100}),this.$(".dataflow-port-hole").draggable({cursor:"pointer",helper:function(){var a=$('').data({port:d.model});return d.parent.graph.$el.append(a),a}}),this.$el.droppable({accept:".dataflow-port-plug.out, .dataflow-port-hole.in",activeClassType:"droppable-hover"})}},render:function(){return this},newEdgeStart:function(a,b){if(a.stopPropagation(),b){b.helper.data({route:this.topRoute}),this.previewEdge=new c.Model({source:{node:this.model.parentNode.id,port:this.model.id},parentGraph:this.model.parentNode.parentGraph,preview:!0,route:this.topRoute}),this.previewEdgeView=new c.View({model:this.previewEdge});var d=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];d.appendChild(this.previewEdgeView.el),e=this.model.parentNode.parentGraph.get("zoom")}},newEdgeDrag:function(a,b){if(a.stopPropagation(),this.previewEdgeView&&b){b.position.top=a.clientY/e,b.position.left=a.clientX/e;var c=this.model.parentNode.parentGraph.view.el;b.position.left+=c.scrollLeft,b.position.top+=c.scrollTop,this.previewEdgeView.render({left:b.position.left-c.scrollLeft,top:b.position.top-c.scrollTop})}},newEdgeStop:function(a){a.stopPropagation(),this.previewEdgeView.remove(),delete this.previewEdge,delete this.previewEdgeView},getTopEdge:function(){var a,b=-1;return this.isConnected&&(this.model.parentNode.parentGraph.edges.each(function(c){var d=c.get("z");c.source===this.model&&d>b&&(a=c,b=d),c.view&&c.view.unhighlight()},this),a&&a.view&&a.view.bringToTop()),a},changeEdgeStart:function(a,b){if(b&&(a.stopPropagation(),this.isConnected)){var d=this.getTopEdge();if(d){d.remove(),b&&b.helper.data({port:d.target,route:d.get("route")}),this.previewEdgeChange=new c.Model({target:d.get("target"),route:d.get("route"),parentGraph:this.model.parentNode.parentGraph,preview:!0}),this.previewEdgeChangeView=new c.View({model:this.previewEdgeChange});var f=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];f.appendChild(this.previewEdgeChangeView.el),e=this.model.parentNode.parentGraph.get("zoom")}}},changeEdgeDrag:function(a,b){b&&(a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.render(b.offset),this.model.parentNode.parentGraph.view.sizeSVG()))},changeEdgeStop:function(a){a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.remove(),delete this.previewEdgeChange,delete this.previewEdgeChangeView)},connectEdge:function(a,b){var c=b.helper.data("port"),d=this.model.parentNode.parentGraph.edges.length;if(c.parentNode.parentGraph.dataflow!==this.model.parentNode.parentGraph.dataflow)return!1;if(this.model.canConnect()){var e=0;void 0!==b.helper.data("route")&&(e=b.helper.data("route")),this.model.parentNode.parentGraph.edges.add({id:this.model.parentNode.id+":"+this.model.id+"::"+c.parentNode.id+":"+c.id,parentGraph:this.model.parentNode.parentGraph,source:{node:this.model.parentNode.id,port:this.model.id},target:{node:c.parentNode.id,port:c.id},route:e}),b.helper.data("removeChangeEdge",db&&(a=c,b=d)}},this),a)this.bringToTop(a);else{try{this.$(".dataflow-port-plug").draggable("disable")}catch(c){}this.$(".dataflow-port-plug, .dataflow-port-hole").removeClass("active"),this.isConnected=!1}},topRoute:0,bringToTop:function(a){var b=a.get("route");void 0!==b&&(this.$(".dataflow-port-hole").removeClass("route"+this.topRoute),this.$(".dataflow-port-hole").addClass("route"+b),this.topRoute=b)}}),b.CollectionView=Backbone.CollectionView.extend({tagName:"ul",itemView:b.View})}(Dataflow),function(a){var b=a.prototype.module("edge"),c=function(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)"xlink:href"===d?c.setAttributeNS("http://www.w3.org/1999/xlink","href",b[d]):c.setAttribute(d,b[d]);return c},d=function(a,b){a.classList?a.classList.add(b):a.className="dataflow-edge "+b},e=function(a,b){a.classList?a.classList.remove(b):a.className="dataflow-edge"};b.View=Backbone.View.extend({tagName:"div",className:"dataflow-edge",positions:null,initialize:function(){this.positions={from:null,to:null},this.model.source&&this.model.source.parentNode.on("change:x change:y change:w",this.render,this),this.model.target&&this.model.target.parentNode.on("change:x change:y",this.render,this),this.model.source&&this.model.source.view&&(this.model.source.view.plugSetActive(),this.model.source.view.bringToTop(this.model)),this.model.target&&this.model.target.view&&(this.model.target.view.plugSetActive(),this.model.target.view.bringToTop(this.model)),this.el=c("g",{"class":"dataflow-edge"}),this.elEdge=c("path",{"class":"dataflow-edge-wire"}),this.elShadow=c("path",{"class":"dataflow-edge-shadow"}),void 0!==this.model.get("route")&&this.elEdge.setAttribute("class","dataflow-edge-wire route"+this.model.get("route"));var a=this;this.model.on("change:route",function(){a.elEdge.setAttribute("class","dataflow-edge-wire route"+a.model.get("route")),a.bringToTop()}),this.el.appendChild(this.elShadow),this.el.appendChild(this.elEdge),this.el.addEventListener("click",function(b){a.click(b)}),this.listenTo(this.model,"change:selected",this.selectedChange),this.listenTo(this.model,"remove",this.hideInspector)},render:function(a){var b,c=this.model.source,d=this.model.target;c?this.positions.from=c.view.holePosition():(b=this.model.parentGraph.dataflow.$el.parent().position(),graph=this.model.parentGraph.view.$el,this.positions.from={left:graph.scrollLeft()+a.left-5-b.left,top:graph.scrollTop()+a.top+5-b.top}),d?this.positions.to=d.view.holePosition():(b=this.model.parentGraph.dataflow.$el.parent().position(),graph=this.model.parentGraph.view.$el,this.positions.to={left:graph.scrollLeft()+a.left+15-b.left,top:graph.scrollTop()+a.top+5-b.top});var e=this.edgePath(this.positions);this.elEdge.setAttribute("d",e),this.elShadow.setAttribute("d",e),this.model.parentGraph&&this.model.parentGraph.view&&this.model.parentGraph.view.sizeSVG()},fade:function(){this.model.source.parentNode.get("selected")||this.model.target.parentNode.get("selected")||d(this.el,"fade")},unfade:function(){e(this.el,"fade")},selectedChange:function(){this.model.get("selected")?(this.highlight(),this.showInspector()):(this.unhighlight(),this.hideInspector()),this.model.parentGraph.trigger("selectionChanged")},highlight:function(){d(this.el,"highlight")},unhighlight:function(){e(this.el,"highlight")},edgePath:function(a){var b=20,c=a.to.left-b-(a.from.left+b),d=Math.floor(c/2),e=c-d,f=a.to.top-a.from.top,g=Math.floor(f/2),h=f-g,i="",j="";return Math.abs(f)>Math.abs(c)?f>0?c>0?(i=" L "+(a.from.left+b+d)+" "+(a.from.top+d),j=" L "+(a.to.left-b-e)+" "+(a.to.top-e)):0>c&&(i=" L "+(a.from.left+b+d)+" "+(a.from.top-d),j=" L "+(a.to.left-b-e)+" "+(a.to.top+e)):0>f&&(c>0?(i=" L "+(a.from.left+b+d)+" "+(a.from.top-d),j=" L "+(a.to.left-b-e)+" "+(a.to.top+e)):0>c&&(i=" L "+(a.from.left+b+d)+" "+(a.from.top+d),j=" L "+(a.to.left-b-e)+" "+(a.to.top-e))):Math.abs(f)0?f>0?(i=" L "+(a.from.left+b+g)+" "+(a.from.top+g),j=" L "+(a.to.left-b-h)+" "+(a.to.top-h)):0>f&&(i=" L "+(a.from.left+b-g)+" "+(a.from.top+g),j=" L "+(a.to.left-b+h)+" "+(a.to.top-h)):0>c&&(f>0?(i=" L "+(a.from.left+b-g)+" "+(a.from.top+g),j=" L "+(a.to.left-b+h)+" "+(a.to.top-h)):0>f&&(i=" L "+(a.from.left+b+g)+" "+(a.from.top+g),j=" L "+(a.to.left-b-h)+" "+(a.to.top-h)))),"M "+a.from.left+" "+a.from.top+" L "+(a.from.left+b)+" "+a.from.top+i+j+" L "+(a.to.left-b)+" "+a.to.top+" L "+a.to.left+" "+a.to.top},remove:function(){var a=this.model.source,b=this.model.target;a&&a.parentNode.off(null,null,this),b&&b.parentNode.off(null,null,this),a&&a.view.plugCheckActive(),b&&b.view.plugCheckActive(),this.el.parentNode.removeChild(this.el)},click:function(a){a&&a.stopPropagation();var b;a&&(a.ctrlKey||a.metaKey)?(b=this.model.get("selected"),b=!b):(b=!0,this.model.parentGraph.nodes.invoke("set",{selected:!1}),this.model.collection.invoke("set",{selected:!1})),this.model.set({selected:b}),b&&(this.bringToTop(),this.model.trigger("select"),this.unfade()),this.model.parentGraph.view.fade()},bringToTop:function(){this.model.bringToTop();var a=this.el.parentNode;a&&a.appendChild(this.el),this.model.source.view.bringToTop(this.model),this.model.target.view.bringToTop(this.model)},inspector:null,getInspector:function(){if(!this.inspector){var c=new b.InspectView({model:this.model}),d=a.prototype.module("card");this.inspector=new d.Model({dataflow:this.model.parentGraph.dataflow,card:c})}return this.inspector},showInspector:function(a){this.model.parentGraph.dataflow.addCard(this.getInspector(),a)},hideInspector:function(){this.model.parentGraph.dataflow.removeCard(this.getInspector())}})}(Dataflow),function(a){var b=a.prototype.module("card");b.Model=Backbone.Model.extend({defaults:{pinned:!1},initialize:function(){this.dataflow=this.get("dataflow")},hide:function(){this.dataflow.shownCards.remove(this)}}),b.Collection=Backbone.Collection.extend({model:b.Model})}(Dataflow),function(a){var b=a.prototype.module("card"),c='
';b.View=Backbone.View.extend({tagName:"div",className:"dataflow-card",template:_.template(c),events:{"click .dataflow-card-pin":"togglePin","click .dataflow-card-close":"hide"},initialize:function(){this.$el.html(this.template()),this.card=this.model.get("card"),this.$el.append(this.card.el),this.listenTo(this.model,"change:pinned",this.pinnedChanged),this.pinnedChanged()},animate:function(a){"function"==typeof this.card.animate&&this.card.animate(a)},togglePin:function(){var a=!this.model.get("pinned");this.model.set("pinned",a),a||this.hide()},pinnedChanged:function(){this.model.get("pinned")?this.$(".dataflow-card-pin").addClass("active"):this.$(".dataflow-card-pin").removeClass("active")},hide:function(){this.model.hide()},remove:function(){this.$el.detach()}}),window.requestAnimationFrame||(window.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,50)}}()),b.CollectionView=Backbone.CollectionView.extend({tagName:"div",className:"dataflow-cards",itemView:b.View,prepend:!0,initialize:function(){Backbone.CollectionView.prototype.initialize.apply(this,arguments);var a=function(b){window.requestAnimationFrame(a),this.collection.each(function(a){a.view&&a.view.animate(b)})}.bind(this);a()},bringToTop:function(a){this.$el.prepend(a.view.el)}})}(Dataflow),function(a){var b=Backbone.Model.extend({defaults:{label:"",icon:"",action:null}}),c=Backbone.Collection.extend({model:b}),d=a.prototype.module("card"),e=a.prototype.module("menucard");e.Model=d.Model.extend({initialize:function(){this.menu=new c,d.Model.prototype.initialize.call(this)}})}(Dataflow),function(a){var b=a.prototype.module("card"),c=a.prototype.module("menucard"),d=Backbone.View.extend({tagName:"li",template:'',events:{click:"clicked"},render:function(){this.$el.html(_.template(this.template,this.model.toJSON()))},clicked:function(){this.model.get("action")&&this.model.get("action")()}});c.View=b.View.extend({initialize:function(){this.model.set("card",new Backbone.CollectionView({tagName:"ul",className:"dataflow-menu",collection:this.model.menu,itemView:d})),b.View.prototype.initialize.call(this)}})}(Dataflow),function(a){var b=a.prototype.module("node"),c='

<%- label %>

<%- type %>

',d=function(a,b,c){a[0].contentEditable=!0;var d=a.text(),e=function(){b.set(c,a.text())},f=function(){a.text(d)};a.focus(function(){d=a.text()}).blur(function(){e()}).keydown(function(b){27===b.which?(f(),a.blur()):13===b.which&&a.blur()})};b.InspectView=Backbone.View.extend({template:_.template(c),className:"dataflow-node-inspector",events:{},initialize:function(){this.$el.html(this.template(this.model.toJSON()));var a=this.$el.children(".dataflow-node-inspector-inputs");this.model.inputs.each(function(b){b.view&&b.view.$input&&a.append(b.view.$input)},this),d(this.$(".dataflow-node-inspector-label"),this.model,"label")},render:function(){return this},removeModel:function(){this.model.remove()}})}(Dataflow),function(a){var b=a.prototype.module("edge"),c='

Edge

<%= id %>

    ';b.InspectView=Backbone.View.extend({tagName:"div",className:"dataflow-edge-inspector",positions:null,template:_.template(c),initialize:function(){var a=this.model.toJSON();this.model.id&&(a.id=this.model.id.replace("->","→")),this.$el.html(this.template(a));var b=this.$el.children(".dataflow-edge-inspector-route-choose");this.$log=this.$el.children(".dataflow-edge-inspector-events");for(var c=function(a){var b=$(a.target).data("route");this.model.set("route",b)}.bind(this),d=0;12>d;d++){var e=$("



    ');h.children(".selectall").click(c),b.selectAll=c,b.removeSelected=function(){var b=a.currentGraph.nodes.where({selected:!0});_.each(b,function(a){a.remove()})},h.children(".cut").click(d),b.cut=d,b.removeEdge=e;var i={};h.children(".copy").click(f),b.copy=f,h.children(".paste").click(g),b.paste=g,a.addContext({id:"cut",icon:"cut",label:"cut",action:d,contexts:["node","nodes"]}),a.addContext({id:"copy",icon:"copy",label:"copy",action:f,contexts:["node","nodes"]}),a.addContext({id:"paste",icon:"paste",label:"paste",action:g,contexts:["node","nodes"]}),a.addContext({id:"edgeRemove",icon:"remove",label:"remove edge",action:e,contexts:["edge"]}),a.addContext({id:"edgeRemove",icon:"remove",label:"remove edges",action:e,contexts:["edges"]}),b.onSearch=function(b,c){if(a.currentGraph){var d=[];a.currentGraph.nodes.each(function(a){-1!==a.get("label").toLowerCase().indexOf(b.toLowerCase())&&d.push({source:"edit",icon:"sign-blank",label:a.get("label"),description:a.type,action:function(){a.view.select()}})}),c(d)}}}}(Dataflow),function(a){var b=a.prototype.plugin("elements");b.list=[{type:"div",attributes:["id","class","style"],events:["pointermove","pointerover","pointerout"]},{type:"button",attributes:["id","class","style"],events:["pointerdown","pointerup"]}]}(Dataflow),function(a){var b=a.prototype.plugin("library");b.initialize=function(a){var c=$('
    '),d=$('
      ');c.append(d),b.excluded=["base","base-resizable"];var e=function(b,c,d){return function(){a.currentGraph.view.$(".dataflow-node").removeClass("ui-selected"),zoom=a.currentGraph.get("zoom");for(var e=1;a.currentGraph.nodes.get(e);)e++;c=void 0===c?200:c,d=void 0===d?200:d,c=c/zoom-a.currentGraph.get("panX"),d=d/zoom-a.currentGraph.get("panY");var f=new b.Model({id:e,x:c,y:d,parentGraph:a.currentGraph});a.currentGraph.nodes.add(f),f.view.select()}},f='
    • <%- name %><%-description %>
    • ',g=function(b,c){var g=$(_.template(f,{name:b,description:c.description}));$(".button",g).attr("title","click or drag").draggable({helper:function(){var c=$('
      '+b+"
      ");return a.$el.append(c),c},stop:function(a,b){e(c,b.position.left,b.position.top).call()}}).click(e(c)),d.append(g)},h=function(c){c=c?c:{},b.excluded=c.exclude?c.exclude:b.excluded,d.empty();var e=_.sortBy(Object.keys(a.nodes),function(a){return a});_.each(e,function(c){-1===b.excluded.indexOf(c)&&g(c,a.nodes[c])})};h(),a.addPlugin({id:"library",label:"library",name:"",menu:c,icon:"plus",pinned:!1}),b.update=h,b.onSearch=function(c,d){var f=[];_.each(a.nodes,function(a,d){-1===b.excluded.indexOf(d)&&-1!==d.toLowerCase().indexOf(c.toLowerCase())&&f.push({source:"library",icon:"plus",action:function(){e(a).call()},label:d,description:a.description})}),d(f)}}}(Dataflow),function(a){var b=a.prototype.plugin("source");b.updateAllowed=!0,b.initialize=function(a){var c=$('

      '),d=c.find(".code");a.addPlugin({id:"source",label:"view source",name:"",menu:c,icon:"code",pinned:!0}),b.show=function(a){var b=d.prop("scrollTop");d.val(a),d.scrollTop(b)};var e=function(){a.graph&&b.show(JSON.stringify(a.graph.toJSON(),null," "))};b.listeners=function(b){b?a.on("change",e):a.off("change",e)},b.listeners(!0),b.allowUpdate=function(a){var e=c.find(".apply");return a?(b.updateAllowed=!0,e.show(),d.removeAttr("readonly"),void 0):(b.updateAllowed=!1,e.hide(),d.attr("readonly","readonly"),void 0)},c.submit(function(){return b.updateGraph(d,a),!1})},b.updateGraph=function(a,c){if(b.updateAllowed){var d;try{d=JSON.parse(a.val())}catch(e){return c.log("Invalid JSON"),!1}if(d){var f=c.loadGraph(d);f.trigger("change")}}}}(Dataflow),function(a){var b=a.prototype.plugin("log");b.initialize=function(a){function c(a){a=_.escape(a),d.children(".loglist").append("
    • "+a+"
    • "),d.scrollTop(d.prop("scrollHeight"))}var d=$('
        ');a.addPlugin({id:"log",label:"log",name:"",menu:d,icon:"th-list",pinned:!0}),b.add=c;var e=function(a){c("log: "+a)},f=function(a,b){c("node added: "+b.toString())},g=function(a,b){c("node removed: "+b.toString())},h=function(a,b){c("edge added: "+b.toString())},i=function(a,b){c("edge removed: "+b.toString())};b.listeners=function(b){b?(a.on("log",e),a.on("node:add",f),a.on("node:remove",g),a.on("edge:add",h),a.on("edge:remove",i)):(a.off("log",e),a.off("node:add",f),a.off("node:remove",g),a.off("edge:add",h),a.off("edge:remove",i))},b.listeners(!0)}}(Dataflow),function(a){var b=a.prototype.plugin("inspector");b.initialize=function(a){function b(){var b=a.currentGraph.nodes.where({selected:!0});b.forEach(function(b){var c=b.view.getInspector();c.set("pinned",!0),a.addCard(c)});var c=a.currentGraph.edges.where({selected:!0});c.forEach(function(b){var c=b.view.getInspector();c.set("pinned",!0),a.addCard(c)})}a.addContext({id:"inspector",icon:"info-sign",label:"inspect",action:b,contexts:["one","twoplus"]})}}(Dataflow),function(a){var b=a.prototype.plugin("keybinding"),c=a.prototype.plugin("edit");b.initialize=function(a){function d(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomIn()}function e(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomOut()}function f(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomCenter()}function g(a){if("TEXTAREA"!==a.target.tagName&&"INPUT"!==a.target.tagName&&"true"!==a.target.contentEditable&&(a.ctrlKey||a.metaKey))switch(a.which){case 189:a.preventDefault(),d();break;case 187:a.preventDefault(),e();break;case 48:a.preventDefault(),f();break;case 65:c.selectAll();break;case 88:c.cut();break;case 67:c.copy();break;case 86:c.paste();break;case 90:}}b.listeners=function(a){a?$(document).on("keydown",g):$(document).off("keydown",g)},b.listeners(!0)}}(Dataflow),function(a){var b=a.prototype.plugin("notification"),c=window.webkitNotifications?!0:!1;b.requestPermission=function(){c&&(b.hasPermission()||window.webkitNotifications.requestPermission())},b.hasPermission=function(){return c?0!==window.webkitNotifications.checkPermission()?!1:!0:!1},b.notify=function(a,c,d){if(!b.hasPermission()){if(!console||!console.log)return;return console.log(c+": "+d),void 0}var e=window.webkitNotifications.createNotification(a,c,d);e.show()}}(Dataflow),function(a){var b=a.prototype.plugin("search"),c=Backbone.Model.extend({defaults:{source:"",icon:"",action:null,label:"",description:""}}),d=Backbone.Collection.extend({model:c,initialize:function(a,b){b||(b={}),this.search=b.search}}),e=Backbone.View.extend({tagName:"li",template:'<%- label %><%- description %>',events:{click:"clicked"},render:function(){this.$el.html(_.template(this.template,this.model.toJSON()))},clicked:function(){this.model.get("action")&&this.model.get("action")()}});b.initialize=function(a){var c=$(''),d=c.find("input"),e=c.find("button");a.$el.prepend(c),d.on("keyup search webkitspeechchange",function(){return d.val()?(b.search(d.val(),a),void 0):(a.removeCard("searchresults"),void 0)}),e.on("click",function(){a.showPlugin("menu")})},b.search=function(c,f){var g=a.prototype.module("card"),h=new d([],{search:c}),i=new Backbone.CollectionView({tagName:"ul",className:"dataflow-plugin-search-results",collection:h});i.itemView=e;var j=new g.Model({id:"searchresults",dataflow:f,card:i,pinned:!1});h.on("add",function(){f.addCard(j)}),b.results=h,_.each(f.plugins,function(a){a.onSearch&&b.searchPlugin(h,c,a)})},b.searchPlugin=function(a,c,d){d.onSearch(c,function(d){c===b.results.search&&d.forEach(function(b){a.add(b)})})}}(Dataflow),function(a){var b=a.prototype.module("node"),c=a.prototype.node("base");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.type="base",a},initialize:function(){b.Model.prototype.initialize.call(this)},unload:function(){},inputs:[],outputs:[]}),c.View=b.View.extend({})}(Dataflow),function(a){var b=a.prototype.node("base"),c=a.prototype.node("base-resizable");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.type="base-resizable",a.w=200,a.h=200,a},initialize:function(){b.Model.prototype.initialize.call(this)},unload:function(){},toJSON:function(){var a=b.Model.prototype.toJSON.call(this);return a.w=this.get("w"),a.h=this.get("h"),a},inputs:[],outputs:[]}),c.View=b.View.extend({initialize:function(a){b.View.prototype.initialize.call(this,a),this.$el.css({width:this.model.get("w"),height:this.model.get("h")});var c=this;this.$el.resizable({helper:"dataflow-node helper",minHeight:100,minWidth:120,stop:function(a,b){c.resizeStop(a,b)}})},resizeStop:function(a,b){this.model.set({w:b.size.width,h:b.size.height})}})}(Dataflow),function(a){var b=a.prototype.node("base-resizable"),c=a.prototype.node("dataflow-subgraph"),d=a.prototype.module("graph"),e=a.prototype.module("input"),f=a.prototype.module("output");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.label="subgraph",a.type="dataflow-subgraph",a.graph={nodes:[{id:"1",label:"in",type:"dataflow-input",x:180,y:15},{id:"99",label:"out",type:"dataflow-output",x:975,y:500}]},a},initialize:function(){b.Model.prototype.initialize.call(this);var a=this.get("graph");a.parentNode=this,a.dataflow=this.parentGraph.dataflow,this.graph=new d.Model(a);var c=this.graph.nodes.filter(function(a){return"dataflow-input"===a.type});_.each(c,this.addInput,this);var e=this.graph.nodes.filter(function(a){return"dataflow-output"===a.type});_.each(e,this.addOutput,this),this.graph.nodes.on("add",function(a){"dataflow-input"===a.type?this.addInput(a):"dataflow-output"===a.type&&this.addOutput(a)},this),this.graph.nodes.on("remove",function(a){"dataflow-input"===a.type?this.removeInput(a):"dataflow-output"===a.type&&this.removeOutput(a)},this)},addInput:function(a){var b=new e.Model({id:a.id,label:a.get("label"),type:a.get("input-type"),parentNode:this,inputNode:a});this.inputs.add(b)},recieve:function(a,b){var c=this.inputs.get(a).get("inputNode");c&&c.send("data",b)},addOutput:function(a){var b=new f.Model({id:a.id,label:a.get("label"),type:a.get("output-type"),parentNode:this,outputNode:a});this.outputs.add(b),a.set("parentNode",this)},removeInput:function(a){var b=this.inputs.get(a.id);b.remove(),this.inputs.remove(b)},removeOutput:function(a){var b=this.outputs.get(a.id);b.remove(),this.outputs.remove(b)},toJSON:function(){var a=b.Model.prototype.toJSON.call(this);return a.graph=this.graph,a},remove:function(){b.Model.prototype.remove.call(this),this.graph.remove()},inputs:[],outputs:[]});var g='';c.View=b.View.extend({events:function(){var a=b.View.prototype.events.call(this);return a["click .show-subgraph"]="showSubgraph",a},innerTemplate:_.template(g),initialize:function(a){b.View.prototype.initialize.call(this,a),this.model.graph.view=new d.View({model:this.model.graph}),this.model.inputs.each(this.addInput,this),this.model.inputs.on("add",this.addInput,this),this.model.outputs.each(this.addOutput,this),this.model.outputs.on("add",this.addOutput,this)},addInput:function(a){a.get("inputNode")&&a.get("inputNode").on("change:label",function(b){a.view.$(".label").text(b.get("label"))},this)},addOutput:function(a){a.get("outputNode")&&a.get("outputNode").on("change:label",function(b){a.view.$(".label").text(b.get("label"))},this)},showSubgraph:function(){this.model.graph.dataflow.showGraph(this.model.graph)}})}(Dataflow); +function CircularBuffer(a){this._array=new Array(a),this.length=0}CircularBuffer.prototype.toString=function(){return"[object CircularBuffer("+this._array.length+") length "+this.length+"]"},CircularBuffer.prototype.get=function(a){return 0>a||aa||athis.length;)this._array[this.length%this._array.length]=void 0,this.length++;this._array[a%this._array.length]=b,a==this.length&&this.length++},CircularBuffer.prototype.push=function(a){this._array[this.length%this._array.length]=a,this.length++},CircularBuffer.IndexError={},function(){var a=Backbone.Model.extend({$:function(a){return this.$el.find(a)},initialize:function(){this.el=document.createElement("div"),this.el.className="dataflow",this.$el=$(this.el),this.$el.data("dataflow",this);var a=Dataflow.prototype.module("card");if(this.shownCards=new a.Collection,this.shownCards.view=new a.CollectionView({collection:this.shownCards}),this.$el.append(this.shownCards.view.$el),this.debug=this.get("debug"),this.controls=this.get("controls"),this.controls!==!1&&(this.controls=!0),this.controls)for(var b in this.plugins)this.plugins[b].initialize&&this.plugins[b].initialize(this);this.inputs=this.get("inputs"),this.inputs!==!1&&(this.inputs=!0),this.editable=this.get("editable"),this.editable!==!1&&(this.editable=!0);var c=this.get("appendTo");c=c?c:"body","body"===c&&$("html, body").css({margin:"0px",padding:"0px",width:"100%",height:"100%"}),$(c).append(this.el),this.id||(this.id=$(c).attr("id")),this.loadState()},modules:{},module:function(a){return this.modules[a]?this.modules[a]:(this.modules[a]={},this.modules[a])},nodes:{},node:function(a){return this.nodes[a]?this.nodes[a]:(this.nodes[a]={description:""},this.nodes[a])},plugins:{},plugin:function(a){return this.plugins[a]?this.plugins[a]:(this.plugins[a]={},this.plugins[a])},addCard:function(a,b){b||this.hideCards(),this.shownCards.get(a)?this.shownCards.view.bringToTop(a):this.shownCards.add(a)},removeCard:function(a){this.shownCards.remove(a)},hideCards:function(){var a=this.shownCards.where({pinned:!1});this.shownCards.remove(a)},addPlugin:function(a){var b=this.plugins[a.id];if(b||(this.plugins[a.id]=b={}),b.info=a,b.enabled=!0,a.menu){var c=Dataflow.prototype.module("card"),d=new c.Model({dataflow:this,card:{el:a.menu},pinned:a.pinned?!0:!1});b.card=d,this.plugins.menu.addPlugin({id:a.id,icon:a.icon,label:a.label,showLabel:!1})}},showPlugin:function(a){this.plugins[a]&&this.plugins[a].card&&(this.addCard(this.plugins[a].card),"function"==typeof this.plugins[a].onShow&&this.plugins[a].onShow())},enablePlugin:function(a){var b=this.plugins[a];b&&this.addPlugin(b.info)},disablePlugin:function(a){this.plugins.menu.disablePlugin(a)},showContextBar:function(){this.contextBar.view.$el.show()},hideContextBar:function(){this.contextBar.view.$el.hide()},contexts:{},prepareContext:function(a){if(this.contexts[a])return this.contexts[a];var b=this.module("menucard");return this.contexts[a]=new b.Model({id:"context-"+a,dataflow:this,pinned:!0}),this.contexts[a].view=new b.View({model:this.contexts[a]}),this.contexts[a]},addContext:function(a){_.each(a.contexts,function(b){var c=this.prepareContext(b);c.menu.add(a)},this)},changeContext:function(a,b){var c=function(a,b){this.contexts[a]&&(this.contexts[a].set("label",b),this.shownCards.get("context-"+a)||this.shownCards.add(this.contexts[a]))}.bind(this),d=function(a){this.shownCards.get("context-"+a)&&this.shownCards.remove("context-"+a)}.bind(this);a.length>1?(c("nodes",a.length+" nodes"),d("node")):1===a.length?(c("node",a[0].get("label")),d("nodes")):(d("node"),d("nodes")),b.length>1?(c("edges",b.length+" edges"),d("edge")):1===b.length?(c("edge",b[0].id),d("edges")):(d("edge"),d("edges"))},loadGraph:function(a){this.graph&&(this.currentGraph.view&&this.currentGraph.view.remove(),this.graph.view&&this.graph.view.remove(),this.graph.remove());var b=this.module("graph");a.dataflow=this;var c=new b.Model(a);return c.view=new b.View({model:c}),this.$el.append(c.view.render().el),this.graph=this.currentGraph=c,c},showGraph:function(a){this.currentGraph.view.$el.detach(),this.$el.append(a.view.el),a.view.render(),this.currentGraph=a},debug:!1,log:function(a){this.trigger("log",a,arguments),this.debug&&console.log("Dataflow: ",arguments)},types:["all","canvas:2d","canvas:webgl","string","number","int","object","array"]});window.Dataflow=a,"object"==typeof exports&&(exports.Dataflow=a),Backbone.View.prototype.addEvents=function(a){this.delegateEvents(_.extend(_.clone(this.events),a))},Backbone.CollectionView=Backbone.Model.extend({prepend:!1,initialize:function(a){a.tagName&&(this.tagName=a.tagName),a.className&&(this.className=a.className),a.itemView&&(this.itemView=a.itemView),this.el=document.createElement(this.tagName),this.el.className=this.className,this.$el=$(this.el),this.parent=a.parent;var b=this.collection=this.get("collection");b.each(this.addItem,this),b.on("add",this.addItem,this),b.on("remove",this.removeItem,this)},addItem:function(a){a.view||(a.view=new this.itemView({model:a,parent:this.parent}),a.view.render()),this.prepend?this.$el.prepend(a.view.el):this.$el.append(a.view.el)},removeItem:function(a){a.view.remove()}})}(),function(a){var b=Backbone.Model.extend({});a.prototype.loadState=function(){var a="dataflow-"+(this.id?this.id:this.cid),c=JSON.parse(window.localStorage.getItem(a));c||(c={});var d=new b(c);this.set("state",d),d.on("change",function(b){window.localStorage.setItem(a,JSON.stringify(b.toJSON()))})}}(Dataflow),function(a){var b=a.prototype.module("graph"),c=a.prototype.module("node"),d=a.prototype.module("edge");b.Model=Backbone.Model.extend({defaults:{nodes:[],edges:[],panX:0,panY:0,zoom:1},initialize:function(){this.dataflow=this.get("dataflow");var a,b=this.nodes=new c.Collection;b.parentGraph=this,b.on("all",function(){this.trigger("change")},this),b.on("add",function(a){this.dataflow.trigger("node:add",this,a)},this),b.on("remove",function(a){a.remove(),this.dataflow.trigger("node:remove",this,a)},this);var e=this.get("nodes");for(a=0;a0;)this.nodes.remove(this.nodes.at(this.nodes.length-1))},toJSON:function(){return{nodes:this.nodes,edges:this.edges}}})}(Dataflow),function(a){var b=a.prototype.module("node"),c=a.prototype.module("input"),d=a.prototype.module("output");b.Model=Backbone.Model.extend({defaults:function(){return{label:"",description:"",type:"test",x:200,y:100,state:{},selected:!1}},initialize:function(){this.parentGraph=this.get("parentGraph"),this.type=this.get("type"),""===this.get("label")&&this.set({label:this.get("type")});var a=this.inputs;this.inputs=new c.Collection,this.inputs.parentNode=this;for(var b=0;b0;)this.connected[0].remove()}}),b.Collection=Backbone.Collection.extend({model:b.Model})}(Dataflow),function(a){var b=a.prototype.module("input"),c=a.prototype.module("output");c.Model=b.Model.extend({defaults:{id:"output",label:"",type:"all",description:"",multiple:!0}}),c.Collection=Backbone.Collection.extend({model:c.Model})}(Dataflow),function(a){var b=a.prototype.module("edge");b.Model=Backbone.Model.extend({defaults:{z:0,route:0,selected:!1,log:null},initialize:function(){var a,b,c,d=this.get("preview");if(this.parentGraph=this.get("parentGraph"),this.attributes.log=new CircularBuffer(50),d){a=this.get("parentGraph").nodes;var e=this.get("source"),f=this.get("target");e?(b=a.get(this.get("source").node),this.source=b.outputs.get(this.get("source").port)):f&&(c=a.get(this.get("target").node),this.target=c.inputs.get(this.get("target").port))}else{a=this.parentGraph.nodes;try{b=a.get(this.get("source").node),this.source=b.outputs.get(this.get("source").port),c=a.get(this.get("target").node),this.target=c.inputs.get(this.get("target").port)}catch(g){}this.source.connect(this),this.target.connect(this),b.on("send:"+this.source.id,this.send,this),this.bringToTop(),this.on("select",this.select,this)}},select:function(){this.parentGraph.trigger("select:edge",this)},send:function(a){this.target.parentNode.recieve(this.target.id,a)},isConnectedToPort:function(a){return this.source===a||this.target===a},isConnectedToNode:function(a){return this.source.parentNode===a||this.target.parentNode===a},toString:function(){return this.id?this.id:this.get("source").node+":"+this.get("source").port+"::"+this.get("target").node+":"+this.get("target").port},toJSON:function(){return{source:this.get("source"),target:this.get("target"),route:this.get("route")}},bringToTop:function(){var a=0;this.parentGraph.edges.each(function(b){if(b!==this){var c=b.get("z");c>a&&(a=c),b.view&&b.view.unhighlight()}},this),this.set("z",a+1)},remove:function(){this.source.disconnect(this),this.target.disconnect(this),this.collection&&this.collection.remove(this),this.source.parentNode.off("send:"+this.source.id,this.send,this),this.trigger("remove")}}),b.Collection=Backbone.Collection.extend({model:b.Model,comparator:function(a){return a.get("z")}})}(Dataflow),function(a){var b=a.prototype.module("graph");a.prototype.module("node");var c=a.prototype.module("edge"),d=.2,e=1.1;document.createElement("div").style.hasOwnProperty("zoom");var f='
        ';b.View=Backbone.View.extend({template:_.template(f),className:"dataflow-g",events:{"click .dataflow-graph":"deselect","dragstart .dataflow-graph-panzoom":"panStart","drag .dataflow-graph-panzoom":"pan","dragstop .dataflow-graph-panzoom":"panStop","click .dataflow-graph-gotoparent":"gotoParent",mousewheel:"mouseWheel"},initialize:function(){this.$el.html(this.template(this.model.toJSON()));var a=this.model.get("nodes"),b=this.model.get("edges");this.nodes=a.view={},this.model.nodes.each(this.addNode,this),this.model.nodes.on("add",this.addNode,this),this.model.nodes.on("remove",this.removeNode,this),this.edges=b.view={},this.model.edges.each(this.addEdge,this),this.model.edges.on("add",this.addEdge,this),this.model.edges.on("remove",this.removeEdge,this);var c=this.model.get("parentNode");c||this.$(".dataflow-graph-controls").hide(),this.$(".dataflow-graph-panzoom").draggable({helper:function(){var a=$("
        ");return this.model.dataflow.$el.append(a),a}.bind(this)}),this.$graphEl=this.$(".dataflow-graph"),this.graphEl=this.$(".dataflow-graph")[0],this.$graphEl.css({transform:"translate3d(0, 0, 0) scale3d(1, 1, 1) ",transformOrigin:"left top"}),this.bindInteraction()},panStartOffset:null,panStart:function(a,b){b&&(this.panStartOffset=b.offset)},pan:function(a,b){if(b){var c=this.model.get("zoom"),d=b.offset.left-this.panStartOffset.left,e=b.offset.top-this.panStartOffset.top;this.$(".dataflow-graph").css({transform:"translate3d("+d/c+"px, "+e/c+"px, 0)"})}},panStop:function(a,b){this.$(".dataflow-graph").css({transform:"translate3d(0, 0, 0)"});var c=this.model.get("zoom"),d=b.offset.left-this.panStartOffset.left,e=b.offset.top-this.panStartOffset.top;this.model.set({panX:this.model.get("panX")+d/c,panY:this.model.get("panY")+e/c})},tempPanX:0,tempPanY:0,setPanDebounce:_.debounce(function(){this.$(".dataflow-graph").css({transform:"translate3d(0, 0, 0)"}),this.model.set({panX:this.model.get("panX")+this.tempPanX,panY:this.model.get("panY")+this.tempPanY}),this.tempPanX=0,this.tempPanY=0},250),mouseWheel:function(a){a.preventDefault();var b=a.originalEvent;this.tempPanX+=b.wheelDeltaX/6,this.tempPanY+=b.wheelDeltaY/6,this.$(".dataflow-graph").css({transform:"translate3d("+this.tempPanX+"px, "+this.tempPanY+"px, 0)"}),this.setPanDebounce()},gotoParent:function(){var a=this.model.get("parentNode");a&&this.model.dataflow.showGraph(a.parentGraph)},bindInteraction:function(){this.bindZoom(),this.bindScroll()},bindZoom:function(){if(window.Hammer){var a,b,c,f,g,h,i,j,k,l,m=this;Hammer(this.$(".dataflow-graph-panzoom")[0]).on("transformstart",function(d){a=m.model.get("zoom"),b=d.gesture.center.pageX,c=d.gesture.center.pageY,f=b/a,g=c/a;var e=m.$el.offset();k=f-e.left,l=g-e.top,m.$graphEl.css({transformOrigin:f+"px "+g+"px"})}).on("transform",function(f){h=Math.max(d/a,Math.min(f.gesture.scale,e/a)),i=(f.gesture.center.pageX-b)/a,j=(f.gesture.center.pageY-c)/a,m.$graphEl.css({transform:"translate3d("+i+"px,"+j+"px, 0) "+"scale3d("+h+","+h+", 1) "})}).on("transformend",function(){m.$graphEl.css({transform:"translate3d(0, 0, 0) scale3d(1, 1, 1) "});var b=a*h;b=Math.max(d,Math.min(b,e)),m.model.set("zoom",b),k*=b,l*=b,m.model.set({panX:m.model.get("panX")+i,panY:m.model.get("panY")+j}),console.log(m.model.attributes)});var n=function(){var a=m.model.get("zoom"),b=m.zoomClass;m.zoomClass=.5>a?"zoom-tiny":.8>a?"zoom-small":1.3>a?"zoom-normal":"zoom-big",m.$graphEl.removeClass(b).addClass(m.zoomClass),m.graphEl.style.zoom=m.model.get("zoom")};this.model.on("change:zoom",n),1!==this.model.get("zoom")&&n()}},zoomClass:1,zoomIn:function(){var a=this.model.get("zoom"),b=.9*a;b=Math.max(d,b),b!==a&&this.model.set("zoom",b)},zoomOut:function(){var a=this.model.get("zoom"),b=1.1*a;b=Math.min(e,b),b!==a&&this.model.set("zoom",b)},zoomCenter:function(){var a=this.model.get("zoom"),b=1;b!==a&&this.model.set("zoom",1)},bindScroll:function(){},render:function(){var a=this;return _.defer(function(){a.rerenderEdges()},this),this},addNode:function(a){var b=this.model.dataflow.nodes[a.type];if(b&&b.View)a.view=new b.View({model:a,graph:this});else{var c=this.model.dataflow.node("base");a.view=new c.View({model:a,graph:this})}this.nodes[a.id]=a.view,a.view.render(),this.$(".dataflow-nodes").append(a.view.el)},removeNode:function(a){a.view.remove(),this.nodes[a.id]=null,delete this.nodes[a.id]},addEdge:function(a){a.view=new c.View({model:a}),this.edges[a.id]=a.view,a.view.render(),this.$(".dataflow-svg-edges")[0].appendChild(a.view.el)},removeEdge:function(a){a.view&&a.view.remove(),this.edges[a.id]=null,delete this.edges[a.id]},rerenderEdges:function(){_.each(this.edges,function(a){a.render()},this)},sizeSVG:function(){try{var a=this.$(".dataflow-svg-edges")[0],b=a.getBBox(),c=Math.max(Math.round(b.x+b.width+50),50),d=Math.max(Math.round(b.y+b.height+50),50);a.setAttribute("width",c),a.setAttribute("height",d)}catch(e){}},deselect:function(){this.model.nodes.invoke("set",{selected:!1}),this.model.edges.invoke("set",{selected:!1}),this.model.trigger("selectionChanged"),this.unfade(),this.model.dataflow.hideCards()},fade:function(){this.model.nodes.each(function(a){a.view&&(a.get("selected")||a.view.fade())}),this.fadeEdges()},fadeEdges:function(){this.model.edges.each(function(a){a.get("selected")||a.source.parentNode.get("selected")||a.target.parentNode.get("selected")?a.view.unfade():a.view.fade()})},unfade:function(){this.model.nodes.each(function(a){a.view&&a.view.unfade()}),this.model.edges.each(function(a){a.view&&a.view.unfade()})},startHighlightCompatible:function(a,b){this.model.nodes.each(function(c){c.outputs.each(function(c){return c!==a?b?((!c.canConnect()||"all"!==c.type&&c.type!==a.type)&&c.view.blur(),void 0):(c.view.blur(),void 0):void 0}),c.inputs.each(function(c){return c!==a?b?(c.view.blur(),void 0):((!c.canConnect()||"all"!==c.type&&c.type!==a.type)&&c.view.blur(),void 0):void 0})})},stopHighlightCompatible:function(){this.$el.find(".dataflow-port.blur").removeClass("blur")}})}(Dataflow),function(a){var b,c=a.prototype.module("node"),d=a.prototype.module("input"),e=a.prototype.module("output"),f='

        <%- label %>

        ',g="";c.View=Backbone.View.extend({template:_.template(f),innerTemplate:_.template(g),className:"dataflow-node",events:function(){return{"click .dataflow-node-header":"select",dragstart:"dragStart",drag:"drag",dragstop:"dragStop"}},initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.graph=a.graph,this.$el.addClass(this.model.type),this.model.parentGraph.dataflow.editable||this.$(".dataflow-node-edit").hide(),this.inputs=this.model.inputs.view=new d.CollectionView({collection:this.model.inputs,parent:this}),this.outputs=this.model.outputs.view=new e.CollectionView({collection:this.model.outputs,parent:this}),this.$el.draggable({handle:"h1",helper:function(){return $("
        ")}}),this.$el.data("dataflow-node-view",this),this.$(".dataflow-node-inner").append(this.innerTemplate),this.listenTo(this.model.parentGraph,"change:panX change:panY",this.bumpPosition),this.listenTo(this.model,"change:selected",this.selectedChanged),this.listenTo(this.model,"change:label",this.changeLabel),this.listenTo(this.model,"remove",this.hideInspector),this.$inner=this.$(".dataflow-node-inner")},render:function(){return this.$el.css({left:this.model.get("x")+this.model.parentGraph.get("panX"),top:this.model.get("y")+this.model.parentGraph.get("panY")}),this.$(".dataflow-node-ins").html(this.inputs.el),this.$(".dataflow-node-outs").html(this.outputs.el),this.$(".dataflow-node-controls").hide(),this.$(".label-edit").hide(),this},_alsoDrag:[],_dragDelta:{},$dragHelpers:$('
        '),dragStart:function(a,c){c&&(this.model.get("selected")||this.select(a,!0),a.stopPropagation(),b=this.model.parentGraph.get("zoom"),this.$dragHelpers.css({transform:"translate3d(0,0,0)"}),this.$el.parent().append(this.$dragHelpers),this._alsoDrag=this.model.collection.where({selected:!0}),_.each(this._alsoDrag,function(a){var b=a.view.$el,c=$('
        ').css({width:b.width(),height:b.height(),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)});this.$dragHelpers.append(c)},this))},changeLabel:function(){var a=this.model.get("label"),b=this.model.get("type");this.$(".dataflow-node-title").text(a).attr("title",a+": "+b)},drag:function(a,c){if(c){a.stopPropagation();var d=(c.position.left-c.originalPosition.left)/b,e=(c.position.top-c.originalPosition.top)/b;this.$dragHelpers.css({transform:"translate3d("+d+"px,"+e+"px,0)"})}},dragStop:function(a,c){if(c){a.stopPropagation(),this.model.parentGraph.get("panX"),this.model.parentGraph.get("panY");var d=(c.position.left-c.originalPosition.left)/b,e=(c.position.top-c.originalPosition.top)/b;this._alsoDrag.length&&(_.each(this._alsoDrag,function(a){a.view.moveToPosition(a.get("x")+d,a.get("y")+e)},this),this._alsoDrag=[]),this.$dragHelpers.empty(),this.$dragHelpers.remove()}},bumpPosition:function(){this.$el.css({left:this.model.get("x")+this.model.parentGraph.get("panX"),top:this.model.get("y")+this.model.parentGraph.get("panY")}),this.model.trigger("change:x change:y")},moveToPosition:function(a,b){this.model.set({x:a,y:b},{silent:!0}),this.bumpPosition()},removeModel:function(){this.model.remove()},bringToTop:function(){var a=0;this.model.collection.each(function(b){var c=parseInt(b.view.el.style.zIndex,10);c>a&&(a=c)},this),this.el.style.zIndex=a+1},select:function(a){a&&a.stopPropagation();var b=!1,c=this.model.get("selected");a&&(a.ctrlKey||a.metaKey)?(b=!0,c=!c,this.model.set("selected",c),c||this.fade()):(this.model.parentGraph.edges.invoke("set",{selected:!1}),this.model.parentGraph.nodes.invoke("set",{selected:!1}),this.model.parentGraph.view.fade(),c=!0,this.model.set("selected",!0)),this.bringToTop(),this.model.parentGraph.view.fadeEdges(),this.model.parentGraph.trigger("selectionChanged")},inspector:null,getInspector:function(){if(!this.inspector){var b=new c.InspectView({model:this.model}),d=a.prototype.module("card");this.inspector=new d.Model({dataflow:this.model.parentGraph.dataflow,card:b})}return this.inspector},showInspector:function(a){this.model.parentGraph.dataflow.addCard(this.getInspector(),a)},hideInspector:function(){this.model.parentGraph.dataflow.removeCard(this.getInspector())},fade:function(){this.$el.addClass("fade"),this.$el.removeClass("ui-selected")},unfade:function(){this.$el.removeClass("fade")},selectedChanged:function(){this.model.get("selected")?(this.highlight(),this.showInspector()):(this.unhighlight(),this.hideInspector())},highlight:function(){this.$el.removeClass("fade"),this.$el.addClass("ui-selected")},unhighlight:function(){this.$el.removeClass("ui-selected")}})}(Dataflow),function(a){var b=a.prototype.module("input"),c=a.prototype.module("edge"),d='',e=1;b.View=Backbone.View.extend({template:_.template(d),tagName:"li",className:"dataflow-port dataflow-in",events:{click:"getTopEdge",drop:"connectEdge","dragstart .dataflow-port-hole":"newEdgeStart","drag .dataflow-port-hole":"newEdgeDrag","dragstop .dataflow-port-hole":"newEdgeStop","dragstart .dataflow-port-plug":"changeEdgeStart","drag .dataflow-port-plug":"changeEdgeDrag","dragstop .dataflow-port-plug":"changeEdgeStop"},$input:null,initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.$el.addClass(this.model.get("type")),this.parent=a.parent;var b=this.parent.model,c=b.parentGraph;this.listenTo(b,"change:x change:y",function(){this._holePosition=null}.bind(this)),this.listenTo(c,"change:panX change:panY",function(){this._holePosition=null}.bind(this));var d=b.get("state");if(d&&d[this.model.id]&&this.$el.addClass("hasvalue"),this.model.parentNode.parentGraph.dataflow.editable){var e=this;if(this.$(".dataflow-port-plug").draggable({cursor:"pointer",helper:function(){var a=$('');return e.parent.graph.$el.append(a),a},disabled:!0,distance:10,delay:100}),this.$(".dataflow-port-hole").draggable({cursor:"pointer",helper:function(){var a=$('').data({port:e.model});return e.parent.graph.$el.append(a),a}}),this.$el.droppable({accept:".dataflow-port-plug.in, .dataflow-port-hole.out",activeClassType:"droppable-hover",refreshPositions:!0}),this.model.parentNode.parentGraph.dataflow.inputs){var f=this.model.get("type"),g=this.model.parentNode.get("state");if(a=this.model.get("options"),void 0!==a&&(_.isString(a)&&(a=a.split(" "),this.model.set("options",a)),_.isArray(a))){for(var h={},i=0;i').append(k).prepend(""+this.model.get("label")+" ");this.$input=l,this.model.connected.length&&l.addClass("connected"),this.model.on("connected",function(){this.$input.addClass("connected")},this),this.model.on("disconnected",function(){this.$input.removeClass("connected")},this)}}},renderInput:function(a,b){var c;if(b){c=$('').attr(f).addClass("int"===a?"input-int":"input-float"),"int"==a?c.change(this.inputInt.bind(this)):c.change(this.inputFloat.bind(this)),c;case"boolean":return c=$('
        '),c.change(this.inputBoolean.bind(this)),c;case"object":return c=$(''),c.on("change, keyup",this.inputObject.bind(this)),c;case"bang":return c=$(''),c.click(this.inputBang.bind(this)),c;default:return c=$(''),c.change(this.inputString.bind(this)),c}},setInputValue:function(a,b,c){return a?"SELECT"===a[0].tagName?($("option",a).each(function(){var a=$(this).data("val");$(this).prop("selected",a==c)}),void 0):"boolean"===b?(a.prop("checked",c),void 0):"object"===b?(a.text(JSON.stringify(c,null,2)),void 0):(a.val(c),void 0):void 0},inputSelect:function(a){var b=$(a.target).find(":selected").data("val");this.model.parentNode.setState(this.model.id,b)},inputInt:function(a){this.model.parentNode.setState(this.model.id,parseInt($(a.target).val(),10))},inputFloat:function(a){this.model.parentNode.setState(this.model.id,parseFloat($(a.target).val()))},inputString:function(a){this.model.parentNode.setState(this.model.id,$(a.target).val())},inputBoolean:function(a){this.model.parentNode.setState(this.model.id,$(a.target).prop("checked"))},inputObject:function(a){try{var b=JSON.parse($(a.target).text());this.model.parentNode.setState(this.model.id,b)}catch(c){}},inputBang:function(){this.model.parentNode.setBang(this.model.id)},render:function(){return this},newEdgeStart:function(a,b){if(b){a.stopPropagation(),b.helper.data({route:this.topRoute}),this.previewEdgeNew=new c.Model({target:{node:this.model.parentNode.id,port:this.model.id},parentGraph:this.model.parentNode.parentGraph,preview:!0,route:this.topRoute}),this.previewEdgeNewView=new c.View({model:this.previewEdgeNew});var d=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];d.appendChild(this.previewEdgeNewView.el),e=this.model.parentNode.parentGraph.get("zoom"),this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model,!0)}},newEdgeDrag:function(a,b){if(this.previewEdgeNewView&&b){a.stopPropagation(),b.position.top=a.clientY/e,b.position.left=a.clientX/e;var c=this.model.parentNode.parentGraph.view.el;b.position.left+=c.scrollLeft,b.position.top+=c.scrollTop,this.previewEdgeNewView.render({left:b.position.left-c.scrollLeft,top:b.position.top-c.scrollTop}),this.model.parentNode.parentGraph.view.sizeSVG()}},newEdgeStop:function(a){a.stopPropagation(),this.previewEdgeNewView.remove(),delete this.previewEdgeNew,delete this.previewEdgeNewView,this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model,!0)},getTopEdge:function(){var a,b=-1;return this.isConnected&&(this.model.parentNode.parentGraph.edges.each(function(c){var d=c.get("z");c.target===this.model&&d>b&&(a=c,b=d),c.view&&c.view.unhighlight()},this),a&&a.view&&a.view.bringToTop()),a},changeEdgeStart:function(a,b){if(b&&(a.stopPropagation(),this.isConnected)){var d=this.getTopEdge();if(d){d.remove(),b&&b.helper.data({port:d.source,route:d.get("route")}),this.previewEdgeChange=new c.Model({source:d.get("source"),route:d.get("route"),parentGraph:this.model.parentNode.parentGraph,preview:!0}),this.previewEdgeChangeView=new c.View({model:this.previewEdgeChange});var f=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];f.appendChild(this.previewEdgeChangeView.el),e=this.model.parentNode.parentGraph.get("zoom")}}},changeEdgeDrag:function(a,b){b&&(a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.render(b.offset),this.model.parentNode.parentGraph.view.sizeSVG()))},changeEdgeStop:function(a){a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.remove(),delete this.previewEdgeChange,delete this.previewEdgeChangeView)},blur:function(){this.$el.addClass("blur")},unblur:function(){this.$el.removeClass("blur")},connectEdge:function(a,b){var c=b.helper.data("port"),d=this.model.parentNode.parentGraph.edges.length;if(c.parentNode.parentGraph.dataflow!==this.model.parentNode.parentGraph.dataflow)return!1;if(this.model.canConnect()){var e=0;void 0!==b.helper.data("route")&&(e=b.helper.data("route")),this.model.parentNode.parentGraph.edges.add({id:c.parentNode.id+":"+c.id+"::"+this.model.parentNode.id+":"+this.model.id,parentGraph:this.model.parentNode.parentGraph,source:{node:c.parentNode.id,port:c.id},target:{node:this.model.parentNode.id,port:this.model.id},route:e}),b.helper.data("removeChangeEdge",db&&(a=c,b=d)}},this),a)this.bringToTop(a);else{try{this.$(".dataflow-port-plug").draggable("disable")}catch(c){}this.$(".dataflow-port-plug, .dataflow-port-hole").removeClass("active"),this.isConnected=!1}},topRoute:0,bringToTop:function(a){var b=a.get("route");void 0!==b&&(this.$(".dataflow-port-hole, .dataflow-port-plug").removeClass("route"+this.topRoute),this.$(".dataflow-port-hole, .dataflow-port-plug").addClass("route"+b),this.topRoute=b)}}),b.CollectionView=Backbone.CollectionView.extend({tagName:"ul",itemView:b.View})}(Dataflow),function(a){var b=a.prototype.module("output"),c=a.prototype.module("edge"),d='<%= label %>',e=1;b.View=Backbone.View.extend({template:_.template(d),tagName:"li",className:"dataflow-port dataflow-out",events:{click:"getTopEdge",drop:"connectEdge","dragstart .dataflow-port-hole":"newEdgeStart","drag .dataflow-port-hole":"newEdgeDrag","dragstop .dataflow-port-hole":"newEdgeStop","dragstart .dataflow-port-plug":"changeEdgeStart","drag .dataflow-port-plug":"changeEdgeDrag","dragstop .dataflow-port-plug":"changeEdgeStop"},initialize:function(a){this.$el.html(this.template(this.model.toJSON())),this.$el.addClass(this.model.get("type")),this.parent=a.parent;var b=this.parent.model,c=b.parentGraph;if(this.listenTo(b,"change:x change:y change:w",function(){this._holePosition=null}.bind(this)),this.listenTo(c,"change:panX change:panY",function(){this._holePosition=null}.bind(this)),this.model.parentNode.parentGraph.dataflow.editable){var d=this;this.$(".dataflow-port-plug").draggable({cursor:"pointer",helper:function(){var a=$('');return d.parent.graph.$el.append(a),a},disabled:!0,distance:10,delay:100}),this.$(".dataflow-port-hole").draggable({cursor:"pointer",helper:function(){var a=$('').data({port:d.model});return d.parent.graph.$el.append(a),a}}),this.$el.droppable({accept:".dataflow-port-plug.out, .dataflow-port-hole.in",activeClassType:"droppable-hover"})}},render:function(){return this},newEdgeStart:function(a,b){if(a.stopPropagation(),b){b.helper.data({route:this.topRoute}),this.previewEdge=new c.Model({source:{node:this.model.parentNode.id,port:this.model.id},parentGraph:this.model.parentNode.parentGraph,preview:!0,route:this.topRoute}),this.previewEdgeView=new c.View({model:this.previewEdge});var d=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];d.appendChild(this.previewEdgeView.el),e=this.model.parentNode.parentGraph.get("zoom"),this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model)}},newEdgeDrag:function(a,b){if(a.stopPropagation(),this.previewEdgeView&&b){b.position.top=a.clientY/e,b.position.left=a.clientX/e;var c=this.model.parentNode.parentGraph.view.el;b.position.left+=c.scrollLeft,b.position.top+=c.scrollTop,this.previewEdgeView.render({left:b.position.left-c.scrollLeft,top:b.position.top-c.scrollTop})}},newEdgeStop:function(a){a.stopPropagation(),this.previewEdgeView.remove(),delete this.previewEdge,delete this.previewEdgeView,this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model)},getTopEdge:function(){var a,b=-1;return this.isConnected&&(this.model.parentNode.parentGraph.edges.each(function(c){var d=c.get("z");c.source===this.model&&d>b&&(a=c,b=d),c.view&&c.view.unhighlight()},this),a&&a.view&&a.view.bringToTop()),a},changeEdgeStart:function(a,b){if(b&&(a.stopPropagation(),this.isConnected)){var d=this.getTopEdge();if(d){d.remove(),b&&b.helper.data({port:d.target,route:d.get("route")}),this.previewEdgeChange=new c.Model({target:d.get("target"),route:d.get("route"),parentGraph:this.model.parentNode.parentGraph,preview:!0}),this.previewEdgeChangeView=new c.View({model:this.previewEdgeChange});var f=this.model.parentNode.parentGraph.view.$(".dataflow-svg-edges")[0];f.appendChild(this.previewEdgeChangeView.el),e=this.model.parentNode.parentGraph.get("zoom")}}},changeEdgeDrag:function(a,b){b&&(a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.render(b.offset),this.model.parentNode.parentGraph.view.sizeSVG()))},changeEdgeStop:function(a){a.stopPropagation(),this.previewEdgeChange&&(this.previewEdgeChangeView.remove(),delete this.previewEdgeChange,delete this.previewEdgeChangeView)},blur:function(){this.$el.addClass("blur")},unblur:function(){this.$el.removeClass("blur")},connectEdge:function(a,b){var c=b.helper.data("port"),d=this.model.parentNode.parentGraph.edges.length;if(c.parentNode.parentGraph.dataflow!==this.model.parentNode.parentGraph.dataflow)return!1;if(this.model.canConnect()){var e=0;void 0!==b.helper.data("route")&&(e=b.helper.data("route")),this.model.parentNode.parentGraph.edges.add({id:this.model.parentNode.id+":"+this.model.id+"::"+c.parentNode.id+":"+c.id,parentGraph:this.model.parentNode.parentGraph,source:{node:this.model.parentNode.id,port:this.model.id},target:{node:c.parentNode.id,port:c.id},route:e}),b.helper.data("removeChangeEdge",db&&(a=c,b=d)}},this),a)this.bringToTop(a);else{try{this.$(".dataflow-port-plug").draggable("disable")}catch(c){}this.$(".dataflow-port-plug, .dataflow-port-hole").removeClass("active"),this.isConnected=!1}},topRoute:0,bringToTop:function(a){var b=a.get("route");void 0!==b&&(this.$(".dataflow-port-hole").removeClass("route"+this.topRoute),this.$(".dataflow-port-hole").addClass("route"+b),this.topRoute=b)}}),b.CollectionView=Backbone.CollectionView.extend({tagName:"ul",itemView:b.View})}(Dataflow),function(a){var b=a.prototype.module("edge"),c=function(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)"xlink:href"===d?c.setAttributeNS("http://www.w3.org/1999/xlink","href",b[d]):c.setAttribute(d,b[d]);return c},d=function(a,b){a.classList?a.classList.add(b):a.className="dataflow-edge "+b},e=function(a,b){a.classList?a.classList.remove(b):a.className="dataflow-edge"};b.View=Backbone.View.extend({tagName:"div",className:"dataflow-edge",positions:null,initialize:function(){this.positions={from:null,to:null},this.model.source&&this.model.source.parentNode.on("change:x change:y change:w",this.render,this),this.model.target&&this.model.target.parentNode.on("change:x change:y",this.render,this),this.model.source&&this.model.source.view&&(this.model.source.view.plugSetActive(),this.model.source.view.bringToTop(this.model)),this.model.target&&this.model.target.view&&(this.model.target.view.plugSetActive(),this.model.target.view.bringToTop(this.model)),this.el=c("g",{"class":"dataflow-edge"}),this.elEdge=c("path",{"class":"dataflow-edge-wire"}),this.elShadow=c("path",{"class":"dataflow-edge-shadow"}),void 0!==this.model.get("route")&&this.elEdge.setAttribute("class","dataflow-edge-wire route"+this.model.get("route"));var a=this;this.model.on("change:route",function(){a.elEdge.setAttribute("class","dataflow-edge-wire route"+a.model.get("route")),a.bringToTop()}),this.el.appendChild(this.elShadow),this.el.appendChild(this.elEdge),this.el.addEventListener("click",function(b){a.click(b)}),this.listenTo(this.model,"change:selected",this.selectedChange),this.listenTo(this.model,"remove",this.hideInspector)},render:function(a){var b,c=this.model.source,d=this.model.target;c?this.positions.from=c.view.holePosition():(b=this.model.parentGraph.dataflow.$el.parent().position(),graph=this.model.parentGraph.view.$el,this.positions.from={left:graph.scrollLeft()+a.left-5-b.left,top:graph.scrollTop()+a.top+5-b.top}),d?this.positions.to=d.view.holePosition():(b=this.model.parentGraph.dataflow.$el.parent().position(),graph=this.model.parentGraph.view.$el,this.positions.to={left:graph.scrollLeft()+a.left+15-b.left,top:graph.scrollTop()+a.top+5-b.top});var e=this.edgePath(this.positions);this.elEdge.setAttribute("d",e),this.elShadow.setAttribute("d",e),this.model.parentGraph&&this.model.parentGraph.view&&this.model.parentGraph.view.sizeSVG()},fade:function(){this.model.source.parentNode.get("selected")||this.model.target.parentNode.get("selected")||d(this.el,"fade")},unfade:function(){e(this.el,"fade")},selectedChange:function(){this.model.get("selected")?(this.highlight(),this.showInspector()):(this.unhighlight(),this.hideInspector()),this.model.parentGraph.trigger("selectionChanged")},highlight:function(){d(this.el,"highlight")},unhighlight:function(){e(this.el,"highlight")},edgePath:function(a){var b=20,c=a.to.left-b-(a.from.left+b),d=Math.floor(c/2),e=c-d,f=a.to.top-a.from.top,g=Math.floor(f/2),h=f-g,i="",j="";return Math.abs(f)>Math.abs(c)?f>0?c>0?(i=" L "+(a.from.left+b+d)+" "+(a.from.top+d),j=" L "+(a.to.left-b-e)+" "+(a.to.top-e)):0>c&&(i=" L "+(a.from.left+b+d)+" "+(a.from.top-d),j=" L "+(a.to.left-b-e)+" "+(a.to.top+e)):0>f&&(c>0?(i=" L "+(a.from.left+b+d)+" "+(a.from.top-d),j=" L "+(a.to.left-b-e)+" "+(a.to.top+e)):0>c&&(i=" L "+(a.from.left+b+d)+" "+(a.from.top+d),j=" L "+(a.to.left-b-e)+" "+(a.to.top-e))):Math.abs(f)0?f>0?(i=" L "+(a.from.left+b+g)+" "+(a.from.top+g),j=" L "+(a.to.left-b-h)+" "+(a.to.top-h)):0>f&&(i=" L "+(a.from.left+b-g)+" "+(a.from.top+g),j=" L "+(a.to.left-b+h)+" "+(a.to.top-h)):0>c&&(f>0?(i=" L "+(a.from.left+b-g)+" "+(a.from.top+g),j=" L "+(a.to.left-b+h)+" "+(a.to.top-h)):0>f&&(i=" L "+(a.from.left+b+g)+" "+(a.from.top+g),j=" L "+(a.to.left-b-h)+" "+(a.to.top-h)))),"M "+a.from.left+" "+a.from.top+" L "+(a.from.left+b)+" "+a.from.top+i+j+" L "+(a.to.left-b)+" "+a.to.top+" L "+a.to.left+" "+a.to.top},remove:function(){var a=this.model.source,b=this.model.target;a&&a.parentNode.off(null,null,this),b&&b.parentNode.off(null,null,this),a&&a.view.plugCheckActive(),b&&b.view.plugCheckActive(),this.el.parentNode.removeChild(this.el)},click:function(a){a&&a.stopPropagation();var b;a&&(a.ctrlKey||a.metaKey)?(b=this.model.get("selected"),b=!b):(b=!0,this.model.parentGraph.nodes.invoke("set",{selected:!1}),this.model.collection.invoke("set",{selected:!1})),this.model.set({selected:b}),b&&(this.bringToTop(),this.model.trigger("select"),this.unfade()),this.model.parentGraph.view.fade()},bringToTop:function(){this.model.bringToTop();var a=this.el.parentNode;a&&a.appendChild(this.el),this.model.source.view.bringToTop(this.model),this.model.target.view.bringToTop(this.model)},inspector:null,getInspector:function(){if(!this.inspector){var c=new b.InspectView({model:this.model}),d=a.prototype.module("card");this.inspector=new d.Model({dataflow:this.model.parentGraph.dataflow,card:c})}return this.inspector},showInspector:function(a){this.model.parentGraph.dataflow.addCard(this.getInspector(),a)},hideInspector:function(){this.model.parentGraph.dataflow.removeCard(this.getInspector())}})}(Dataflow),function(a){var b=a.prototype.module("card");b.Model=Backbone.Model.extend({defaults:{pinned:!1},initialize:function(){this.dataflow=this.get("dataflow")},hide:function(){this.dataflow.shownCards.remove(this)}}),b.Collection=Backbone.Collection.extend({model:b.Model})}(Dataflow),function(a){var b=a.prototype.module("card"),c='
        ';b.View=Backbone.View.extend({tagName:"div",className:"dataflow-card",template:_.template(c),events:{"click .dataflow-card-pin":"togglePin","click .dataflow-card-close":"hide"},initialize:function(){this.$el.html(this.template()),this.card=this.model.get("card"),this.$el.append(this.card.el),this.listenTo(this.model,"change:pinned",this.pinnedChanged),this.pinnedChanged()},animate:function(a){"function"==typeof this.card.animate&&this.card.animate(a)},togglePin:function(){var a=!this.model.get("pinned");this.model.set("pinned",a),a||this.hide()},pinnedChanged:function(){this.model.get("pinned")?this.$(".dataflow-card-pin").addClass("active"):this.$(".dataflow-card-pin").removeClass("active")},hide:function(){this.model.hide()},remove:function(){this.$el.detach()}}),window.requestAnimationFrame||(window.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,50)}}()),b.CollectionView=Backbone.CollectionView.extend({tagName:"div",className:"dataflow-cards",itemView:b.View,prepend:!0,initialize:function(){Backbone.CollectionView.prototype.initialize.apply(this,arguments);var a=function(b){window.requestAnimationFrame(a),this.collection.each(function(a){a.view&&a.view.animate(b)})}.bind(this);a()},bringToTop:function(a){this.$el.prepend(a.view.el)}})}(Dataflow),function(a){var b=Backbone.Model.extend({defaults:{label:"",icon:"",action:null}}),c=Backbone.Collection.extend({model:b}),d=a.prototype.module("card"),e=a.prototype.module("menucard");e.Model=d.Model.extend({initialize:function(){this.menu=new c,d.Model.prototype.initialize.call(this)}})}(Dataflow),function(a){var b=a.prototype.module("card"),c=a.prototype.module("menucard"),d=Backbone.View.extend({tagName:"li",template:'',events:{click:"clicked"},render:function(){this.$el.html(_.template(this.template,this.model.toJSON()))},clicked:function(){this.model.get("action")&&this.model.get("action")()}});c.View=b.View.extend({initialize:function(){this.model.set("card",new Backbone.CollectionView({tagName:"ul",className:"dataflow-menu",collection:this.model.menu,itemView:d})),b.View.prototype.initialize.call(this)}})}(Dataflow),function(a){var b=a.prototype.module("node"),c='

        <%- label %>

        <%- type %>

        ',d=function(a,b,c){a[0].contentEditable=!0;var d=a.text(),e=function(){b.set(c,a.text())},f=function(){a.text(d)};a.focus(function(){d=a.text()}).blur(function(){e()}).keydown(function(b){27===b.which?(f(),a.blur()):13===b.which&&a.blur()})};b.InspectView=Backbone.View.extend({template:_.template(c),className:"dataflow-node-inspector",events:{},initialize:function(){this.$el.html(this.template(this.model.toJSON()));var a=this.$el.children(".dataflow-node-inspector-inputs");this.model.inputs.each(function(b){b.view&&b.view.$input&&a.append(b.view.$input)},this),d(this.$(".dataflow-node-inspector-label"),this.model,"label")},render:function(){return this},removeModel:function(){this.model.remove()}})}(Dataflow),function(a){var b=a.prototype.module("edge"),c='

        Edge

        <%= id %>

          ';b.InspectView=Backbone.View.extend({tagName:"div",className:"dataflow-edge-inspector",positions:null,template:_.template(c),initialize:function(){var a=this.model.toJSON();this.model.id&&(a.id=this.model.id.replace("->","→")),this.$el.html(this.template(a));var b=this.$el.children(".dataflow-edge-inspector-route-choose");this.$log=this.$el.children(".dataflow-edge-inspector-events");for(var c=function(a){var b=$(a.target).data("route");this.model.set("route",b)}.bind(this),d=0;12>d;d++){var e=$("



          ');h.children(".selectall").click(c),b.selectAll=c,b.removeSelected=function(){var b=a.currentGraph.nodes.where({selected:!0});_.each(b,function(a){a.remove()})},h.children(".cut").click(d),b.cut=d,b.removeEdge=e;var i={};h.children(".copy").click(f),b.copy=f,h.children(".paste").click(g),b.paste=g,a.addContext({id:"cut",icon:"cut",label:"cut",action:d,contexts:["node","nodes"]}),a.addContext({id:"copy",icon:"copy",label:"copy",action:f,contexts:["node","nodes"]}),a.addContext({id:"paste",icon:"paste",label:"paste",action:g,contexts:["node","nodes"]}),a.addContext({id:"edgeRemove",icon:"remove",label:"remove edge",action:e,contexts:["edge"]}),a.addContext({id:"edgeRemove",icon:"remove",label:"remove edges",action:e,contexts:["edges"]}),b.onSearch=function(b,c){if(a.currentGraph){var d=[];a.currentGraph.nodes.each(function(a){-1!==a.get("label").toLowerCase().indexOf(b.toLowerCase())&&d.push({source:"edit",icon:"sign-blank",label:a.get("label"),description:a.type,action:function(){a.view.select()}})}),c(d)}}}}(Dataflow),function(a){var b=a.prototype.plugin("elements");b.list=[{type:"div",attributes:["id","class","style"],events:["pointermove","pointerover","pointerout"]},{type:"button",attributes:["id","class","style"],events:["pointerdown","pointerup"]}]}(Dataflow),function(a){var b=a.prototype.plugin("library");b.initialize=function(a){var c=$('
          '),d=$('
            ');c.append(d),b.excluded=["base","base-resizable"];var e=function(b,c,d){return function(){a.currentGraph.view.$(".dataflow-node").removeClass("ui-selected"),zoom=a.currentGraph.get("zoom");for(var e=1;a.currentGraph.nodes.get(e);)e++;c=void 0===c?200:c,d=void 0===d?200:d,c=c/zoom-a.currentGraph.get("panX"),d=d/zoom-a.currentGraph.get("panY");var f=new b.Model({id:e,x:c,y:d,parentGraph:a.currentGraph});a.currentGraph.nodes.add(f),f.view.select()}},f='
          • <%- name %><%-description %>
          • ',g=function(b,c){var g=$(_.template(f,{name:b,description:c.description}));$(".button",g).attr("title","click or drag").draggable({helper:function(){var c=$('
            '+b+"
            ");return a.$el.append(c),c},stop:function(a,b){e(c,b.position.left,b.position.top).call()}}).click(e(c)),d.append(g)},h=function(c){c=c?c:{},b.excluded=c.exclude?c.exclude:b.excluded,d.empty();var e=_.sortBy(Object.keys(a.nodes),function(a){return a});_.each(e,function(c){-1===b.excluded.indexOf(c)&&g(c,a.nodes[c])})};h(),a.addPlugin({id:"library",label:"library",name:"",menu:c,icon:"plus",pinned:!1}),b.update=h,b.onSearch=function(c,d){var f=[];_.each(a.nodes,function(a,d){-1===b.excluded.indexOf(d)&&-1!==d.toLowerCase().indexOf(c.toLowerCase())&&f.push({source:"library",icon:"plus",action:function(){e(a).call()},label:d,description:a.description})}),d(f)}}}(Dataflow),function(a){var b=a.prototype.plugin("source");b.updateAllowed=!0,b.initialize=function(a){var c=$('

            '),d=c.find(".code");a.addPlugin({id:"source",label:"view source",name:"",menu:c,icon:"code",pinned:!0}),b.show=function(a){var b=d.prop("scrollTop");d.val(a),d.scrollTop(b)};var e=function(){a.graph&&b.show(JSON.stringify(a.graph.toJSON(),null," "))};b.listeners=function(b){b?a.on("change",e):a.off("change",e)},b.listeners(!0),b.allowUpdate=function(a){var e=c.find(".apply");return a?(b.updateAllowed=!0,e.show(),d.removeAttr("readonly"),void 0):(b.updateAllowed=!1,e.hide(),d.attr("readonly","readonly"),void 0)},c.submit(function(){return b.updateGraph(d,a),!1})},b.updateGraph=function(a,c){if(b.updateAllowed){var d;try{d=JSON.parse(a.val())}catch(e){return c.log("Invalid JSON"),!1}if(d){var f=c.loadGraph(d);f.trigger("change")}}}}(Dataflow),function(a){var b=a.prototype.plugin("log");b.initialize=function(a){function c(a){a=_.escape(a),d.children(".loglist").append("
          • "+a+"
          • "),d.scrollTop(d.prop("scrollHeight"))}var d=$('
              ');a.addPlugin({id:"log",label:"log",name:"",menu:d,icon:"th-list",pinned:!0}),b.add=c;var e=function(a){c("log: "+a)},f=function(a,b){c("node added: "+b.toString())},g=function(a,b){c("node removed: "+b.toString())},h=function(a,b){c("edge added: "+b.toString())},i=function(a,b){c("edge removed: "+b.toString())};b.listeners=function(b){b?(a.on("log",e),a.on("node:add",f),a.on("node:remove",g),a.on("edge:add",h),a.on("edge:remove",i)):(a.off("log",e),a.off("node:add",f),a.off("node:remove",g),a.off("edge:add",h),a.off("edge:remove",i))},b.listeners(!0)}}(Dataflow),function(a){var b=a.prototype.plugin("inspector");b.initialize=function(a){function b(){var b=a.currentGraph.nodes.where({selected:!0});b.forEach(function(b){var c=b.view.getInspector();c.set("pinned",!0),a.addCard(c)});var c=a.currentGraph.edges.where({selected:!0});c.forEach(function(b){var c=b.view.getInspector();c.set("pinned",!0),a.addCard(c)})}a.addContext({id:"inspector",icon:"info-sign",label:"inspect",action:b,contexts:["one","twoplus"]})}}(Dataflow),function(a){var b=a.prototype.plugin("keybinding"),c=a.prototype.plugin("edit");b.initialize=function(a){function d(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomIn()}function e(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomOut()}function f(){a&&a.currentGraph&&a.currentGraph.view&&a.currentGraph.view.zoomCenter()}function g(a){if("TEXTAREA"!==a.target.tagName&&"INPUT"!==a.target.tagName&&"true"!==a.target.contentEditable&&(a.ctrlKey||a.metaKey))switch(a.which){case 189:a.preventDefault(),d();break;case 187:a.preventDefault(),e();break;case 48:a.preventDefault(),f();break;case 65:c.selectAll();break;case 88:c.cut();break;case 67:c.copy();break;case 86:c.paste();break;case 90:}}b.listeners=function(a){a?$(document).on("keydown",g):$(document).off("keydown",g)},b.listeners(!0)}}(Dataflow),function(a){var b=a.prototype.plugin("notification"),c=window.webkitNotifications?!0:!1;b.requestPermission=function(){c&&(b.hasPermission()||window.webkitNotifications.requestPermission())},b.hasPermission=function(){return c?0!==window.webkitNotifications.checkPermission()?!1:!0:!1},b.notify=function(a,c,d){if(!b.hasPermission()){if(!console||!console.log)return;return console.log(c+": "+d),void 0}var e=window.webkitNotifications.createNotification(a,c,d);e.show()}}(Dataflow),function(a){var b=a.prototype.plugin("search"),c=Backbone.Model.extend({defaults:{source:"",icon:"",action:null,label:"",description:""}}),d=Backbone.Collection.extend({model:c,initialize:function(a,b){b||(b={}),this.search=b.search}}),e=Backbone.View.extend({tagName:"li",template:'<%- label %><%- description %>',events:{click:"clicked"},render:function(){this.$el.html(_.template(this.template,this.model.toJSON()))},clicked:function(){this.model.get("action")&&this.model.get("action")()}});b.initialize=function(a){var c=$(''),d=c.find("input"),e=c.find("button");a.$el.prepend(c),d.on("keyup search webkitspeechchange",function(){return d.val()?(b.search(d.val(),a),void 0):(a.removeCard("searchresults"),void 0)}),e.on("click",function(){a.showPlugin("menu")})},b.search=function(c,f){var g=a.prototype.module("card"),h=new d([],{search:c}),i=new Backbone.CollectionView({tagName:"ul",className:"dataflow-plugin-search-results",collection:h});i.itemView=e;var j=new g.Model({id:"searchresults",dataflow:f,card:i,pinned:!1});h.on("add",function(){f.addCard(j)}),b.results=h,_.each(f.plugins,function(a){a.onSearch&&b.searchPlugin(h,c,a)})},b.searchPlugin=function(a,c,d){d.onSearch(c,function(d){c===b.results.search&&d.forEach(function(b){a.add(b)})})}}(Dataflow),function(a){var b=a.prototype.module("node"),c=a.prototype.node("base");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.type="base",a},initialize:function(){b.Model.prototype.initialize.call(this)},unload:function(){},inputs:[],outputs:[]}),c.View=b.View.extend({})}(Dataflow),function(a){var b=a.prototype.node("base"),c=a.prototype.node("base-resizable");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.type="base-resizable",a.w=200,a.h=200,a},initialize:function(){b.Model.prototype.initialize.call(this)},unload:function(){},toJSON:function(){var a=b.Model.prototype.toJSON.call(this);return a.w=this.get("w"),a.h=this.get("h"),a},inputs:[],outputs:[]}),c.View=b.View.extend({initialize:function(a){b.View.prototype.initialize.call(this,a),this.$el.css({width:this.model.get("w"),height:this.model.get("h")});var c=this;this.$el.resizable({helper:"dataflow-node helper",minHeight:100,minWidth:120,stop:function(a,b){c.resizeStop(a,b)}})},resizeStop:function(a,b){this.model.set({w:b.size.width,h:b.size.height})}})}(Dataflow),function(a){var b=a.prototype.node("base-resizable"),c=a.prototype.node("dataflow-subgraph"),d=a.prototype.module("graph"),e=a.prototype.module("input"),f=a.prototype.module("output");c.Model=b.Model.extend({defaults:function(){var a=b.Model.prototype.defaults.call(this);return a.label="subgraph",a.type="dataflow-subgraph",a.graph={nodes:[{id:"1",label:"in",type:"dataflow-input",x:180,y:15},{id:"99",label:"out",type:"dataflow-output",x:975,y:500}]},a},initialize:function(){b.Model.prototype.initialize.call(this);var a=this.get("graph");a.parentNode=this,a.dataflow=this.parentGraph.dataflow,this.graph=new d.Model(a);var c=this.graph.nodes.filter(function(a){return"dataflow-input"===a.type});_.each(c,this.addInput,this);var e=this.graph.nodes.filter(function(a){return"dataflow-output"===a.type});_.each(e,this.addOutput,this),this.graph.nodes.on("add",function(a){"dataflow-input"===a.type?this.addInput(a):"dataflow-output"===a.type&&this.addOutput(a)},this),this.graph.nodes.on("remove",function(a){"dataflow-input"===a.type?this.removeInput(a):"dataflow-output"===a.type&&this.removeOutput(a)},this)},addInput:function(a){var b=new e.Model({id:a.id,label:a.get("label"),type:a.get("input-type"),parentNode:this,inputNode:a});this.inputs.add(b)},recieve:function(a,b){var c=this.inputs.get(a).get("inputNode");c&&c.send("data",b)},addOutput:function(a){var b=new f.Model({id:a.id,label:a.get("label"),type:a.get("output-type"),parentNode:this,outputNode:a});this.outputs.add(b),a.set("parentNode",this)},removeInput:function(a){var b=this.inputs.get(a.id);b.remove(),this.inputs.remove(b)},removeOutput:function(a){var b=this.outputs.get(a.id);b.remove(),this.outputs.remove(b)},toJSON:function(){var a=b.Model.prototype.toJSON.call(this);return a.graph=this.graph,a},remove:function(){b.Model.prototype.remove.call(this),this.graph.remove()},inputs:[],outputs:[]});var g='';c.View=b.View.extend({events:function(){var a=b.View.prototype.events.call(this);return a["click .show-subgraph"]="showSubgraph",a},innerTemplate:_.template(g),initialize:function(a){b.View.prototype.initialize.call(this,a),this.model.graph.view=new d.View({model:this.model.graph}),this.model.inputs.each(this.addInput,this),this.model.inputs.on("add",this.addInput,this),this.model.outputs.each(this.addOutput,this),this.model.outputs.on("add",this.addOutput,this)},addInput:function(a){a.get("inputNode")&&a.get("inputNode").on("change:label",function(b){a.view.$(".label").text(b.get("label")) +},this)},addOutput:function(a){a.get("outputNode")&&a.get("outputNode").on("change:label",function(b){a.view.$(".label").text(b.get("label"))},this)},showSubgraph:function(){this.model.graph.dataflow.showGraph(this.model.graph)}})}(Dataflow); //# sourceMappingURL=dataflow.min.js.map \ No newline at end of file diff --git a/build/dataflow.min.js.map b/build/dataflow.min.js.map index 16b7e14..8a02094 100644 --- a/build/dataflow.min.js.map +++ b/build/dataflow.min.js.map @@ -1 +1 @@ -{"version":3,"file":"build/dataflow.min.js","sources":["build/dataflow.build.js"],"names":["CircularBuffer","n","this","_array","Array","length","prototype","toString","get","i","undefined","set","v","IndexError","push","App","Backbone","Model","extend","$","query","$el","find","initialize","el","document","createElement","className","data","Card","Dataflow","module","shownCards","Collection","view","CollectionView","collection","append","debug","controls","name","plugins","inputs","editable","appendTo","css","margin","padding","width","height","id","attr","loadState","modules","nodes","node","description","plugin","addCard","card","leaveUnpinned","hideCards","bringToTop","add","removeCard","remove","unpinned","where","pinned","addPlugin","info","enabled","menu","dataflow","icon","label","showLabel","showPlugin","onShow","enablePlugin","disablePlugin","showContextBar","contextBar","show","hideContextBar","hide","contexts","prepareContext","ctx","MenuCard","View","model","addContext","_","each","context","changeContext","selectedNodes","selectedEdges","bind","loadGraph","source","graph","currentGraph","Graph","newGraph","render","showGraph","detach","log","message","trigger","arguments","console","types","window","exports","addEvents","events","delegateEvents","clone","prepend","options","tagName","itemView","parent","addItem","on","removeItem","item","StateModel","stateKey","cid","stateData","JSON","parse","localStorage","getItem","state","stateInstance","setItem","stringify","toJSON","Node","Edge","defaults","edges","panX","panY","zoom","parentGraph","nodesArray","type","edge","edgesArray","port","target","sourceNode","targetNode","outputs","selectionChanged","selectNode","selectEdge","selected","at","Input","Output","x","y","inputArray","parentNode","input","value","outputArray","output","changeSelected","setState","setBang","send","self","defer","recieve","unload","comparator","multiple","connected","canConnect","connect","uniq","disconnect","without","z","route","preview","attributes","e","select","isConnectedToPort","isConnectedToNode","topZ","thisZ","unhighlight","off","minZoom","maxZoom","style","hasOwnProperty","template","click .dataflow-graph","dragstart .dataflow-graph-panzoom","drag .dataflow-graph-panzoom","dragstop .dataflow-graph-panzoom","click .dataflow-graph-gotoparent","mousewheel","html","addNode","removeNode","addEdge","removeEdge","draggable","helper","h","$graphEl","graphEl","transform","transformOrigin","bindInteraction","panStartOffset","panStart","event","ui","offset","pan","scale","deltaX","left","deltaY","top","panStop","tempPanX","tempPanY","setPanDebounce","debounce","mouseWheel","preventDefault","oe","originalEvent","wheelDeltaX","wheelDeltaY","gotoParent","bindZoom","bindScroll","Hammer","currentZoom","startX","startY","originX","originY","distance_to_origin_x","distance_to_origin_y","gesture","center","pageX","pageY","graphOffset","Math","max","min","onZoom","lastClass","zoomClass","removeClass","addClass","zoomIn","zoomOut","zoomCenter","rerenderEdges","CustomType","BaseNode","appendChild","edgeView","sizeSVG","svg","rect","getBBox","round","setAttribute","error","deselect","invoke","unfade","fade","fadeEdges","innerTemplate","click .dataflow-node-header","dragstart","drag","dragstop","handle","listenTo","bumpPosition","selectedChanged","changeLabel","hideInspector","$inner","_alsoDrag","_dragDelta","$dragHelpers","dragStart","stopPropagation","parseInt","text","position","originalPosition","dragStop","moveToPosition","empty","silent","removeModel","zIndex","toggle","ctrlKey","metaKey","inspector","getInspector","inspect","InspectView","showInspector","highlight","click","drop","dragstart .dataflow-port-hole","drag .dataflow-port-hole","dragstop .dataflow-port-hole","dragstart .dataflow-port-plug","drag .dataflow-port-plug","dragstop .dataflow-port-plug","$input","_holePosition","nodeState","cursor","disabled","distance","delay","droppable","accept","activeClassType","refreshPositions","isString","split","isArray","o","val","renderInput","setInputValue","option","change","inputSelect","step","inputInt","inputFloat","inputBoolean","inputObject","inputBang","inputString","selectVal","prop","parseFloat","obj","err","newEdgeStart","topRoute","previewEdgeNew","previewEdgeNewView","graphSVGElement","newEdgeDrag","clientY","clientX","df","scrollLeft","scrollTop","newEdgeStop","getTopEdge","topEdge","isConnected","changeEdgeStart","changeEdge","previewEdgeChange","previewEdgeChangeView","changeEdgeDrag","changeEdgeStop","connectEdge","otherPort","oldLength","holePosition","index","plugSetActive","plugCheckActive","topEdgeZ","previewEdge","previewEdgeView","makeSvgElement","tag","attrs","createElementNS","k","setAttributeNS","classList","positions","from","to","class","elEdge","elShadow","addEventListener","selectedChange","previewPosition","dataflowParent","pathD","edgePath","halfX","floor","halfX2","halfY","halfY2","control1","control2","abs","removeChild","click .dataflow-card-pin","click .dataflow-card-close","pinnedChanged","animate","timestamp","togglePin","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","apply","loop","MenuItem","action","Menu","call","MenuItemView","clicked","makeEditable","attribute","contentEditable","initial","revert","focus","blur","keydown","which","$inputs","children","templateData","replace","$choose","$log","changeRoute","button","showLogs","lastLog","logs","renderLogs","firstToShow","li","group","first","scrollHeight","Edit","selectAll","cut","copy","copied","removeSelected","forEach","connectedSource","any","connectedTarget","paste","oldId","newNode","newEdge","buttons","toRemove","onSearch","results","toLowerCase","indexOf","Elements","list","Library","$container","$library","excluded","itemTemplate","addLibraryItem","$item","stop","update","exclude","sortedLibrary","sortBy","Object","keys","Source","updateAllowed","$form","$code","scrollBackTop","listeners","boo","allowUpdate","allowed","$button","removeAttr","submit","updateGraph","g","Log","escape","logged","nodeAdded","nodeRemoved","edgeAdded","edgeRemoved","Inspector","KeyBinding","keyDown","Notification","webNotifications","webkitNotifications","requestPermission","hasPermission","checkPermission","notify","title","notification","createNotification","Search","SearchResult","SearchResults","models","search","ResultView","$search","ResultsView","ResultsCard","searchPlugin","pluginResults","result","Base","BaseResizable","w","json","resizable","minHeight","minWidth","resizeStop","size","DataflowSubgraph","filter","addInput","addOutput","removeInput","removeOutput","newInput","inputNode","newOutput","outputNode","showSubgraph"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"build/dataflow.min.js","sources":["build/dataflow.build.js"],"names":["CircularBuffer","n","this","_array","Array","length","prototype","toString","get","i","undefined","set","v","IndexError","push","App","Backbone","Model","extend","$","query","$el","find","initialize","el","document","createElement","className","data","Card","Dataflow","module","shownCards","Collection","view","CollectionView","collection","append","debug","controls","name","plugins","inputs","editable","appendTo","css","margin","padding","width","height","id","attr","loadState","modules","nodes","node","description","plugin","addCard","card","leaveUnpinned","hideCards","bringToTop","add","removeCard","remove","unpinned","where","pinned","addPlugin","info","enabled","menu","dataflow","icon","label","showLabel","showPlugin","onShow","enablePlugin","disablePlugin","showContextBar","contextBar","show","hideContextBar","hide","contexts","prepareContext","ctx","MenuCard","View","model","addContext","_","each","context","changeContext","selectedNodes","selectedEdges","bind","loadGraph","source","graph","currentGraph","Graph","newGraph","render","showGraph","detach","log","message","trigger","arguments","console","types","window","exports","addEvents","events","delegateEvents","clone","prepend","options","tagName","itemView","parent","addItem","on","removeItem","item","StateModel","stateKey","cid","stateData","JSON","parse","localStorage","getItem","state","stateInstance","setItem","stringify","toJSON","Node","Edge","defaults","edges","panX","panY","zoom","parentGraph","nodesArray","type","edge","edgesArray","port","target","sourceNode","targetNode","outputs","selectionChanged","selectNode","selectEdge","selected","at","Input","Output","x","y","inputArray","parentNode","input","value","outputArray","output","changeSelected","setState","setBang","send","self","defer","recieve","unload","comparator","multiple","connected","canConnect","connect","uniq","disconnect","without","z","route","preview","attributes","e","select","isConnectedToPort","isConnectedToNode","topZ","thisZ","unhighlight","off","minZoom","maxZoom","style","hasOwnProperty","template","click .dataflow-graph","dragstart .dataflow-graph-panzoom","drag .dataflow-graph-panzoom","dragstop .dataflow-graph-panzoom","click .dataflow-graph-gotoparent","mousewheel","html","addNode","removeNode","addEdge","removeEdge","draggable","helper","h","$graphEl","graphEl","transform","transformOrigin","bindInteraction","panStartOffset","panStart","event","ui","offset","pan","scale","deltaX","left","deltaY","top","panStop","tempPanX","tempPanY","setPanDebounce","debounce","mouseWheel","preventDefault","oe","originalEvent","wheelDeltaX","wheelDeltaY","gotoParent","bindZoom","bindScroll","Hammer","currentZoom","startX","startY","originX","originY","distance_to_origin_x","distance_to_origin_y","gesture","center","pageX","pageY","graphOffset","Math","max","min","onZoom","lastClass","zoomClass","removeClass","addClass","zoomIn","zoomOut","zoomCenter","rerenderEdges","CustomType","BaseNode","appendChild","edgeView","sizeSVG","svg","rect","getBBox","round","setAttribute","error","deselect","invoke","unfade","fade","fadeEdges","startHighlightCompatible","fromInput","blur","stopHighlightCompatible","innerTemplate","click .dataflow-node-header","dragstart","drag","dragstop","handle","listenTo","bumpPosition","selectedChanged","changeLabel","hideInspector","$inner","_alsoDrag","_dragDelta","$dragHelpers","dragStart","stopPropagation","parseInt","text","position","originalPosition","dragStop","moveToPosition","empty","silent","removeModel","zIndex","toggle","ctrlKey","metaKey","inspector","getInspector","inspect","InspectView","showInspector","highlight","click","drop","dragstart .dataflow-port-hole","drag .dataflow-port-hole","dragstop .dataflow-port-hole","dragstart .dataflow-port-plug","drag .dataflow-port-plug","dragstop .dataflow-port-plug","$input","_holePosition","nodeState","cursor","disabled","distance","delay","droppable","accept","activeClassType","refreshPositions","isString","split","isArray","o","val","renderInput","setInputValue","option","change","inputSelect","step","inputInt","inputFloat","inputBoolean","inputObject","inputBang","inputString","selectVal","prop","parseFloat","obj","err","newEdgeStart","topRoute","previewEdgeNew","previewEdgeNewView","graphSVGElement","newEdgeDrag","clientY","clientX","df","scrollLeft","scrollTop","newEdgeStop","getTopEdge","topEdge","isConnected","changeEdgeStart","changeEdge","previewEdgeChange","previewEdgeChangeView","changeEdgeDrag","changeEdgeStop","unblur","connectEdge","otherPort","oldLength","holePosition","index","plugSetActive","plugCheckActive","topEdgeZ","previewEdge","previewEdgeView","makeSvgElement","tag","attrs","createElementNS","k","setAttributeNS","classList","positions","from","to","class","elEdge","elShadow","addEventListener","selectedChange","previewPosition","dataflowParent","pathD","edgePath","halfX","floor","halfX2","halfY","halfY2","control1","control2","abs","removeChild","click .dataflow-card-pin","click .dataflow-card-close","pinnedChanged","animate","timestamp","togglePin","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","apply","loop","MenuItem","action","Menu","call","MenuItemView","clicked","makeEditable","attribute","contentEditable","initial","revert","focus","keydown","which","$inputs","children","templateData","replace","$choose","$log","changeRoute","button","showLogs","lastLog","logs","renderLogs","firstToShow","li","group","first","scrollHeight","Edit","selectAll","cut","copy","copied","removeSelected","forEach","connectedSource","any","connectedTarget","paste","oldId","newNode","newEdge","buttons","toRemove","onSearch","results","toLowerCase","indexOf","Elements","list","Library","$container","$library","excluded","itemTemplate","addLibraryItem","$item","stop","update","exclude","sortedLibrary","sortBy","Object","keys","Source","updateAllowed","$form","$code","scrollBackTop","listeners","boo","allowUpdate","allowed","$button","removeAttr","submit","updateGraph","g","Log","escape","logged","nodeAdded","nodeRemoved","edgeAdded","edgeRemoved","Inspector","KeyBinding","keyDown","Notification","webNotifications","webkitNotifications","requestPermission","hasPermission","checkPermission","notify","title","notification","createNotification","Search","SearchResult","SearchResults","models","search","ResultView","$search","ResultsView","ResultsCard","searchPlugin","pluginResults","result","Base","BaseResizable","w","json","resizable","minHeight","minWidth","resizeStop","size","DataflowSubgraph","filter","addInput","addOutput","removeInput","removeOutput","newInput","inputNode","newOutput","outputNode","showSubgraph"],"mappings":"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"} \ No newline at end of file diff --git a/build/default/dataflow.min.css b/build/default/dataflow.min.css index 66a7f00..d38bde4 100644 --- a/build/default/dataflow.min.css +++ b/build/default/dataflow.min.css @@ -1,2 +1,2 @@ /* meemoo/dataflow compressed styles. See debug.html for uncompressed. */ -@font-face{font-family:proxima-nova-light;src:url(../../fonts/proximanova-light-webfont.eot);src:local("?"),url(../../fonts/proximanova-light-webfont.woff) format("woff"),url(../../fonts/proximanova-light-webfont.ttf) format("truetype"),url(../../fonts/proximanova-light-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-regular;src:url(../../fonts/proximanova-regular-webfont.eot);src:local("?"),url(../../fonts/proximanova-regular-webfont.woff) format("woff"),url(../../fonts/proximanova-regular-webfont.ttf) format("truetype"),url(../../fonts/proximanova-regular-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-bold;src:url(../../fonts/proximanova-bold-webfont.eot);src:local("?"),url(../../fonts/proximanova-bold-webfont.woff) format("woff"),url(../../fonts/proximanova-bold-webfont.ttf) format("truetype"),url(../../fonts/proximanova-bold-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-semibold;src:url(../../fonts/proximanova-semibold-webfont.eot);src:local("?"),url(../../fonts/proximanova-semibold-webfont.woff) format("woff"),url(../../fonts/proximanova-semibold-webfont.ttf) format("truetype"),url(../../fonts/proximanova-semibold-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:FontAwesome;src:url(../../fonts/fontawesome-webfont.eot?v=3.2.1);src:url(../../fonts/fontawesome-webfont.eot?#iefix&v=3.2.1) format('embedded-opentype'),url(../../fonts/fontawesome-webfont.woff?v=3.2.1) format('woff'),url(../../fonts/fontawesome-webfont.ttf?v=3.2.1) format('truetype'),url(../../fonts/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1) format('svg');font-weight:400;font-style:normal}[class^=icon-],[class*=" icon-"]{font-family:FontAwesome;font-weight:400;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^=icon-]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}a [class^=icon-],a [class*=" icon-"]{display:inline}[class^=icon-].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:.2857142857142857em}[class^=icon-].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}.icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}[class^=icon-].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^=icon-].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^=icon-].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}[class^=icon-],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}.btn [class^=icon-].icon-large,.nav [class^=icon-].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^=icon-].icon-spin,.nav [class^=icon-].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^=icon-],.nav-pills [class^=icon-],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^=icon-].icon-large,.nav-pills [class^=icon-].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}.btn [class^=icon-].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^=icon-].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^=icon-].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^=icon-].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^=icon-].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^=icon-],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^=icon-].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^=icon-].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^=icon-].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^=icon-].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.nav-list [class^=icon-],.nav-list [class*=" icon-"]{line-height:inherit}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^=icon-],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical:before{-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}.dataflow{font-family:proxima-nova-regular,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:0 1px 0 #fff;line-height:20px;color:#232429;position:relative;top:0;left:0;margin:0;padding:0;width:100%;height:100%;background-color:#2a2b31;overflow:hidden}.dataflow button,.dataflow input[type=submit],.dataflow .button{cursor:pointer;border-radius:3px;border:1px #CCC solid;background-color:#EEE;color:#000;font-size:12px;margin:1px;padding:3px 6px}.dataflow button:before,.dataflow .button:before{color:#666}.dataflow button:active,.dataflow button.active,.dataflow input[type=submit]:active,.dataflow .button:active{background-color:#DDD}.dataflow .dataflow-node-inspect{border:0;padding:8px 10px;background-color:transparent}.dataflow .dataflow-node-inspect:before{color:#a8a8a8;text-shadow:0 1px #fff}.dataflow-g,.dataflow-graph,.dataflow-graph-panzoom{position:absolute;top:0;right:0;bottom:0;left:0}.dataflow-graph-panzoom{z-index:1}.dataflow-graph{z-index:1}.dataflow-edges{position:absolute;top:0;left:0;z-index:1}.dataflow-nodes{position:relative;top:0;left:0;z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dataflow-graph-controls{position:absolute;top:0;left:0;z-index:2}.dataflow-node{font-size:12px;position:absolute;display:inline-block;width:175px;border:1px #aaa solid;background-color:rgba(255,255,255,.8);border-radius:3px;z-index:0;border:1px solid hsla(0,0%,0%,.8);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:hsla(220,11%,97%,.95);box-shadow:inset 0 1px 1px white,0 2px 3px hsla(0,0%,0%,.7)}.dataflow-node .outer{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:3px;z-index:-1}.dataflow-node.ui-selected{box-shadow:0 0 2px 2px hsla(180,100%,60%,.8),0 0 8px 4px hsla(230,100%,15%,.8)}.dataflow-node.ui-selected .outer{border:4px hsla(210,100%,60%,.66) solid;top:-5px;right:-5px;bottom:-5px;left:-5px}.dataflow-node.helper{width:100px;height:75px;border-style:dotted;background-color:rgba(255,255,255,.5)}.dataflow-node-title{cursor:move;font-size:12px;font-weight:400;font-family:proxima-nova-bold;margin:0;padding:6px 10px 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dataflow-node .controls{}.dataflow-node .controls .delete{margin-right:10px}.dataflow-node-inspect{position:absolute;top:0;right:0}.dataflow-node-inner{clear:both;color:#a8a8a8;font-size:12px;font-weight:400}.dataflow-nodes-helpers{z-index:9999;position:absolute;top:0;left:0;transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0)}.dataflow-node.fade{background-color:hsla(220,11%,77%,.85);text-shadow:0 1px 0 hsla(220,11%,100%,.3)}.dataflow-node.fade .dataflow-node-title{color:#000}.dataflow-node.fade .dataflow-node-inspect:before{text-shadow:none}.dataflow-node.fade .dataflow-node-inner{color:#8c8c8c}.dataflow-svg-edges{overflow:visible}.dataflow-edge path{position:relative;fill:none;stroke-linejoin:round}.dataflow-edge-wire{stroke:#cecece;stroke-width:8px}.dataflow-edge-shadow{stroke:hsla(0,0%,0%,.9);stroke-width:10px;fill:none}.dataflow-edge-wire.route0{stroke:#8e95a3}.dataflow-edge-wire.route1{stroke:#e67e7e}.dataflow-edge-wire.route2{stroke:#e6b27e}.dataflow-edge-wire.route3{stroke:#e6e67e}.dataflow-edge-wire.route4{stroke:#b2e67e}.dataflow-edge-wire.route5{stroke:#7ee67e}.dataflow-edge-wire.route6{stroke:#7ee6b2}.dataflow-edge-wire.route7{stroke:#7ee6e6}.dataflow-edge-wire.route8{stroke:#7eb2e6}.dataflow-edge-wire.route9{stroke:#7e7ee6}.dataflow-edge-wire.route10{stroke:#b27ee6}.dataflow-edge-wire.route11{stroke:#e67ee6}.dataflow-edge-wire.route12{stroke:#e67eb2}.dataflow-edge.highlight .dataflow-edge-shadow{stroke:#000;stroke-width:16px}.dataflow-edge.fade .dataflow-edge-wire{opacity:.45}.dataflow-edge.fade .dataflow-edge-shadow{stroke:#000;stroke-width:9px}.dataflow-node-ports{border-top:solid 1px #fff;border-bottom:solid 1px #f9f9f9;box-shadow:0 0 1px #dddfe3;background-color:hsla(0,100%,100%,.5)}.dataflow-port-label{font-family:proxima-nova-regular}.dataflow-node-ins{float:left;width:50%;padding:5px 0;text-align:left}.dataflow-port-label.in{margin-left:5px}.dataflow-node-outs{float:right;width:49%;z-index:1;padding:5px 0;text-align:right}.dataflow-port-label.out{margin-right:5px}.dataflow-node-ports ul{list-style:none;margin:0;padding:0}.dataflow-port{border:0;margin:0;padding:0;white-space:nowrap}.dataflow-port.droppable-hover{border-color:#000}.dataflow-port-hole{cursor:pointer;width:10px;height:10px;margin-bottom:-2px;display:inline-block;border:1px #fff solid;background-color:#efefef;border-radius:4px;box-shadow:inset 0 1px 2px #c9c9c9}.dataflow-port-plug.in{background-color:transparent;border-color:transparent;border-top-left-radius:3px;margin-left:-1px;width:11px;height:10px;display:inline-block}.dataflow-port-plug.out{background-color:transparent;border-color:transparent;border-top-right-radius:3px;margin-right:-1px;width:11px;height:10px;display:inline-block}.dataflow-port-plug.active,.dataflow-port-plug.helper{display:inline-block;top:0;position:relative;cursor:pointer;background-color:#ff109109;box-shadow:0 1px 1px #cecece}.dataflow-node.fade .dataflow-node-ports{border:0;background-color:transparent;box-shadow:none}.dataflow-node.fade .dataflow-node-ins,.dataflow-node.fade .dataflow-node-outs{color:#000}.dataflow-node.fade .dataflow-port-hole{border:1px #c6cad1 solid;background-color:#aaafba;box-shadow:inset 0 1px 1px #667699}.dataflow-graph.zoom-tiny .dataflow-port-label.in,.dataflow-graph.zoom-tiny .dataflow-port-label.out,.dataflow-graph.zoom-tiny .dataflow-node-inner{display:none}.dataflow-port-plug.active.route0{background-color:#f2f2f2}.dataflow-port-plug.active.route1{background-color:#fae9e9}.dataflow-port-plug.active.route2{background-color:#faf2e9}.dataflow-port-plug.active.route3{background-color:#fafae9}.dataflow-port-plug.active.route4{background-color:#f2fae9}.dataflow-port-plug.active.route5{background-color:#e9fae9}.dataflow-port-plug.active.route6{background-color:#e9faf2}.dataflow-port-plug.active.route7{background-color:#e9fafa}.dataflow-port-plug.active.route8{background-color:#e9f2fa}.dataflow-port-plug.active.route9{background-color:#e9e9fa}.dataflow-port-plug.active.route10{background-color:#f2e9fa}.dataflow-port-plug.active.route11{background-color:#fae9fa}.dataflow-port-plug.active.route12{background-color:#fae9f2}.dataflow-node.fade .dataflow-port-plug.active{background-color:#bbbfc7;margin-bottom:-1px;position:relative;box-shadow:0 1px #9198a5}.dataflow-node-ins .hasvalue .dataflow-port-hole{background-color:#7eb2e6}.dataflow-node.fade .dataflow-port-hole.active.route0,.dataflow-port-hole.active.route0{background-color:#a5a5a5}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route1{background-color:#e67e7e}.dataflow-node.fade .dataflow-port-hole.active.route2,.dataflow-port-hole.active.route2{background-color:#e6b27e}.dataflow-node.fade .dataflow-port-hole.active.route3,.dataflow-port-hole.active.route3{background-color:#e6e67e}.dataflow-node.fade .dataflow-port-hole.active.route4,.dataflow-port-hole.active.route4{background-color:#b2e67e}.dataflow-node.fade .dataflow-port-hole.active.route5,.dataflow-port-hole.active.route5{background-color:#7ee67e}.dataflow-node.fade .dataflow-port-hole.active.route6,.dataflow-port-hole.active.route6{background-color:#7ee6b2}.dataflow-node.fade .dataflow-port-hole.active.route7,.dataflow-port-hole.active.route7{background-color:#7ee6e6}.dataflow-node.fade .dataflow-port-hole.active.route8,.dataflow-port-hole.active.route8{background-color:#7eb2e6}.dataflow-node.fade .dataflow-port-hole.active.route9,.dataflow-port-hole.active.route9{background-color:#7e7ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route10{background-color:#b27ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route11{background-color:#e67ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route12{background-color:#e67eb2}.dataflow-node.fade .dataflow-port-hole.active.route0{border-color:hsla(0,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route1{border-color:hsla(0,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route2{border-color:hsla(30,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route3{border-color:hsla(60,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route4{border-color:hsla(90,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route5{border-color:hsla(120,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route6{border-color:hsla(150,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route7{border-color:hsla(180,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route8{border-color:hsla(210,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route9{border-color:hsla(240,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route10{border-color:hsla(270,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route11{border-color:hsla(300,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route12{border-color:hsla(330,100%,88%,.6)}.dataflow-card ::-webkit-scrollbar{width:5px}.dataflow-card ::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);-webkit-border-radius:5px;border-radius:5px}.dataflow-card ::-webkit-scrollbar-thumb{-webkit-border-radius:5px;border-radius:5px;background:hsla(0,0%,0%,.2);-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)}.dataflow-card ::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,0,0,.4);background:0}.dataflow-cards{z-index:4;position:absolute;top:70px;left:20px;width:300px;max-height:70%;overflow:visible}.dataflow-card{position:relative;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:hsla(225,10%,15%,.98);border:1px solid #191b1e;box-shadow:inset 0 1px 1px hsla(0,0%,66%,.1),0 1px 3px 0 hsla(0,0%,0%,.3),0 3px 13px 0 hsla(0,0%,0%,.1);margin-bottom:12px;color:#fff;text-shadow:0 1px #000}.dataflow-card-control{position:absolute;top:0;right:0}.dataflow-card-control button,.dataflow-card-control button.active{background:0;border:0}.dataflow-card-control button:before{color:#676e7e}.dataflow-card-control button.active:before{color:#3e8bc5}.dataflow-plugin-log{padding:10px}.dataflow-plugin-log ol{counter-reset:item;margin:0}.dataflow-plugin-log li{display:block;margin:.39em 0;font-size:11px}.dataflow-plugin-log li:before{content:counter(item) ". ";counter-increment:item;color:#676e7e;width:2em;display:block;float:left}.dataflow-plugin-view-source textarea.code{background-color:hsla(0,0%,0%,0);border:0;padding:10px;color:#676e7e}.dataflow-plugin-view-source textarea.code:focus{outline:0}.dataflow-plugin-library{max-height:300px;overflow-y:scroll;overflow-x:hidden;list-style:none;padding:2px;margin:0;padding-top:20px}.dataflow-plugin-library li{padding:10px;border-top:1px solid hsla(0,0%,0%,.1);border-bottom:1px solid #24272c;clear:right}.dataflow-plugin-library li:last-child{margin-bottom:0}.dataflow-plugin-library li .button{float:right;margin-left:4px;padding:2px 5px;background-color:transparent;border:0;color:#3e8bc5}.dataflow-plugin-library li .name{font-weight:700;display:block}.dataflow-plugin-library li .description{color:#676e7e}.dataflow-plugin-inspector-title{padding:3px 20px;border-bottom:1px solid hsla(220,20%,0%,.3)}.dataflow-plugin-inspector-title h1{font-size:18px}.dataflow-plugin-inspector-title h2{font-size:16px}.dataflow-node-inspector-inputs label{position:relative;box-sizing:border-box;min-height:43px;padding:0 20px;border-bottom:1px solid #202227;display:block;background-color:hsla(0,100%,0%,.1)}.dataflow-node-inspector-inputs label span{display:inline-block;margin-top:11px;width:100px;color:#676e7e}.dataflow-node-inspector-inputs textarea{width:260px;height:55px}.dataflow-node-inspector-inputs textarea,.dataflow-node-inspector-inputs input{color:#9ca2ae;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2)}.dataflow-node-inspector-inputs textarea:focus,.dataflow-node-inspector-inputs input:focus{color:#d4d7dc;background-color:red;box-shadow:0 2px 4px hsla(0,0%,40%,.1);background-color:hsla(240,7%,8%,1);border:1px solid hsla(0,0%,94%,.1)}.input-container{margin-right:.25em}.input-string,.input-int,.input-float,.input-select{padding:8px 6px;margin:5px 0;border-radius:3px;top:31px;left:100px;width:140px;background-color:#f5f6f8;border:1px solid #cfd2d7}.input-string:focus,.input-int:focus,.input-float:focus,.input-select:focus{outline:0;background-color:#fff;box-shadow:0 0 2px 1px hsla(210,100%,100%,1)}.input-select{width:5em}.input-bang{}.dataflow-node-inspector-inputs input[type=checkbox]{display:none}.dataflow-node-inspector-inputs .input-boolean-checkbox{position:absolute;left:123px;top:12px;height:20px;width:20px;border-radius:3px;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2)}.dataflow-node-inspector-inputs input[type=checkbox]:checked+.input-boolean-checkbox:before{content:"\2713";text-shadow:1px 1px 1px hsla(0,0%,0%,.2);font-size:15px;text-align:center;line-height:15px;position:relative;top:2px;left:5px}.dataflow-edge-inspector-route-choose:after{content:'';display:block;position:absolute;background-color:hsla(0,0%,0%,.5);border-radius:3px;border:1px solid hsla(220,10%,90%,.1);top:7px;bottom:7px;left:7px;right:7px}.dataflow-edge-inspector-route-choose{position:relative;padding:10px;background-color:hsla(220,10%,0%,.2);box-shadow:inset 0 1px hsla(220,10%,50%,.1)}.dataflow-edge-inspector-route-choose button{width:23px;height:23px;position:relative;z-index:1;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;cursor:pointer;border-radius:0;border:0;color:#000;margin:0;padding:7px;box-shadow:inset 0 1px 1px hsla(220,0%,90%,.3),inset 1px 0 0 hsla(220,0%,00%,.1),inset -1px 0 0 hsla(220,0%,100%,.05)}.dataflow-edge-inspector-route-choose button:first-child{border-radius:3px 0 0 3px}.dataflow-edge-inspector-route-choose button:last-child{border-radius:0 3px 3px 0}.dataflow-edge-inspector-route-choose button.route0{background-color:#b2b2b2}.dataflow-edge-inspector-route-choose button.route1{background-color:#e67e7e}.dataflow-edge-inspector-route-choose button.route2{background-color:#e6b27e}.dataflow-edge-inspector-route-choose button.route3{background-color:#e6e67e}.dataflow-edge-inspector-route-choose button.route4{background-color:#b2e67e}.dataflow-edge-inspector-route-choose button.route5{background-color:#7ee67e}.dataflow-edge-inspector-route-choose button.route6{background-color:#7ee6b2}.dataflow-edge-inspector-route-choose button.route7{background-color:#7ee6e6}.dataflow-edge-inspector-route-choose button.route8{background-color:#7eb2e6}.dataflow-edge-inspector-route-choose button.route9{background-color:#7e7ee6}.dataflow-edge-inspector-route-choose button.route10{background-color:#b27ee6}.dataflow-edge-inspector-route-choose button.route11{background-color:#e67ee6}.dataflow-edge-inspector-route-choose button.route12{background-color:#e67eb2}.dataflow-edge-inspector-route-choose button.route0:hover{background-color:#a5a5a5}.dataflow-edge-inspector-route-choose button.route1:hover{background-color:#e46767}.dataflow-edge-inspector-route-choose button.route2:hover{background-color:#e4a567}.dataflow-edge-inspector-route-choose button.route3:hover{background-color:#e4e467}.dataflow-edge-inspector-route-choose button.route4:hover{background-color:#a5e467}.dataflow-edge-inspector-route-choose button.route5:hover{background-color:#67e467}.dataflow-edge-inspector-route-choose button.route6:hover{background-color:#67e4a5}.dataflow-edge-inspector-route-choose button.route7:hover{background-color:#67e4e4}.dataflow-edge-inspector-route-choose button.route8:hover{background-color:#67a5e4}.dataflow-edge-inspector-route-choose button.route9:hover{background-color:#6767e4}.dataflow-edge-inspector-route-choose button.route10:hover{background-color:#a567e4}.dataflow-edge-inspector-route-choose button.route11:hover{background-color:#e467e4}.dataflow-edge-inspector-route-choose button.route12:hover{background-color:#e467a5}.dataflow-edge-inspector-route-choose button.active{-webkit-transform:scale(1.15);-moz-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15);z-index:2;border-radius:3px}.dataflow-edge-inspector-events{list-style:none;margin-top:1em;max-height:70px;overflow-x:hidden;overflow-y:scroll}.dataflow-edge-inspector-events .data{color:#e6b27e}.dataflow-edge-inspector-events .begingroup:before{content:"< ";color:#b2b2b2}.dataflow-edge-inspector-events .begingroup{color:#b2b2b2}.dataflow-edge-inspector-events .endgroup:before{content:"> ";color:#b2b2b2}.dataflow-edge-inspector-events .endgroup{color:#b2b2b2}.dataflow-edge-inspector-events .disconnect{border-top:1px solid #e46767;margin:0 40px}.dataflow-menu{list-style:none;padding:0;margin:0}.dataflow-menu li{display:inline}.dataflow-menu li button{padding:10px 15px;color:#3e8bc5;border:0;background-color:transparent;font-size:20px}.dataflow-menu li button .name{display:none}.helper{z-index:9999}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:20px;height:20px;right:-5px;bottom:-5px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.dataflow-plugin-search{z-index:3;position:absolute;top:20px;right:20px;left:20px;background-color:hsla(225,10%,15%,.98);border:1px solid #191b1e;box-shadow:inset 0 1px 1px hsla(0,0%,66%,.1),0 1px 3px 0 hsla(0,0%,0%,.3),0 3px 13px 0 hsla(0,0%,0%,.1);margin-bottom:3px;color:#fff;text-shadow:0 1px #000;width:300px;height:36px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:none}.dataflow-plugin-search input{color:#9ca2ae;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2);width:260px;padding:0;margin:0;line-height:36px;margin-right:10px;font-size:16px;border-radius:3px}.dataflow-plugin-search input:focus{color:#d4d7dc;background-color:red;box-shadow:0 2px 4px hsla(0,0%,40%,.1);background-color:hsla(240,7%,8%,1);border:1px solid hsla(0,0%,94%,.1)}.dataflow-plugin-search button{color:#3e8bc5;padding:1px;border:0;background-color:transparent;font-size:20px}.dataflow-plugin-search-results{max-height:300px;overflow-y:scroll;overflow-x:hidden;list-style:none;padding:2px;margin:0;padding-top:20px}.dataflow-plugin-search-results li{padding:10px;border-top:1px solid hsla(0,0%,0%,.1);border-bottom:1px solid #24272c;clear:right}.dataflow-plugin-search-results li:last-child{margin-bottom:0}.dataflow-plugin-search-results li i{float:right;margin-left:4px;padding:2px 5px;background-color:transparent;border:0;color:#3e8bc5}.dataflow-plugin-search-results li .name{font-weight:700;display:block}.dataflow-plugin-search-results li .description{color:#676e7e} \ No newline at end of file +@font-face{font-family:proxima-nova-light;src:url(../../fonts/proximanova-light-webfont.eot);src:local("?"),url(../../fonts/proximanova-light-webfont.woff) format("woff"),url(../../fonts/proximanova-light-webfont.ttf) format("truetype"),url(../../fonts/proximanova-light-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-regular;src:url(../../fonts/proximanova-regular-webfont.eot);src:local("?"),url(../../fonts/proximanova-regular-webfont.woff) format("woff"),url(../../fonts/proximanova-regular-webfont.ttf) format("truetype"),url(../../fonts/proximanova-regular-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-bold;src:url(../../fonts/proximanova-bold-webfont.eot);src:local("?"),url(../../fonts/proximanova-bold-webfont.woff) format("woff"),url(../../fonts/proximanova-bold-webfont.ttf) format("truetype"),url(../../fonts/proximanova-bold-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:proxima-nova-semibold;src:url(../../fonts/proximanova-semibold-webfont.eot);src:local("?"),url(../../fonts/proximanova-semibold-webfont.woff) format("woff"),url(../../fonts/proximanova-semibold-webfont.ttf) format("truetype"),url(../../fonts/proximanova-semibold-webfont.svg#webfont) format("svg");font-weight:400;font-style:normal}@font-face{font-family:FontAwesome;src:url(../../fonts/fontawesome-webfont.eot?v=3.2.1);src:url(../../fonts/fontawesome-webfont.eot?#iefix&v=3.2.1) format('embedded-opentype'),url(../../fonts/fontawesome-webfont.woff?v=3.2.1) format('woff'),url(../../fonts/fontawesome-webfont.ttf?v=3.2.1) format('truetype'),url(../../fonts/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1) format('svg');font-weight:400;font-style:normal}[class^=icon-],[class*=" icon-"]{font-family:FontAwesome;font-weight:400;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^=icon-]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}a [class^=icon-],a [class*=" icon-"]{display:inline}[class^=icon-].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:.2857142857142857em}[class^=icon-].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em}.icons-ul{margin-left:2.142857142857143em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit}[class^=icon-].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^=icon-].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^=icon-].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}[class^=icon-],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}.btn [class^=icon-].icon-large,.nav [class^=icon-].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^=icon-].icon-spin,.nav [class^=icon-].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^=icon-],.nav-pills [class^=icon-],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^=icon-].icon-large,.nav-pills [class^=icon-].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}.btn [class^=icon-].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^=icon-].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^=icon-].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^=icon-].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^=icon-].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^=icon-],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^=icon-].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^=icon-].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^=icon-].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^=icon-].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.nav-list [class^=icon-],.nav-list [class*=" icon-"]{line-height:inherit}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^=icon-],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical:before{-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}.dataflow{font-family:proxima-nova-regular,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:0 1px 0 #fff;line-height:20px;color:#232429;position:relative;top:0;left:0;margin:0;padding:0;width:100%;height:100%;background-color:#2a2b31;overflow:hidden}.dataflow button,.dataflow input[type=submit],.dataflow .button{cursor:pointer;border-radius:3px;border:1px #CCC solid;background-color:#EEE;color:#000;font-size:12px;margin:1px;padding:3px 6px}.dataflow button:before,.dataflow .button:before{color:#666}.dataflow button:active,.dataflow button.active,.dataflow input[type=submit]:active,.dataflow .button:active{background-color:#DDD}.dataflow .dataflow-node-inspect{border:0;padding:8px 10px;background-color:transparent}.dataflow .dataflow-node-inspect:before{color:#a8a8a8;text-shadow:0 1px #fff}.dataflow-g,.dataflow-graph,.dataflow-graph-panzoom{position:absolute;top:0;right:0;bottom:0;left:0}.dataflow-graph-panzoom{z-index:1}.dataflow-graph{z-index:1}.dataflow-edges{position:absolute;top:0;left:0;z-index:1}.dataflow-nodes{position:relative;top:0;left:0;z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dataflow-graph-controls{position:absolute;top:0;left:0;z-index:2}.dataflow-node{font-size:12px;position:absolute;display:inline-block;width:175px;border:1px #aaa solid;background-color:rgba(255,255,255,.8);border-radius:3px;z-index:0;border:1px solid hsla(0,0%,0%,.8);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:hsla(220,11%,97%,.95);box-shadow:inset 0 1px 1px white,0 2px 3px hsla(0,0%,0%,.7)}.dataflow-node .outer{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:3px;z-index:-1}.dataflow-node.ui-selected{box-shadow:0 0 2px 2px hsla(180,100%,60%,.8),0 0 8px 4px hsla(230,100%,15%,.8)}.dataflow-node.ui-selected .outer{border:4px hsla(210,100%,60%,.66) solid;top:-5px;right:-5px;bottom:-5px;left:-5px}.dataflow-node.helper{width:100px;height:75px;border-style:dotted;background-color:rgba(255,255,255,.5)}.dataflow-node-title{cursor:move;font-size:12px;font-weight:400;font-family:proxima-nova-bold;margin:0;padding:6px 10px 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dataflow-node .controls{}.dataflow-node .controls .delete{margin-right:10px}.dataflow-node-inspect{position:absolute;top:0;right:0}.dataflow-node-inner{clear:both;color:#a8a8a8;font-size:12px;font-weight:400}.dataflow-nodes-helpers{z-index:9999;position:absolute;top:0;left:0;transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0)}.dataflow-node.fade{background-color:hsla(220,11%,77%,.85);text-shadow:0 1px 0 hsla(220,11%,100%,.3)}.dataflow-node.fade .dataflow-node-title{color:#000}.dataflow-node.fade .dataflow-node-inspect:before{text-shadow:none}.dataflow-node.fade .dataflow-node-inner{color:#8c8c8c}.dataflow-svg-edges{overflow:visible}.dataflow-edge path{position:relative;fill:none;stroke-linejoin:round}.dataflow-edge-wire{stroke:#cecece;stroke-width:8px}.dataflow-edge-shadow{stroke:hsla(0,0%,0%,.9);stroke-width:10px;fill:none}.dataflow-edge-wire.route0{stroke:#8e95a3}.dataflow-edge-wire.route1{stroke:#e67e7e}.dataflow-edge-wire.route2{stroke:#e6b27e}.dataflow-edge-wire.route3{stroke:#e6e67e}.dataflow-edge-wire.route4{stroke:#b2e67e}.dataflow-edge-wire.route5{stroke:#7ee67e}.dataflow-edge-wire.route6{stroke:#7ee6b2}.dataflow-edge-wire.route7{stroke:#7ee6e6}.dataflow-edge-wire.route8{stroke:#7eb2e6}.dataflow-edge-wire.route9{stroke:#7e7ee6}.dataflow-edge-wire.route10{stroke:#b27ee6}.dataflow-edge-wire.route11{stroke:#e67ee6}.dataflow-edge-wire.route12{stroke:#e67eb2}.dataflow-edge.highlight .dataflow-edge-shadow{stroke:#000;stroke-width:16px}.dataflow-edge.fade .dataflow-edge-wire{opacity:.45}.dataflow-edge.fade .dataflow-edge-shadow{stroke:#000;stroke-width:9px}.dataflow-node-ports{border-top:solid 1px #fff;border-bottom:solid 1px #f9f9f9;box-shadow:0 0 1px #dddfe3;background-color:hsla(0,100%,100%,.5)}.dataflow-port-label{font-family:proxima-nova-regular}.dataflow-node-ins{float:left;width:50%;padding:5px 0;text-align:left}.dataflow-port-label.in{margin-left:5px}.dataflow-node-outs{float:right;width:49%;z-index:1;padding:5px 0;text-align:right}.dataflow-port-label.out{margin-right:5px}.dataflow-node-ports ul{list-style:none;margin:0;padding:0}.dataflow-port{border:0;margin:0;padding:0;white-space:nowrap}.dataflow-port.droppable-hover{border-color:#000}.dataflow-port-hole{cursor:pointer;width:10px;height:10px;margin-bottom:-2px;display:inline-block;border:1px #fff solid;background-color:#efefef;border-radius:4px;box-shadow:inset 0 1px 2px #c9c9c9}.dataflow-port-plug.in{background-color:transparent;border-color:transparent;border-top-left-radius:3px;margin-left:-1px;width:11px;height:10px;display:inline-block}.dataflow-port-plug.out{background-color:transparent;border-color:transparent;border-top-right-radius:3px;margin-right:-1px;width:11px;height:10px;display:inline-block}.dataflow-port-plug.active,.dataflow-port-plug.helper{display:inline-block;top:0;position:relative;cursor:pointer;background-color:#ff109109;box-shadow:0 1px 1px #cecece}.dataflow-node.fade .dataflow-node-ports{border:0;background-color:transparent;box-shadow:none}.dataflow-node.fade .dataflow-node-ins,.dataflow-node.fade .dataflow-node-outs{color:#000}.dataflow-node.fade .dataflow-port-hole{border:1px #c6cad1 solid;background-color:#aaafba;box-shadow:inset 0 1px 1px #667699}.dataflow-graph.zoom-tiny .dataflow-port-label.in,.dataflow-graph.zoom-tiny .dataflow-port-label.out,.dataflow-graph.zoom-tiny .dataflow-node-inner{display:none}.dataflow-port-plug.active.route0{background-color:#f2f2f2}.dataflow-port-plug.active.route1{background-color:#fae9e9}.dataflow-port-plug.active.route2{background-color:#faf2e9}.dataflow-port-plug.active.route3{background-color:#fafae9}.dataflow-port-plug.active.route4{background-color:#f2fae9}.dataflow-port-plug.active.route5{background-color:#e9fae9}.dataflow-port-plug.active.route6{background-color:#e9faf2}.dataflow-port-plug.active.route7{background-color:#e9fafa}.dataflow-port-plug.active.route8{background-color:#e9f2fa}.dataflow-port-plug.active.route9{background-color:#e9e9fa}.dataflow-port-plug.active.route10{background-color:#f2e9fa}.dataflow-port-plug.active.route11{background-color:#fae9fa}.dataflow-port-plug.active.route12{background-color:#fae9f2}.dataflow-node.fade .dataflow-port-plug.active{background-color:#bbbfc7;margin-bottom:-1px;position:relative;box-shadow:0 1px #9198a5}.dataflow-node-ins .hasvalue .dataflow-port-hole{background-color:#7eb2e6}.dataflow-node .dataflow-port.blur{opacity:.2}.dataflow-node.fade .dataflow-port-hole.active.route0,.dataflow-port-hole.active.route0{background-color:#a5a5a5}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route1{background-color:#e67e7e}.dataflow-node.fade .dataflow-port-hole.active.route2,.dataflow-port-hole.active.route2{background-color:#e6b27e}.dataflow-node.fade .dataflow-port-hole.active.route3,.dataflow-port-hole.active.route3{background-color:#e6e67e}.dataflow-node.fade .dataflow-port-hole.active.route4,.dataflow-port-hole.active.route4{background-color:#b2e67e}.dataflow-node.fade .dataflow-port-hole.active.route5,.dataflow-port-hole.active.route5{background-color:#7ee67e}.dataflow-node.fade .dataflow-port-hole.active.route6,.dataflow-port-hole.active.route6{background-color:#7ee6b2}.dataflow-node.fade .dataflow-port-hole.active.route7,.dataflow-port-hole.active.route7{background-color:#7ee6e6}.dataflow-node.fade .dataflow-port-hole.active.route8,.dataflow-port-hole.active.route8{background-color:#7eb2e6}.dataflow-node.fade .dataflow-port-hole.active.route9,.dataflow-port-hole.active.route9{background-color:#7e7ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route10{background-color:#b27ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route11{background-color:#e67ee6}.dataflow-node.fade .dataflow-port-hole.active.route1,.dataflow-port-hole.active.route12{background-color:#e67eb2}.dataflow-node.fade .dataflow-port-hole.active.route0{border-color:hsla(0,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route1{border-color:hsla(0,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route2{border-color:hsla(30,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route3{border-color:hsla(60,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route4{border-color:hsla(90,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route5{border-color:hsla(120,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route6{border-color:hsla(150,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route7{border-color:hsla(180,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route8{border-color:hsla(210,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route9{border-color:hsla(240,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route10{border-color:hsla(270,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route11{border-color:hsla(300,100%,88%,.6)}.dataflow-node.fade .dataflow-port-hole.active.route12{border-color:hsla(330,100%,88%,.6)}.dataflow-card ::-webkit-scrollbar{width:5px}.dataflow-card ::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);-webkit-border-radius:5px;border-radius:5px}.dataflow-card ::-webkit-scrollbar-thumb{-webkit-border-radius:5px;border-radius:5px;background:hsla(0,0%,0%,.2);-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)}.dataflow-card ::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,0,0,.4);background:0}.dataflow-cards{z-index:4;position:absolute;top:70px;left:20px;width:300px;max-height:70%;overflow:visible}.dataflow-card{position:relative;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:hsla(225,10%,15%,.98);border:1px solid #191b1e;box-shadow:inset 0 1px 1px hsla(0,0%,66%,.1),0 1px 3px 0 hsla(0,0%,0%,.3),0 3px 13px 0 hsla(0,0%,0%,.1);margin-bottom:12px;color:#fff;text-shadow:0 1px #000}.dataflow-card-control{position:absolute;top:0;right:0}.dataflow-card-control button,.dataflow-card-control button.active{background:0;border:0}.dataflow-card-control button:before{color:#676e7e}.dataflow-card-control button.active:before{color:#3e8bc5}.dataflow-plugin-log{padding:10px}.dataflow-plugin-log ol{counter-reset:item;margin:0}.dataflow-plugin-log li{display:block;margin:.39em 0;font-size:11px}.dataflow-plugin-log li:before{content:counter(item) ". ";counter-increment:item;color:#676e7e;width:2em;display:block;float:left}.dataflow-plugin-view-source textarea.code{background-color:hsla(0,0%,0%,0);border:0;padding:10px;color:#676e7e}.dataflow-plugin-view-source textarea.code:focus{outline:0}.dataflow-plugin-library{max-height:300px;overflow-y:scroll;overflow-x:hidden;list-style:none;padding:2px;margin:0;padding-top:20px}.dataflow-plugin-library li{padding:10px;border-top:1px solid hsla(0,0%,0%,.1);border-bottom:1px solid #24272c;clear:right}.dataflow-plugin-library li:last-child{margin-bottom:0}.dataflow-plugin-library li .button{float:right;margin-left:4px;padding:2px 5px;background-color:transparent;border:0;color:#3e8bc5}.dataflow-plugin-library li .name{font-weight:700;display:block}.dataflow-plugin-library li .description{color:#676e7e}.dataflow-plugin-inspector-title{padding:3px 20px;border-bottom:1px solid hsla(220,20%,0%,.3)}.dataflow-plugin-inspector-title h1{font-size:18px}.dataflow-plugin-inspector-title h2{font-size:16px}.dataflow-node-inspector-inputs label{position:relative;box-sizing:border-box;min-height:43px;padding:0 20px;border-bottom:1px solid #202227;display:block;background-color:hsla(0,100%,0%,.1)}.dataflow-node-inspector-inputs label span{display:inline-block;margin-top:11px;width:100px;color:#676e7e}.dataflow-node-inspector-inputs textarea{width:260px;height:55px}.dataflow-node-inspector-inputs textarea,.dataflow-node-inspector-inputs input{color:#9ca2ae;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2)}.dataflow-node-inspector-inputs textarea:focus,.dataflow-node-inspector-inputs input:focus{color:#d4d7dc;background-color:red;box-shadow:0 2px 4px hsla(0,0%,40%,.1);background-color:hsla(240,7%,8%,1);border:1px solid hsla(0,0%,94%,.1)}.input-container{margin-right:.25em}.input-string,.input-int,.input-float,.input-select{padding:8px 6px;margin:5px 0;border-radius:3px;top:31px;left:100px;width:140px;background-color:#f5f6f8;border:1px solid #cfd2d7}.input-string:focus,.input-int:focus,.input-float:focus,.input-select:focus{outline:0;background-color:#fff;box-shadow:0 0 2px 1px hsla(210,100%,100%,1)}.input-select{width:5em}.input-bang{}.dataflow-node-inspector-inputs input[type=checkbox]{display:none}.dataflow-node-inspector-inputs .input-boolean-checkbox{position:absolute;left:123px;top:12px;height:20px;width:20px;border-radius:3px;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2)}.dataflow-node-inspector-inputs input[type=checkbox]:checked+.input-boolean-checkbox:before{content:"\2713";text-shadow:1px 1px 1px hsla(0,0%,0%,.2);font-size:15px;text-align:center;line-height:15px;position:relative;top:2px;left:5px}.dataflow-edge-inspector-route-choose:after{content:'';display:block;position:absolute;background-color:hsla(0,0%,0%,.5);border-radius:3px;border:1px solid hsla(220,10%,90%,.1);top:7px;bottom:7px;left:7px;right:7px}.dataflow-edge-inspector-route-choose{position:relative;padding:10px;background-color:hsla(220,10%,0%,.2);box-shadow:inset 0 1px hsla(220,10%,50%,.1)}.dataflow-edge-inspector-route-choose button{width:23px;height:23px;position:relative;z-index:1;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;cursor:pointer;border-radius:0;border:0;color:#000;margin:0;padding:7px;box-shadow:inset 0 1px 1px hsla(220,0%,90%,.3),inset 1px 0 0 hsla(220,0%,00%,.1),inset -1px 0 0 hsla(220,0%,100%,.05)}.dataflow-edge-inspector-route-choose button:first-child{border-radius:3px 0 0 3px}.dataflow-edge-inspector-route-choose button:last-child{border-radius:0 3px 3px 0}.dataflow-edge-inspector-route-choose button.route0{background-color:#b2b2b2}.dataflow-edge-inspector-route-choose button.route1{background-color:#e67e7e}.dataflow-edge-inspector-route-choose button.route2{background-color:#e6b27e}.dataflow-edge-inspector-route-choose button.route3{background-color:#e6e67e}.dataflow-edge-inspector-route-choose button.route4{background-color:#b2e67e}.dataflow-edge-inspector-route-choose button.route5{background-color:#7ee67e}.dataflow-edge-inspector-route-choose button.route6{background-color:#7ee6b2}.dataflow-edge-inspector-route-choose button.route7{background-color:#7ee6e6}.dataflow-edge-inspector-route-choose button.route8{background-color:#7eb2e6}.dataflow-edge-inspector-route-choose button.route9{background-color:#7e7ee6}.dataflow-edge-inspector-route-choose button.route10{background-color:#b27ee6}.dataflow-edge-inspector-route-choose button.route11{background-color:#e67ee6}.dataflow-edge-inspector-route-choose button.route12{background-color:#e67eb2}.dataflow-edge-inspector-route-choose button.route0:hover{background-color:#a5a5a5}.dataflow-edge-inspector-route-choose button.route1:hover{background-color:#e46767}.dataflow-edge-inspector-route-choose button.route2:hover{background-color:#e4a567}.dataflow-edge-inspector-route-choose button.route3:hover{background-color:#e4e467}.dataflow-edge-inspector-route-choose button.route4:hover{background-color:#a5e467}.dataflow-edge-inspector-route-choose button.route5:hover{background-color:#67e467}.dataflow-edge-inspector-route-choose button.route6:hover{background-color:#67e4a5}.dataflow-edge-inspector-route-choose button.route7:hover{background-color:#67e4e4}.dataflow-edge-inspector-route-choose button.route8:hover{background-color:#67a5e4}.dataflow-edge-inspector-route-choose button.route9:hover{background-color:#6767e4}.dataflow-edge-inspector-route-choose button.route10:hover{background-color:#a567e4}.dataflow-edge-inspector-route-choose button.route11:hover{background-color:#e467e4}.dataflow-edge-inspector-route-choose button.route12:hover{background-color:#e467a5}.dataflow-edge-inspector-route-choose button.active{-webkit-transform:scale(1.15);-moz-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15);z-index:2;border-radius:3px}.dataflow-edge-inspector-events{list-style:none;margin-top:1em;max-height:70px;overflow-x:hidden;overflow-y:scroll}.dataflow-edge-inspector-events .data{color:#e6b27e}.dataflow-edge-inspector-events .begingroup:before{content:"< ";color:#b2b2b2}.dataflow-edge-inspector-events .begingroup{color:#b2b2b2}.dataflow-edge-inspector-events .endgroup:before{content:"> ";color:#b2b2b2}.dataflow-edge-inspector-events .endgroup{color:#b2b2b2}.dataflow-edge-inspector-events .disconnect{border-top:1px solid #e46767;margin:0 40px}.dataflow-menu{list-style:none;padding:0;margin:0}.dataflow-menu li{display:inline}.dataflow-menu li button{padding:10px 15px;color:#3e8bc5;border:0;background-color:transparent;font-size:20px}.dataflow-menu li button .name{display:none}.helper{z-index:9999}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:20px;height:20px;right:-5px;bottom:-5px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.dataflow-plugin-search{z-index:3;position:absolute;top:20px;right:20px;left:20px;background-color:hsla(225,10%,15%,.98);border:1px solid #191b1e;box-shadow:inset 0 1px 1px hsla(0,0%,66%,.1),0 1px 3px 0 hsla(0,0%,0%,.3),0 3px 13px 0 hsla(0,0%,0%,.1);margin-bottom:3px;color:#fff;text-shadow:0 1px #000;width:300px;height:36px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:none}.dataflow-plugin-search input{color:#9ca2ae;background-color:hsla(240,7%,11%,.8);border:1px solid hsla(0,0%,63%,.1);box-shadow:inset 0 1px 3px hsla(0,0%,0%,.2);width:260px;padding:0;margin:0;line-height:36px;margin-right:10px;font-size:16px;border-radius:3px}.dataflow-plugin-search input:focus{color:#d4d7dc;background-color:red;box-shadow:0 2px 4px hsla(0,0%,40%,.1);background-color:hsla(240,7%,8%,1);border:1px solid hsla(0,0%,94%,.1)}.dataflow-plugin-search button{color:#3e8bc5;padding:1px;border:0;background-color:transparent;font-size:20px}.dataflow-plugin-search-results{max-height:300px;overflow-y:scroll;overflow-x:hidden;list-style:none;padding:2px;margin:0;padding-top:20px}.dataflow-plugin-search-results li{padding:10px;border-top:1px solid hsla(0,0%,0%,.1);border-bottom:1px solid #24272c;clear:right}.dataflow-plugin-search-results li:last-child{margin-bottom:0}.dataflow-plugin-search-results li i{float:right;margin-left:4px;padding:2px 5px;background-color:transparent;border:0;color:#3e8bc5}.dataflow-plugin-search-results li .name{font-weight:700;display:block}.dataflow-plugin-search-results li .description{color:#676e7e} \ No newline at end of file diff --git a/src/modules/graph-view.js b/src/modules/graph-view.js index 0fcfab6..7cd58e1 100644 --- a/src/modules/graph-view.js +++ b/src/modules/graph-view.js @@ -342,6 +342,39 @@ edge.view.unfade(); } }); + }, + startHighlightCompatible: function (port, fromInput) { + this.model.nodes.each(function (node) { + node.outputs.each(function (output) { + if (output === port) { + return; + } + if (!fromInput) { + output.view.blur(); + return; + } + if (output.canConnect() && (output.type === 'all' || output.type === port.type)) { + return; + } + output.view.blur(); + }); + node.inputs.each(function (input) { + if (input === port) { + return; + } + if (fromInput) { + input.view.blur(); + return; + } + if (input.canConnect() && (input.type === 'all' || input.type === port.type)) { + return; + } + input.view.blur(); + }); + }); + }, + stopHighlightCompatible: function (port, fromInput) { + this.$el.find('.dataflow-port.blur').removeClass('blur'); } }); diff --git a/src/modules/input-view.js b/src/modules/input-view.js index 2d4fb78..ee501ad 100644 --- a/src/modules/input-view.js +++ b/src/modules/input-view.js @@ -275,6 +275,8 @@ graphSVGElement.appendChild(this.previewEdgeNewView.el); zoom = this.model.parentNode.parentGraph.get('zoom'); + + this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model, true); }, newEdgeDrag: function(event, ui){ if (!this.previewEdgeNewView || !ui) { @@ -302,6 +304,7 @@ this.previewEdgeNewView.remove(); delete this.previewEdgeNew; delete this.previewEdgeNewView; + this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model, true); }, getTopEdge: function() { var topEdge; @@ -379,6 +382,12 @@ delete this.previewEdgeChangeView; } }, + blur: function () { + this.$el.addClass('blur'); + }, + unblur: function () { + this.$el.removeClass('blur'); + }, connectEdge: function(event, ui) { // Dropped to this el var otherPort = ui.helper.data("port"); diff --git a/src/modules/output-view.js b/src/modules/output-view.js index 7d327b7..67bc66b 100644 --- a/src/modules/output-view.js +++ b/src/modules/output-view.js @@ -102,6 +102,7 @@ zoom = this.model.parentNode.parentGraph.get('zoom'); + this.model.parentNode.parentGraph.view.startHighlightCompatible(this.model); }, newEdgeDrag: function(event, ui){ // Don't drag node @@ -127,6 +128,7 @@ this.previewEdgeView.remove(); delete this.previewEdge; delete this.previewEdgeView; + this.model.parentNode.parentGraph.view.stopHighlightCompatible(this.model); }, getTopEdge: function() { var topEdge; @@ -204,6 +206,12 @@ delete this.previewEdgeChangeView; } }, + blur: function () { + this.$el.addClass('blur'); + }, + unblur: function () { + this.$el.removeClass('blur'); + }, connectEdge: function(event, ui) { // Dropped to this el var otherPort = ui.helper.data("port"); diff --git a/themes/default/modules/port.css b/themes/default/modules/port.css index b386cc7..da98967 100644 --- a/themes/default/modules/port.css +++ b/themes/default/modules/port.css @@ -140,6 +140,9 @@ .dataflow-node-ins .hasvalue .dataflow-port-hole { background-color: hsl( 210, 68%, 70%); } +.dataflow-node .dataflow-port.blur { + opacity: 0.2; +} .dataflow-node.fade .dataflow-port-hole.active.route0, .dataflow-port-hole.active.route0 { background-color: hsl( 0, 0%, 65%); } .dataflow-node.fade .dataflow-port-hole.active.route1, .dataflow-port-hole.active.route1 { background-color: hsl( 0, 68%, 70%); }