From 667b04f62ab924508cdcc575e9529b8901499cf5 Mon Sep 17 00:00:00 2001 From: tamat Date: Mon, 16 Aug 2021 16:45:36 +0200 Subject: [PATCH] replaced old roundRect function --- build/litegraph.core.js | 27 +++-- build/litegraph.core.min.js | 202 ++++++++++++++++++------------------ build/litegraph.js | 27 +++-- build/litegraph.min.js | 202 ++++++++++++++++++------------------ build/litegraph_mini.js | 27 +++-- build/litegraph_mini.min.js | 202 ++++++++++++++++++------------------ package.json | 2 +- src/litegraph.js | 27 +++-- 8 files changed, 352 insertions(+), 364 deletions(-) diff --git a/build/litegraph.core.js b/build/litegraph.core.js index 8a036ea8b4..fcf58b3f68 100644 --- a/build/litegraph.core.js +++ b/build/litegraph.core.js @@ -7031,7 +7031,7 @@ LGraphNode.prototype.executeAction = function(action) ctx.fillStyle = "#111"; ctx.globalAlpha = 0.8; ctx.beginPath(); - ctx.roundRect(10,10,w, (num + 1) * h + 50,8 ); + ctx.roundRect(10,10,w, (num + 1) * h + 50,[8] ); ctx.fill(); ctx.globalAlpha = 1; @@ -7118,7 +7118,7 @@ LGraphNode.prototype.executeAction = function(action) if(clicked) ctx.fillStyle = "#AAA"; ctx.beginPath(); - ctx.roundRect(x,y,w,h,4 ); + ctx.roundRect(x,y,w,h,[4] ); ctx.fill(); if(text != null) @@ -7431,7 +7431,7 @@ LGraphNode.prototype.executeAction = function(action) if (shape == LiteGraph.BOX_SHAPE) { ctx.rect(0, 0, size[0], size[1]); } else if (shape == LiteGraph.ROUND_SHAPE) { - ctx.roundRect(0, 0, size[0], size[1], 10); + ctx.roundRect(0, 0, size[0], size[1], [10]); } else if (shape == LiteGraph.CIRCLE_SHAPE) { ctx.arc( size[0] * 0.5, @@ -7783,7 +7783,7 @@ LGraphNode.prototype.executeAction = function(action) ctx.shadowBlur = 3; ctx.fillStyle = "#454"; ctx.beginPath(); - ctx.roundRect( pos[0] - w*0.5, pos[1] - 15 - h, w, h,3, 3); + ctx.roundRect( pos[0] - w*0.5, pos[1] - 15 - h, w, h, [3]); ctx.moveTo( pos[0] - 10, pos[1] - 15 ); ctx.lineTo( pos[0] + 10, pos[1] - 15 ); ctx.lineTo( pos[0], pos[1] - 5 ); @@ -7852,8 +7852,7 @@ LGraphNode.prototype.executeAction = function(action) area[1], area[2], area[3], - this.round_radius, - shape == LiteGraph.CARD_SHAPE ? 0 : this.round_radius + shape == LiteGraph.CARD_SHAPE ? [this.round_radius,this.round_radius,0,0] : [this.round_radius] ); } else if (shape == LiteGraph.CIRCLE_SHAPE) { ctx.arc( @@ -7918,8 +7917,7 @@ LGraphNode.prototype.executeAction = function(action) -title_height, size[0] + 1, title_height, - this.round_radius, - node.flags.collapsed ? this.round_radius : 0 + node.flags.collapsed ? [this.round_radius] : [this.round_radius,this.round_radius,0,0] ); } ctx.fill(); @@ -8036,7 +8034,7 @@ LGraphNode.prototype.executeAction = function(action) else { ctx.beginPath(); - ctx.roundRect(x+2, -w+2, w-4, w-4,4); + ctx.roundRect(x+2, -w+2, w-4, w-4,[4]); ctx.fill(); } ctx.fillStyle = "#333"; @@ -8082,7 +8080,7 @@ LGraphNode.prototype.executeAction = function(action) -6 + area[1], 12 + area[2], 12 + area[3], - this.round_radius * 2 + [this.round_radius * 2] ); } else if (shape == LiteGraph.CARD_SHAPE) { ctx.roundRect( @@ -8090,8 +8088,7 @@ LGraphNode.prototype.executeAction = function(action) -6 + area[1], 12 + area[2], 12 + area[3], - this.round_radius * 2, - 2 + [this.round_radius * 2,2,this.round_radius * 2,2] ); } else if (shape == LiteGraph.CIRCLE_SHAPE) { ctx.arc( @@ -8681,7 +8678,7 @@ LGraphNode.prototype.executeAction = function(action) ctx.fillStyle = background_color; ctx.beginPath(); if (show_text) - ctx.roundRect(margin, posY, widget_width - margin * 2, H, H * 0.5); + ctx.roundRect(margin, posY, widget_width - margin * 2, H, [H * 0.5]); else ctx.rect(margin, posY, widget_width - margin * 2, H ); ctx.fill(); @@ -8738,7 +8735,7 @@ LGraphNode.prototype.executeAction = function(action) ctx.fillStyle = background_color; ctx.beginPath(); if(show_text) - ctx.roundRect(margin, posY, widget_width - margin * 2, H, H * 0.5); + ctx.roundRect(margin, posY, widget_width - margin * 2, H, [H * 0.5] ); else ctx.rect(margin, posY, widget_width - margin * 2, H ); ctx.fill(); @@ -8798,7 +8795,7 @@ LGraphNode.prototype.executeAction = function(action) ctx.fillStyle = background_color; ctx.beginPath(); if (show_text) - ctx.roundRect(margin, posY, widget_width - margin * 2, H, H * 0.5); + ctx.roundRect(margin, posY, widget_width - margin * 2, H, [H * 0.5]); else ctx.rect( margin, posY, widget_width - margin * 2, H ); ctx.fill(); diff --git a/build/litegraph.core.min.js b/build/litegraph.core.min.js index 7d73f32e79..f3f0ca15d8 100644 --- a/build/litegraph.core.min.js +++ b/build/litegraph.core.min.js @@ -169,18 +169,18 @@ b[d];a.save();a.translate(e.pos[0],e.pos[1]);this.drawNode(e,a);a.restore()}this (this.connecting_node.horizontal?f.DOWN:f.RIGHT),f.CENTER);a.beginPath();this.connecting_output.type===f.EVENT||this.connecting_output.shape===f.BOX_SHAPE?a.rect(this.connecting_pos[0]-6+.5,this.connecting_pos[1]-5+.5,14,10):this.connecting_output.shape===f.ARROW_SHAPE?(a.moveTo(this.connecting_pos[0]+8,this.connecting_pos[1]+.5),a.lineTo(this.connecting_pos[0]-4,this.connecting_pos[1]+6+.5),a.lineTo(this.connecting_pos[0]-4,this.connecting_pos[1]-6+.5),a.closePath()):a.arc(this.connecting_pos[0], this.connecting_pos[1],4,0,2*Math.PI);a.fill();a.fillStyle="#ffcc00";this._highlight_input&&(a.beginPath(),this._highlight_input_slot.shape===f.ARROW_SHAPE?(a.moveTo(this._highlight_input[0]+8,this._highlight_input[1]+.5),a.lineTo(this._highlight_input[0]-4,this._highlight_input[1]+6+.5),a.lineTo(this._highlight_input[0]-4,this._highlight_input[1]-6+.5),a.closePath()):a.arc(this._highlight_input[0],this._highlight_input[1],6,0,2*Math.PI),a.fill())}this.dragging_rectangle&&(a.strokeStyle="#FFF",a.strokeRect(this.dragging_rectangle[0], this.dragging_rectangle[1],this.dragging_rectangle[2],this.dragging_rectangle[3]));if(this.over_link_center&&this.render_link_tooltip)this.drawLinkTooltip(a,this.over_link_center);else if(this.onDrawLinkTooltip)this.onDrawLinkTooltip(a,null);if(this.onDrawForeground)this.onDrawForeground(a,this.visible_rect);a.restore()}this._graph_stack&&this._graph_stack.length&&this.drawSubgraphPanel(a);if(this.onDrawOverlay)this.onDrawOverlay(a);c&&a.restore();a.finish2D&&a.finish2D()}};l.prototype.drawSubgraphPanel= -function(a){var b=this.graph,c=b._subgraph_node;if(c){var d=c.inputs?c.inputs.length:0,e=Math.floor(1.6*f.NODE_SLOT_HEIGHT);a.fillStyle="#111";a.globalAlpha=.8;a.beginPath();a.roundRect(10,10,300,(d+1)*e+50,8);a.fill();a.globalAlpha=1;a.fillStyle="#888";a.font="14px Arial";a.textAlign="left";a.fillText("Graph Inputs",20,34);if(this.drawButton(280,20,20,20,"X","#151515"))this.closeSubgraph();else{d=50;a.font="20px Arial";if(c.inputs)for(var g=0;g> ";b.fillText(d+c.getTitle(),.5*a.width,40);b.restore()}c=!1;this.onRenderBackground&&(c=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b);if(this.background_image&& -.5> ";b.fillText(d+c.getTitle(),.5*a.width,40);b.restore()}c=!1;this.onRenderBackground&&(c=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b); +if(this.background_image&&.5this.ds.scale;if(this.live_mode){if(!a.flags.collapsed&&(b.shadowColor="transparent",a.onDrawForeground))a.onDrawForeground(b,this,this.canvas)}else{var g=this.editor_alpha;b.globalAlpha=g;this.render_shadows&&!e?(b.shadowColor=f.DEFAULT_SHADOW_COLOR,b.shadowOffsetX=2*this.ds.scale,b.shadowOffsetY=2*this.ds.scale,b.shadowBlur=3*this.ds.scale):b.shadowColor="transparent";if(!a.flags.collapsed||!a.onDrawCollapsed|| -1!=a.onDrawCollapsed(b,this)){var h=a._shape||f.BOX_SHAPE;D.set(a.size);var k=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var n=a.getTitle?a.getTitle():a.title;null!=n&&(a._collapsed_width=Math.min(a.size[0],b.measureText(n).width+2*f.NODE_TITLE_HEIGHT),D[0]=a._collapsed_width,D[1]=0)}a.clip_area&&(b.save(),b.beginPath(),h==f.BOX_SHAPE?b.rect(0,0,D[0],D[1]):h==f.ROUND_SHAPE?b.roundRect(0,0,D[0],D[1],10):h==f.CIRCLE_SHAPE&&b.arc(.5*D[0],.5*D[1],.5*D[0],0,2*Math.PI),b.clip());a.has_errors&& +1!=a.onDrawCollapsed(b,this)){var h=a._shape||f.BOX_SHAPE;D.set(a.size);var k=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var n=a.getTitle?a.getTitle():a.title;null!=n&&(a._collapsed_width=Math.min(a.size[0],b.measureText(n).width+2*f.NODE_TITLE_HEIGHT),D[0]=a._collapsed_width,D[1]=0)}a.clip_area&&(b.save(),b.beginPath(),h==f.BOX_SHAPE?b.rect(0,0,D[0],D[1]):h==f.ROUND_SHAPE?b.roundRect(0,0,D[0],D[1],[10]):h==f.CIRCLE_SHAPE&&b.arc(.5*D[0],.5*D[1],.5*D[0],0,2*Math.PI),b.clip());a.has_errors&& (d="red");this.drawNodeShape(a,b,D,c,d,a.is_selected,a.mouseOver);b.shadowColor="transparent";if(a.onDrawForeground)a.onDrawForeground(b,this,this.canvas);b.textAlign=k?"center":"left";b.font=this.inner_text_font;d=!e;h=this.connecting_output;b.lineWidth=1;n=0;var u=new Float32Array(2);if(!a.flags.collapsed){if(a.inputs)for(c=0;cthis.ds.scale,n=a._shape||a.constructor.shape||f.ROUND_SHAPE,u=a.constructor.title_mode,t=!0;u==f.TRANSPARENT_TITLE?t=!1:u==f.AUTOHIDE_TITLE&&h&&(t=!0);x[0]=0;x[1]=t?-e:0;x[2]=c[0]+1;x[3]=t?c[1]+e:c[1];h=b.globalAlpha;b.beginPath();n==f.BOX_SHAPE||k?b.fillRect(x[0],x[1],x[2],x[3]):n==f.ROUND_SHAPE||n==f.CARD_SHAPE?b.roundRect(x[0],x[1],x[2],x[3],this.round_radius,n==f.CARD_SHAPE?0:this.round_radius):n==f.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0],0, -2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,x[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(t||u==f.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,e,c,this.ds.scale,d);else if(u!=f.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){t=a.constructor.title_color||d;a.flags.collapsed&&(b.shadowColor=f.DEFAULT_SHADOW_COLOR);if(this.use_gradients){var m= -l.gradients[t];m||(m=l.gradients[t]=b.createLinearGradient(0,0,400,0),m.addColorStop(0,t),m.addColorStop(1,"#000"));b.fillStyle=m}else b.fillStyle=t;b.beginPath();n==f.BOX_SHAPE||k?b.rect(0,-e,c[0]+1,e):(n==f.ROUND_SHAPE||n==f.CARD_SHAPE)&&b.roundRect(0,-e,c[0]+1,e,this.round_radius,a.flags.collapsed?this.round_radius:0);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,e,c,this.ds.scale);else n==f.ROUND_SHAPE||n==f.CIRCLE_SHAPE||n==f.CARD_SHAPE?(k&&(b.fillStyle="black", -b.beginPath(),b.arc(.5*e,-.5*e,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||f.NODE_DEFAULT_BOXCOLOR,k?b.fillRect(.5*e-5,-.5*e-5,10,10):(b.beginPath(),b.arc(.5*e,-.5*e,5,0,2*Math.PI),b.fill())):(k&&(b.fillStyle="black",b.fillRect(.5*(e-10)-1,-.5*(e+10)-1,12,12)),b.fillStyle=a.boxcolor||f.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(e-10),-.5*(e+10),10,10));b.globalAlpha=h;if(a.onDrawTitleText)a.onDrawTitleText(b,e,c,this.ds.scale,this.title_text_font,g);!k&&(b.font=this.title_text_font,h=String(a.getTitle()))&& -(b.fillStyle=g?f.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(h),b.fillText(h.substr(0,20),e,f.NODE_TITLE_TEXT_Y-e),b.textAlign="left"):(b.textAlign="left",b.fillText(h,e,f.NODE_TITLE_TEXT_Y-e)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(h=f.NODE_TITLE_HEIGHT,t=a.size[0]-h,m=f.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1],t+2,-h+2,h-4,h-4),b.fillStyle=m?"#888":"#555", -n==f.BOX_SHAPE||k?b.fillRect(t+2,-h+2,h-4,h-4):(b.beginPath(),b.roundRect(t+2,-h+2,h-4,h-4,4),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(t+.2*h,.6*-h),b.lineTo(t+.8*h,.6*-h),b.lineTo(t+.5*h,.3*-h),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(g){if(a.onBounding)a.onBounding(x);u==f.TRANSPARENT_TITLE&&(x[1]-=e,x[3]+=e);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();n==f.BOX_SHAPE?b.rect(-6+x[0],-6+x[1],12+x[2],12+x[3]):n==f.ROUND_SHAPE||n==f.CARD_SHAPE&&a.flags.collapsed?b.roundRect(-6+x[0], --6+x[1],12+x[2],12+x[3],2*this.round_radius):n==f.CARD_SHAPE?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],2*this.round_radius,2):n==f.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0]+6,0,2*Math.PI);b.strokeStyle=f.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=d;b.globalAlpha=1}};var I=new Float32Array(4),B=new Float32Array(4),L=new Float32Array(2),M=new Float32Array(2);l.prototype.drawConnections=function(a){var b=f.getTime(),c=this.visible_area;I[0]=c[0]-20;I[1]=c[1]-20;I[2]=c[2]+40;I[3]=c[3]+40;a.lineWidth= -this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;c=this.graph._nodes;for(var d=0,e=c.length;dB[2]&&(B[0]+=B[2],B[2]=Math.abs(B[2]));0>B[3]&&(B[1]+=B[3],B[3]=Math.abs(B[3]));if(H(B,I)){var l=n.outputs[u];u=g.inputs[h];if(l&&u&&(n=l.dir||(n.horizontal?f.DOWN:f.RIGHT),u=u.dir||(g.horizontal?f.UP:f.LEFT),this.renderLink(a,t,m,k,!1,0,null,n,u),k&&k._last_time&&1E3>b-k._last_time)){l=2-.002*(b-k._last_time);var v=a.globalAlpha;a.globalAlpha=v*l;this.renderLink(a,t,m,k,!0,l,"white",n,u);a.globalAlpha=v}}}}}}a.globalAlpha=1};l.prototype.renderLink=function(a,b,c,d,e,g,h,k,n,u){d&&this.visible_links.push(d); -!h&&d&&(h=d.color||l.link_type_colors[d.type]);h||(h=this.default_link_color);null!=d&&this.highlighted_links[d.id]&&(h="#FFF");k=k||f.RIGHT;n=n||f.LEFT;var t=J(b,c);this.render_connections_border&&.6b[1]?0:Math.PI,a.save(),a.translate(m[0],m[1]),a.rotate(t),a.beginPath(),a.moveTo(-5, --3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(d[0],d[1]),a.rotate(u),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill());if(g)for(a.fillStyle=h,m=0;5>m;++m)g=(.001*f.getTime()+.2*m)%1,e=this.computeConnectionPoint(b,c,g,k,n),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill()};l.prototype.computeConnectionPoint=function(a,b,c,d,e){d=d||f.RIGHT;e=e||f.LEFT;var g=J(a,b),h=[a[0],a[1]],k= -[b[0],b[1]];switch(d){case f.LEFT:h[0]+=-.25*g;break;case f.RIGHT:h[0]+=.25*g;break;case f.UP:h[1]+=-.25*g;break;case f.DOWN:h[1]+=.25*g}switch(e){case f.LEFT:k[0]+=-.25*g;break;case f.RIGHT:k[0]+=.25*g;break;case f.UP:k[1]+=-.25*g;break;case f.DOWN:k[1]+=.25*g}d=(1-c)*(1-c)*(1-c);e=3*(1-c)*(1-c)*c;g=3*(1-c)*c*c;c*=c*c;return[d*a[0]+e*h[0]+g*k[0]+c*b[0],d*a[1]+e*h[1]+g*k[1]+c*b[1]]};l.prototype.drawExecutionOrder=function(a){a.shadowColor="transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle= -"white";a.globalAlpha=.75;for(var b=this.visible_nodes,c=0;cg||g>q-12||hm.last_y+p||void 0===m.last_y)){d=m.value;switch(m.type){case "button":"mousedown"===c.type&&(m.callback&&setTimeout(function(){m.callback(m,n,a,b,c)},20),this.dirty_canvas=m.clicked=!0);break;case "slider":l=Math.clamp((g-15)/(q-30),0,1); -m.value=m.options.min+(m.options.max-m.options.min)*l;m.callback&&setTimeout(function(){e(m,m.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":d=m.value;if("mousemove"==c.type&&"number"==m.type)m.value+=.1*c.deltaX*(m.options.step||1),null!=m.options.min&&m.valuem.options.max&&(m.value=m.options.max);else if("mousedown"==c.type){var r=m.options.values;r&&r.constructor===Function&&(r=m.options.values(m,a));var w= -null;"number"!=m.type&&(w=r.constructor===Array?r:Object.keys(r));g=40>g?-1:g>q-40?1:0;if("number"==m.type)m.value+=.1*g*(m.options.step||1),null!=m.options.min&&m.valuem.options.max&&(m.value=m.options.max);else if(g)l=-1,this.last_mouseclick=0,l=r.constructor===Object?w.indexOf(String(m.value))+g:w.indexOf(m.value)+g,l>=w.length&&(l=w.length-1),0>l&&(l=0),m.value=r.constructor===Array?r[l]:l;else{var A=r!=w?Object.values(r):r; -new f.ContextMenu(A,{scale:Math.max(1,this.ds.scale),event:c,className:"dark",callback:function(a,b,c){r!=w&&(a=A.indexOf(a));this.value=a;e(this,a);n.dirty_canvas=!0;return!1}.bind(m)},l)}}else"mouseup"==c.type&&"number"==m.type&&(g=40>g?-1:g>q-40?1:0,200>c.click_time&&0==g&&this.prompt("Value",m.value,function(a){this.value=Number(a);e(this,this.value)}.bind(m),c));d!=m.value&&setTimeout(function(){e(this,this.value)}.bind(m),20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==c.type&&(m.value= -!m.value,setTimeout(function(){e(m,m.value)},20));break;case "string":case "text":"mousedown"==c.type&&this.prompt("Value",m.value,function(a){this.value=a;e(this,a)}.bind(m),c,m.options?m.options.multiline:!1);break;default:m.mouse&&(this.dirty_canvas=m.mouse(c,[g,h],a))}if(d!=m.value){if(a.onWidgetChanged)a.onWidgetChanged(m.name,m.value,d,m);a.graph._version++}return m}}}return null};l.prototype.drawGroups=function(a,b){if(this.graph){a=this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha; -for(var c=0;cc&&.01>b.editor_alpha&&(clearInterval(d),1>c&&(b.live_mode=!0));1"+(n.label?n.label:k)+""+a+"",value:k})}if(h.length)return new f.ContextMenu(h, -{event:c,callback:function(a,b,c,d){e&&(b=this.getBoundingClientRect(),g.showEditPropertyValue(e,a.value,{position:[b.left,b.top]}))},parentMenu:d,allow_html:!0,node:e},b),!1}};l.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};l.onResizeNode=function(a,b,c,d,e){if(e){e.size=e.computeSize();if(e.onResize)e.onResize(e.size);e.setDirtyCanvas(!0,!0)}};l.prototype.showLinkMenu=function(a,b){var c=this;console.log(a);var d=new f.ContextMenu(["Add Node",null, -"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,g,h){switch(b){case "Add Node":l.onMenuAdd(null,null,h,d,function(b){console.log("node autoconnect");var d=c.graph.getNodeById(a.origin_id),e=c.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&d.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==e.inputs[0].type&&(d.connect(a.origin_slot,b,0),b.connect(0,e,a.target_slot),b.pos[0]-=.5*b.size[0])});break;case "Delete":c.graph.removeLink(a.id)}}}); -return!1};l.onShowPropertyEditor=function(a,b,c,d,e){function g(){var b=n.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);e[h]=b;f.parentNode&&f.parentNode.removeChild(f);e.setDirtyCanvas(!0,!0)}var h=a.property||"title";b=e[h];var f=document.createElement("div");f.className="graphdialog";f.innerHTML="";f.querySelector(".name").innerText=h;var n=f.querySelector(".value");n&&(n.value=b,n.addEventListener("blur", -function(a){this.focus()}),n.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)g(),a.preventDefault(),a.stopPropagation()}));b=l.active_canvas.canvas;c=b.getBoundingClientRect();var u=d=-20;c&&(d-=c.left,u-=c.top);event?(f.style.left=event.clientX+d+"px",f.style.top=event.clientY+u+"px"):(f.style.left=.5*b.width+d+"px",f.style.top=.5*b.height+u+"px");f.querySelector("button").addEventListener("click",g);b.parentNode.appendChild(f)};l.prototype.prompt=function(a, -b,c,d,e){var g=this;a=a||"";var h=!1,f=document.createElement("div");f.className="graphdialog rounded";f.innerHTML=e?" ":" ";f.close=function(){g.prompt_box=null;f.parentNode&&f.parentNode.removeChild(f)};1l.search_limit)break}}p=null;if(Array.prototype.filter)p=Object.keys(f.registered_node_types).filter(d); -else for(h in p=[],f.registered_node_types)d(h)&&p.push(h);for(h=0;hl.search_limit);h++);}}var e=this,g=l.active_canvas,h=g.canvas,k=h.ownerDocument||document,n=document.createElement("div");n.className="litegraph litesearchbox graphdialog rounded";n.innerHTML="Search
";n.close=function(){e.search_box=null;k.body.focus();k.body.style.overflow="";setTimeout(function(){e.canvas.focus()}, -20);n.parentNode&&n.parentNode.removeChild(n)};var u=null;1h.height-200&&(t.style.maxHeight=h.height-a.layerY-20+"px");r.focus();return n};l.prototype.showEditPropertyValue=function(a,b,c){function d(){e(m.value)}function e(d){g&&g.values&&g.values.constructor===Object&&void 0!=g.values[d]&&(d=g.values[d]);"number"==typeof a.properties[b]&&(d=Number(d));if("array"==h||"object"==h)d=JSON.parse(d);a.properties[b]=d;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,d);if(c.onclose)c.onclose();p.close();a.setDirtyCanvas(!0, -!0)}if(a&&void 0!==a.properties[b]){c=c||{};var g=a.getPropertyInfo(b),h=g.type,f="";if("string"==h||"number"==h||"array"==h||"object"==h)f="";else if("enum"!=h&&"combo"!=h||!g.values)if("boolean"==h)f="";else{console.warn("unknown type: "+h);return}else{f=""}var p=this.createDialog(""+(g.label?g.label:b)+""+f+"",c);if("enum"!=h&&"combo"!=h||!g.values)if("boolean"==h)(m=p.querySelector("input"))&&m.addEventListener("click",function(a){e(!!m.checked)});else{if(m=p.querySelector("input"))m.addEventListener("blur",function(a){this.focus()}),l=void 0!==a.properties[b]?a.properties[b]:"","string"!==h&&(l=JSON.stringify(l)), -m.value=l,m.addEventListener("keydown",function(a){13==a.keyCode&&(d(),a.preventDefault(),a.stopPropagation())})}else{var m=p.querySelector("select");m.addEventListener("change",function(a){e(a.target.value)})}p.querySelector("button").addEventListener("click",d);return p}};l.prototype.createDialog=function(a,b){b=b||{};var c=document.createElement("div");c.className="graphdialog";c.innerHTML=a;a=this.canvas.getBoundingClientRect();var d=-20,e=-20;a&&(d-=a.left,e-=a.top);b.position?(d+=b.position[0], -e+=b.position[1]):b.event?(d+=b.event.clientX,e+=b.event.clientY):(d+=.5*this.canvas.width,e+=.5*this.canvas.height);c.style.left=d+"px";c.style.top=e+"px";this.canvas.parentNode.appendChild(c);c.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return c};l.prototype.createPanel=function(a,b){b=b||{};var c=b.window||window,d=document.createElement("div");d.className="litegraph dialog";d.innerHTML="
"; -d.header=d.querySelector(".dialog-header");b.width&&(d.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(d.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){d.close()}),d.header.appendChild(b));d.title_element=d.querySelector(".dialog-title");d.title_element.innerText=a;d.content=d.querySelector(".dialog-content");d.footer=d.querySelector(".dialog-footer"); -d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};d.clear=function(){this.content.innerHTML=""};d.addHTML=function(a,b,c){var e=document.createElement("div");b&&(e.className=b);e.innerHTML=a;c?d.footer.appendChild(e):d.content.appendChild(e);return e};d.addButton=function(a,b,c){var e=document.createElement("button");e.innerText=a;e.options=c;e.classList.add("btn");e.addEventListener("click",b);d.footer.appendChild(e);return e};d.addSeparator=function(){var a=document.createElement("div"); -a.className="separator";d.content.appendChild(a)};d.addWidget=function(a,b,h,k,n){function e(a,b){console.log("change",a,b);k.callback&&k.callback(a,b);n&&n(a,b)}k=k||{};var g=String(h);a=a.toLowerCase();"number"==a&&(g=h.toFixed(3));var m=document.createElement("div");m.className="property";m.innerHTML="";m.querySelector(".property_name").innerText=k.label||b;var p=m.querySelector(".property_value");p.innerText=g;m.dataset.property= -b;m.dataset.type=k.type||a;m.options=k;m.value=h;if("boolean"==a)m.classList.add("boolean"),h&&m.classList.add("bool-on"),m.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";e(a,this.value)});else if("string"==a||"number"==a)p.setAttribute("contenteditable",!0),p.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),p.addEventListener("blur", -function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));e(b,a)});else if("enum"==a||"combo"==a)g=l.getPropertyPrintableValue(h,k.values),p.innerText=g,p.addEventListener("click",function(a){var b=this.parentNode.dataset.property,d=this;new f.ContextMenu(k.values||[],{event:a,className:"dark",callback:function(a,c,g){d.innerText=a;e(b,a);return!1}},c)});d.content.appendChild(m);return m};return d};l.getPropertyPrintableValue=function(a, -b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var c="",d;for(d in b)if(b[d]==a){c=d;break}return String(a)+" ("+c+")"}};l.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var c=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:c});b.id="node-panel";b.node=a;b.classList.add("settings");var d=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+ -""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var c in a.properties){var g=a.properties[c],f=a.getPropertyInfo(c);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(c,b)||b.addWidget(f.widget||f.type,c,g,f,function(b,c){d.graph.beforeChange(a);a.setProperty(b,c);d.graph.afterChange();d.dirty_canvas=!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete|| -(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};l.prototype.showSubgraphPropertiesDialog=function(a){function b(){d.clear();if(a.inputs)for(var c=0;c","subgraph_property");f.dataset.name=g.name;f.dataset.slot=c;f.querySelector(".name").innerText=g.name;f.querySelector(".type").innerText= -g.type;f.querySelector("button").addEventListener("click",function(c){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var c=this.canvas.parentNode.querySelector(".subgraph_dialog");c&&c.close();var d=this.createPanel("Subgraph Inputs",{closable:!0,width:500});d.node=a;d.classList.add("subgraph_dialog");d.addHTML(" + NameType", -"subgraph_property extra",!0).querySelector("button").addEventListener("click",function(c){c=this.parentNode;var d=c.querySelector(".name").value,e=c.querySelector(".type").value;d&&-1==a.findInputSlot(d)&&(a.addInput(d,e),c.querySelector(".name").value="",c.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(d);return d};l.prototype.checkPanels=function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var g in l.node_colors)a=l.node_colors[g],a={value:g,content:""+g+""},b.push(a);new f.ContextMenu(b,{event:c,callback:function(a){e&&((a=a.value?l.node_colors[a.value]:null)? -e.constructor===f.LGraphGroup?e.color=a.groupcolor:(e.color=a.color,e.bgcolor=a.bgcolor):(delete e.color,delete e.bgcolor),e.setDirtyCanvas(!0,!0))},parentMenu:d,node:e});return!1};l.onMenuNodeShapes=function(a,b,c,d,e){if(!e)throw"no node passed";new f.ContextMenu(f.VALID_SHAPES,{event:c,callback:function(a){e&&(e.graph.beforeChange(e),e.shape=a,e.graph.afterChange(e),e.setDirtyCanvas(!0))},parentMenu:d,node:e});return!1};l.onMenuNodeRemove=function(a,b,c,d,e){if(!e)throw"no node passed";!1!==e.removable&& -(a=e.graph,a.beforeChange(),a.remove(e),a.afterChange(),e.setDirtyCanvas(!0,!0))};l.onMenuNodeToSubgraph=function(a,b,c,d,e){a=e.graph;if(b=l.active_canvas)c=Object.values(b.selected_nodes||{}),c.length||(c=[e]),d=f.createNode("graph/subgraph"),d.pos=e.pos.concat(),a.add(d),d.buildFromNodes(c),b.deselectAllNodes(),e.setDirtyCanvas(!0,!0)};l.onMenuNodeClone=function(a,b,c,d,e){0!=e.clonable&&(a=e.clone())&&(a.pos=[e.pos[0]+5,e.pos[1]+5],e.graph.beforeChange(),e.graph.add(a),e.graph.afterChange(),e.setDirtyCanvas(!0, -!0))};l.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323",bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000", -groupcolor:"#444"}};l.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:l.onMenuAdd},{content:"Add Group",callback:l.onGroupAdd}],this._graph_stack&&0Name", -d),h=f.querySelector("input");h&&g&&(h.value=g.label||"");f.querySelector("button").addEventListener("click",function(a){h.value&&(g&&(g.label=h.value),c.setDirty(!0));f.close()})}},extra:a};a&&(g.title=a.type);var h=null;a&&(h=a.getSlotInPosition(b.canvasX,b.canvasY),l.active_node=a);h?(e=[],a.getSlotMenuOptions?e=a.getSlotMenuOptions(h):(h&&h.output&&h.output.links&&h.output.links.length&&e.push({content:"Disconnect Links",slot:h}),b=h.input||h.output,e.push(b.locked?"Cannot remove":{content:"Remove Slot", -slot:h}),e.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:h})),g.title=(h.input?h.input.type:h.output.type)||"*",h.input&&h.input.type==f.ACTION&&(g.title="Action"),h.output&&h.output.type==f.EVENT&&(g.title="Event")):a?e=this.getNodeMenuOptions(a):(e=this.getCanvasMenuOptions(),(h=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&e.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group",extra:h,options:this.getGroupMenuOptions(h)}}));e&&new f.ContextMenu(e,g,d)};"undefined"!= -typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,c,d,e,g){var f,k;if(0===e)this.rect(a,b,c,d);else{void 0===g&&(g=e);if(null!=e&&e.constructor===Array)if(1==e.length)var n=f=k=g=e[0];else if(2==e.length)n=g=e[0],f=k=e[1];else if(4==e.length)n=e[0],f=e[1],k=e[2],g=e[3];else return;else n=e||0,f=e||0,k=g||0,g=g||0;this.moveTo(a+n,b);this.lineTo(a+c-f,b);this.quadraticCurveTo(a+c,b, -a+c,b+f);this.lineTo(a+c,b+d-g);this.quadraticCurveTo(a+c,b+d,a+c-g,b+d);this.lineTo(a+g,b+d);this.quadraticCurveTo(a,b+d,a,b+d-k);this.lineTo(a,b+k);this.quadraticCurveTo(a,b,a+n,b)}});f.compareObjects=function(a,b){for(var c in a)if(a[c]!=b[c])return!1;return!0};f.distance=J;f.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+","+(4==a.length?a[3].toFixed(2):"1.0")+")"};f.isInsideRectangle=C;f.growBounding= -function(a,b,c){ba[2]&&(a[2]=b);ca[3]&&(a[3]=c)};f.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};f.overlapBounding=H;f.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),c=0,d,e,g=0;6>g;g+=2)d="0123456789ABCDEF".indexOf(a.charAt(g)),e="0123456789ABCDEF".indexOf(a.charAt(g+1)),b[c]=16*d+e,c++;return b};f.num2hex=function(a){for(var b="#",c,d,e=0;3>e;e++)c=a[e]/16,d=a[e]%16,b+= -"0123456789ABCDEF".charAt(c)+"0123456789ABCDEF".charAt(d);return b};E.prototype.addItem=function(a,b,c){function d(a){var b=this.value;b&&b.has_submenu&&e.call(this,a)}function e(a){var b=this.value,d=!0;g.current_submenu&&g.current_submenu.close(a);if(c.callback){var e=c.callback.call(this,b,c,a,g,c.node);!0===e&&(d=!1)}if(b&&(b.callback&&!c.ignore_item_callbacks&&!0!==b.disabled&&(e=b.callback.call(this,b,c,a,g,c.extra),!0===e&&(d=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options"; -new g.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:g,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:c.autoopen});d=!1}d&&!g.lock&&g.close()}var g=this;c=c||{};var f=document.createElement("div");f.className="litemenu-entry submenu";var k=!1;if(null===b)f.classList.add("separator");else{f.innerHTML=b&&b.title?b.title:a;if(f.value=b)b.disabled&&(k=!0,f.classList.add("disabled")),(b.submenu||b.has_submenu)&& -f.classList.add("has_submenu");"function"==typeof b?(f.dataset.value=a,f.onclick_callback=b):f.dataset.value=b;b.className&&(f.className+=" "+b.className)}this.root.appendChild(f);k||f.addEventListener("click",e);c.autoopen&&f.addEventListener("mouseenter",d);return f};E.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock=!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!E.isCursorOverElement(a, -this.parentMenu.root)&&E.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};E.trigger=function(a,b,c,d){var e=document.createEvent("CustomEvent");e.initCustomEvent(b,!0,!0,c);e.srcElement=d;a.dispatchEvent?a.dispatchEvent(e):a.__events&&a.__events.dispatchEvent(e);return e};E.prototype.getTopMenu=function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};E.prototype.getFirstEvent= -function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};E.isCursorOverElement=function(a,b){var c=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&cMath.abs(b))return d[1];a=(a-d[0])/b;return d[1]*(1-a)+e[1]*a}}return 0}};G.prototype.draw=function(a,b,c,d,e,f){if(c=this.points){this.size=b;var g=b[0]-2*this.margin;b=b[1]-2*this.margin;e=e||"#666";a.save();a.translate(this.margin,this.margin);d&&(a.fillStyle="#111",a.fillRect(0,0,g,b),a.fillStyle="#222",a.fillRect(.5*g,0,1,b),a.strokeStyle="#333",a.strokeRect(0,0,g,b));a.strokeStyle=e;f&&(a.globalAlpha=.5);a.beginPath();for(d=0;da[1])){var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=a[0]-this.margin;a=a[1]-this.margin;this.selected=this.getCloserPoint([f,a],30/b.ds.scale);-1==this.selected&&(b=[f/d,1-a/e],c.push(b), -c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};G.prototype.onMouseMove=function(a,b){var c=this.points;if(c){var d=this.selected;if(!(0>d)){var e=(a[0]-this.margin)/(this.size[0]-2*this.margin),f=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale);if(b=c[d]){var h=0==d||d==c.length-1;!h&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+ -10)?(c.splice(d,1),this.selected=-1):(b[0]=h?0==d?0:1:Math.clamp(e,0,1),b[1]=1-Math.clamp(f,0,1),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0)}}}};G.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};G.prototype.getCloserPoint=function(a,b){var c=this.points;if(!c)return-1;b=b||30;for(var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=c.length,h=[0,0],k=1E6,l=-1,p=0;pk||q>b||(l=p,k=q)}return l};f.CurveEditor=G;f.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,c){return b>a?b:cthis.ds.scale,n=a._shape||a.constructor.shape||f.ROUND_SHAPE,u=a.constructor.title_mode,t=!0;u==f.TRANSPARENT_TITLE?t=!1:u==f.AUTOHIDE_TITLE&&h&&(t=!0);x[0]=0;x[1]=t?-e:0;x[2]=c[0]+1;x[3]=t?c[1]+e:c[1];h=b.globalAlpha;b.beginPath();n==f.BOX_SHAPE||k?b.fillRect(x[0],x[1],x[2],x[3]):n==f.ROUND_SHAPE||n==f.CARD_SHAPE?b.roundRect(x[0],x[1],x[2],x[3],n==f.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):n==f.CIRCLE_SHAPE&&b.arc(.5* +c[0],.5*c[1],.5*c[0],0,2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,x[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(t||u==f.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,e,c,this.ds.scale,d);else if(u!=f.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){t=a.constructor.title_color||d;a.flags.collapsed&&(b.shadowColor=f.DEFAULT_SHADOW_COLOR); +if(this.use_gradients){var m=l.gradients[t];m||(m=l.gradients[t]=b.createLinearGradient(0,0,400,0),m.addColorStop(0,t),m.addColorStop(1,"#000"));b.fillStyle=m}else b.fillStyle=t;b.beginPath();n==f.BOX_SHAPE||k?b.rect(0,-e,c[0]+1,e):(n==f.ROUND_SHAPE||n==f.CARD_SHAPE)&&b.roundRect(0,-e,c[0]+1,e,a.flags.collapsed?[this.round_radius]:[this.round_radius,this.round_radius,0,0]);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,e,c,this.ds.scale);else n==f.ROUND_SHAPE||n==f.CIRCLE_SHAPE|| +n==f.CARD_SHAPE?(k&&(b.fillStyle="black",b.beginPath(),b.arc(.5*e,-.5*e,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||f.NODE_DEFAULT_BOXCOLOR,k?b.fillRect(.5*e-5,-.5*e-5,10,10):(b.beginPath(),b.arc(.5*e,-.5*e,5,0,2*Math.PI),b.fill())):(k&&(b.fillStyle="black",b.fillRect(.5*(e-10)-1,-.5*(e+10)-1,12,12)),b.fillStyle=a.boxcolor||f.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(e-10),-.5*(e+10),10,10));b.globalAlpha=h;if(a.onDrawTitleText)a.onDrawTitleText(b,e,c,this.ds.scale,this.title_text_font,g);!k&&(b.font= +this.title_text_font,h=String(a.getTitle()))&&(b.fillStyle=g?f.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(h),b.fillText(h.substr(0,20),e,f.NODE_TITLE_TEXT_Y-e),b.textAlign="left"):(b.textAlign="left",b.fillText(h,e,f.NODE_TITLE_TEXT_Y-e)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(h=f.NODE_TITLE_HEIGHT,t=a.size[0]-h,m=f.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1], +t+2,-h+2,h-4,h-4),b.fillStyle=m?"#888":"#555",n==f.BOX_SHAPE||k?b.fillRect(t+2,-h+2,h-4,h-4):(b.beginPath(),b.roundRect(t+2,-h+2,h-4,h-4,[4]),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(t+.2*h,.6*-h),b.lineTo(t+.8*h,.6*-h),b.lineTo(t+.5*h,.3*-h),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(g){if(a.onBounding)a.onBounding(x);u==f.TRANSPARENT_TITLE&&(x[1]-=e,x[3]+=e);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();n==f.BOX_SHAPE?b.rect(-6+x[0],-6+x[1],12+x[2],12+x[3]):n==f.ROUND_SHAPE||n==f.CARD_SHAPE&& +a.flags.collapsed?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],[2*this.round_radius]):n==f.CARD_SHAPE?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],[2*this.round_radius,2,2*this.round_radius,2]):n==f.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0]+6,0,2*Math.PI);b.strokeStyle=f.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=d;b.globalAlpha=1}};var I=new Float32Array(4),B=new Float32Array(4),L=new Float32Array(2),M=new Float32Array(2);l.prototype.drawConnections=function(a){var b=f.getTime(),c=this.visible_area; +I[0]=c[0]-20;I[1]=c[1]-20;I[2]=c[2]+40;I[3]=c[3]+40;a.lineWidth=this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;c=this.graph._nodes;for(var d=0,e=c.length;dB[2]&&(B[0]+=B[2],B[2]=Math.abs(B[2]));0>B[3]&&(B[1]+=B[3],B[3]=Math.abs(B[3]));if(H(B,I)){var l=n.outputs[u];u=g.inputs[h];if(l&&u&&(n=l.dir||(n.horizontal?f.DOWN:f.RIGHT),u=u.dir||(g.horizontal?f.UP:f.LEFT),this.renderLink(a,t,m,k,!1,0,null,n,u),k&&k._last_time&&1E3>b-k._last_time)){l=2-.002*(b-k._last_time);var v=a.globalAlpha;a.globalAlpha=v*l;this.renderLink(a,t,m,k,!0,l,"white",n,u);a.globalAlpha=v}}}}}}a.globalAlpha=1};l.prototype.renderLink= +function(a,b,c,d,e,g,h,k,n,u){d&&this.visible_links.push(d);!h&&d&&(h=d.color||l.link_type_colors[d.type]);h||(h=this.default_link_color);null!=d&&this.highlighted_links[d.id]&&(h="#FFF");k=k||f.RIGHT;n=n||f.LEFT;var t=J(b,c);this.render_connections_border&&.6b[1]? +0:Math.PI,a.save(),a.translate(m[0],m[1]),a.rotate(t),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(d[0],d[1]),a.rotate(u),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill());if(g)for(a.fillStyle=h,m=0;5>m;++m)g=(.001*f.getTime()+.2*m)%1,e=this.computeConnectionPoint(b,c,g,k,n),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill()};l.prototype.computeConnectionPoint= +function(a,b,c,d,e){d=d||f.RIGHT;e=e||f.LEFT;var g=J(a,b),h=[a[0],a[1]],k=[b[0],b[1]];switch(d){case f.LEFT:h[0]+=-.25*g;break;case f.RIGHT:h[0]+=.25*g;break;case f.UP:h[1]+=-.25*g;break;case f.DOWN:h[1]+=.25*g}switch(e){case f.LEFT:k[0]+=-.25*g;break;case f.RIGHT:k[0]+=.25*g;break;case f.UP:k[1]+=-.25*g;break;case f.DOWN:k[1]+=.25*g}d=(1-c)*(1-c)*(1-c);e=3*(1-c)*(1-c)*c;g=3*(1-c)*c*c;c*=c*c;return[d*a[0]+e*h[0]+g*k[0]+c*b[0],d*a[1]+e*h[1]+g*k[1]+c*b[1]]};l.prototype.drawExecutionOrder=function(a){a.shadowColor= +"transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle="white";a.globalAlpha=.75;for(var b=this.visible_nodes,c=0;cg||g>q-12||hm.last_y+p||void 0===m.last_y)){d=m.value;switch(m.type){case "button":"mousedown"===c.type&&(m.callback&&setTimeout(function(){m.callback(m,n,a,b,c)},20), +this.dirty_canvas=m.clicked=!0);break;case "slider":l=Math.clamp((g-15)/(q-30),0,1);m.value=m.options.min+(m.options.max-m.options.min)*l;m.callback&&setTimeout(function(){e(m,m.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":d=m.value;if("mousemove"==c.type&&"number"==m.type)m.value+=.1*c.deltaX*(m.options.step||1),null!=m.options.min&&m.valuem.options.max&&(m.value=m.options.max);else if("mousedown"==c.type){var r= +m.options.values;r&&r.constructor===Function&&(r=m.options.values(m,a));var w=null;"number"!=m.type&&(w=r.constructor===Array?r:Object.keys(r));g=40>g?-1:g>q-40?1:0;if("number"==m.type)m.value+=.1*g*(m.options.step||1),null!=m.options.min&&m.valuem.options.max&&(m.value=m.options.max);else if(g)l=-1,this.last_mouseclick=0,l=r.constructor===Object?w.indexOf(String(m.value))+g:w.indexOf(m.value)+g,l>=w.length&&(l=w.length-1),0>l&& +(l=0),m.value=r.constructor===Array?r[l]:l;else{var A=r!=w?Object.values(r):r;new f.ContextMenu(A,{scale:Math.max(1,this.ds.scale),event:c,className:"dark",callback:function(a,b,c){r!=w&&(a=A.indexOf(a));this.value=a;e(this,a);n.dirty_canvas=!0;return!1}.bind(m)},l)}}else"mouseup"==c.type&&"number"==m.type&&(g=40>g?-1:g>q-40?1:0,200>c.click_time&&0==g&&this.prompt("Value",m.value,function(a){this.value=Number(a);e(this,this.value)}.bind(m),c));d!=m.value&&setTimeout(function(){e(this,this.value)}.bind(m), +20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==c.type&&(m.value=!m.value,setTimeout(function(){e(m,m.value)},20));break;case "string":case "text":"mousedown"==c.type&&this.prompt("Value",m.value,function(a){this.value=a;e(this,a)}.bind(m),c,m.options?m.options.multiline:!1);break;default:m.mouse&&(this.dirty_canvas=m.mouse(c,[g,h],a))}if(d!=m.value){if(a.onWidgetChanged)a.onWidgetChanged(m.name,m.value,d,m);a.graph._version++}return m}}}return null};l.prototype.drawGroups=function(a,b){if(this.graph){a= +this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha;for(var c=0;cc&&.01>b.editor_alpha&&(clearInterval(d),1>c&&(b.live_mode=!0));1"+(n.label?n.label:k)+""+a+"", +value:k})}if(h.length)return new f.ContextMenu(h,{event:c,callback:function(a,b,c,d){e&&(b=this.getBoundingClientRect(),g.showEditPropertyValue(e,a.value,{position:[b.left,b.top]}))},parentMenu:d,allow_html:!0,node:e},b),!1}};l.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};l.onResizeNode=function(a,b,c,d,e){if(e){e.size=e.computeSize();if(e.onResize)e.onResize(e.size);e.setDirtyCanvas(!0,!0)}};l.prototype.showLinkMenu=function(a,b){var c=this;console.log(a); +var d=new f.ContextMenu(["Add Node",null,"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,g,h){switch(b){case "Add Node":l.onMenuAdd(null,null,h,d,function(b){console.log("node autoconnect");var d=c.graph.getNodeById(a.origin_id),e=c.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&d.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==e.inputs[0].type&&(d.connect(a.origin_slot,b,0),b.connect(0,e,a.target_slot), +b.pos[0]-=.5*b.size[0])});break;case "Delete":c.graph.removeLink(a.id)}}});return!1};l.onShowPropertyEditor=function(a,b,c,d,e){function g(){var b=n.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);e[h]=b;f.parentNode&&f.parentNode.removeChild(f);e.setDirtyCanvas(!0,!0)}var h=a.property||"title";b=e[h];var f=document.createElement("div");f.className="graphdialog";f.innerHTML="";f.querySelector(".name").innerText= +h;var n=f.querySelector(".value");n&&(n.value=b,n.addEventListener("blur",function(a){this.focus()}),n.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)g(),a.preventDefault(),a.stopPropagation()}));b=l.active_canvas.canvas;c=b.getBoundingClientRect();var u=d=-20;c&&(d-=c.left,u-=c.top);event?(f.style.left=event.clientX+d+"px",f.style.top=event.clientY+u+"px"):(f.style.left=.5*b.width+d+"px",f.style.top=.5*b.height+u+"px");f.querySelector("button").addEventListener("click", +g);b.parentNode.appendChild(f)};l.prototype.prompt=function(a,b,c,d,e){var g=this;a=a||"";var h=!1,f=document.createElement("div");f.className="graphdialog rounded";f.innerHTML=e?" ":" ";f.close=function(){g.prompt_box=null;f.parentNode&&f.parentNode.removeChild(f)};1l.search_limit)break}}p=null;if(Array.prototype.filter)p=Object.keys(f.registered_node_types).filter(d);else for(h in p=[],f.registered_node_types)d(h)&&p.push(h);for(h=0;hl.search_limit);h++);}}var e=this,g=l.active_canvas,h=g.canvas,k=h.ownerDocument||document,n=document.createElement("div");n.className="litegraph litesearchbox graphdialog rounded";n.innerHTML="Search
"; +n.close=function(){e.search_box=null;k.body.focus();k.body.style.overflow="";setTimeout(function(){e.canvas.focus()},20);n.parentNode&&n.parentNode.removeChild(n)};var u=null;1h.height-200&&(t.style.maxHeight=h.height-a.layerY-20+"px");r.focus();return n};l.prototype.showEditPropertyValue=function(a,b,c){function d(){e(m.value)}function e(d){g&&g.values&&g.values.constructor===Object&&void 0!=g.values[d]&&(d=g.values[d]);"number"==typeof a.properties[b]&&(d=Number(d));if("array"==h||"object"==h)d=JSON.parse(d);a.properties[b]= +d;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,d);if(c.onclose)c.onclose();p.close();a.setDirtyCanvas(!0,!0)}if(a&&void 0!==a.properties[b]){c=c||{};var g=a.getPropertyInfo(b),h=g.type,f="";if("string"==h||"number"==h||"array"==h||"object"==h)f="";else if("enum"!=h&&"combo"!=h||!g.values)if("boolean"==h)f="";else{console.warn("unknown type: "+h); +return}else{f=""}var p=this.createDialog(""+(g.label?g.label:b)+""+f+"",c);if("enum"!=h&&"combo"!=h||!g.values)if("boolean"==h)(m=p.querySelector("input"))&&m.addEventListener("click",function(a){e(!!m.checked)});else{if(m=p.querySelector("input"))m.addEventListener("blur", +function(a){this.focus()}),l=void 0!==a.properties[b]?a.properties[b]:"","string"!==h&&(l=JSON.stringify(l)),m.value=l,m.addEventListener("keydown",function(a){13==a.keyCode&&(d(),a.preventDefault(),a.stopPropagation())})}else{var m=p.querySelector("select");m.addEventListener("change",function(a){e(a.target.value)})}p.querySelector("button").addEventListener("click",d);return p}};l.prototype.createDialog=function(a,b){b=b||{};var c=document.createElement("div");c.className="graphdialog";c.innerHTML= +a;a=this.canvas.getBoundingClientRect();var d=-20,e=-20;a&&(d-=a.left,e-=a.top);b.position?(d+=b.position[0],e+=b.position[1]):b.event?(d+=b.event.clientX,e+=b.event.clientY):(d+=.5*this.canvas.width,e+=.5*this.canvas.height);c.style.left=d+"px";c.style.top=e+"px";this.canvas.parentNode.appendChild(c);c.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return c};l.prototype.createPanel=function(a,b){b=b||{};var c=b.window||window,d=document.createElement("div");d.className="litegraph dialog"; +d.innerHTML="
";d.header=d.querySelector(".dialog-header");b.width&&(d.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(d.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){d.close()}),d.header.appendChild(b)); +d.title_element=d.querySelector(".dialog-title");d.title_element.innerText=a;d.content=d.querySelector(".dialog-content");d.footer=d.querySelector(".dialog-footer");d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};d.clear=function(){this.content.innerHTML=""};d.addHTML=function(a,b,c){var e=document.createElement("div");b&&(e.className=b);e.innerHTML=a;c?d.footer.appendChild(e):d.content.appendChild(e);return e};d.addButton=function(a,b,c){var e=document.createElement("button"); +e.innerText=a;e.options=c;e.classList.add("btn");e.addEventListener("click",b);d.footer.appendChild(e);return e};d.addSeparator=function(){var a=document.createElement("div");a.className="separator";d.content.appendChild(a)};d.addWidget=function(a,b,h,k,n){function e(a,b){console.log("change",a,b);k.callback&&k.callback(a,b);n&&n(a,b)}k=k||{};var g=String(h);a=a.toLowerCase();"number"==a&&(g=h.toFixed(3));var m=document.createElement("div");m.className="property";m.innerHTML=""; +m.querySelector(".property_name").innerText=k.label||b;var p=m.querySelector(".property_value");p.innerText=g;m.dataset.property=b;m.dataset.type=k.type||a;m.options=k;m.value=h;if("boolean"==a)m.classList.add("boolean"),h&&m.classList.add("bool-on"),m.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";e(a,this.value)});else if("string"==a||"number"==a)p.setAttribute("contenteditable", +!0),p.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),p.addEventListener("blur",function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));e(b,a)});else if("enum"==a||"combo"==a)g=l.getPropertyPrintableValue(h,k.values),p.innerText=g,p.addEventListener("click",function(a){var b=this.parentNode.dataset.property,d=this;new f.ContextMenu(k.values||[],{event:a,className:"dark",callback:function(a, +c,g){d.innerText=a;e(b,a);return!1}},c)});d.content.appendChild(m);return m};return d};l.getPropertyPrintableValue=function(a,b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var c="",d;for(d in b)if(b[d]==a){c=d;break}return String(a)+" ("+c+")"}};l.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var c=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:c});b.id="node-panel";b.node= +a;b.classList.add("settings");var d=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var c in a.properties){var g=a.properties[c],f=a.getPropertyInfo(c);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(c,b)||b.addWidget(f.widget||f.type,c,g,f,function(b,c){d.graph.beforeChange(a);a.setProperty(b,c);d.graph.afterChange();d.dirty_canvas= +!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete||(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};l.prototype.showSubgraphPropertiesDialog=function(a){function b(){d.clear();if(a.inputs)for(var c=0;c", +"subgraph_property");f.dataset.name=g.name;f.dataset.slot=c;f.querySelector(".name").innerText=g.name;f.querySelector(".type").innerText=g.type;f.querySelector("button").addEventListener("click",function(c){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var c=this.canvas.parentNode.querySelector(".subgraph_dialog");c&&c.close();var d=this.createPanel("Subgraph Inputs",{closable:!0,width:500});d.node=a;d.classList.add("subgraph_dialog"); +d.addHTML(" + NameType","subgraph_property extra",!0).querySelector("button").addEventListener("click",function(c){c=this.parentNode;var d=c.querySelector(".name").value,e=c.querySelector(".type").value;d&&-1==a.findInputSlot(d)&&(a.addInput(d,e),c.querySelector(".name").value="",c.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(d);return d};l.prototype.checkPanels= +function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var g in l.node_colors)a=l.node_colors[g],a={value:g,content:""+g+""},b.push(a);new f.ContextMenu(b,{event:c,callback:function(a){e&&((a=a.value?l.node_colors[a.value]:null)?e.constructor===f.LGraphGroup?e.color=a.groupcolor:(e.color=a.color,e.bgcolor=a.bgcolor):(delete e.color,delete e.bgcolor),e.setDirtyCanvas(!0,!0))},parentMenu:d,node:e});return!1};l.onMenuNodeShapes=function(a,b,c,d,e){if(!e)throw"no node passed";new f.ContextMenu(f.VALID_SHAPES,{event:c,callback:function(a){e&&(e.graph.beforeChange(e),e.shape=a,e.graph.afterChange(e),e.setDirtyCanvas(!0))}, +parentMenu:d,node:e});return!1};l.onMenuNodeRemove=function(a,b,c,d,e){if(!e)throw"no node passed";!1!==e.removable&&(a=e.graph,a.beforeChange(),a.remove(e),a.afterChange(),e.setDirtyCanvas(!0,!0))};l.onMenuNodeToSubgraph=function(a,b,c,d,e){a=e.graph;if(b=l.active_canvas)c=Object.values(b.selected_nodes||{}),c.length||(c=[e]),d=f.createNode("graph/subgraph"),d.pos=e.pos.concat(),a.add(d),d.buildFromNodes(c),b.deselectAllNodes(),e.setDirtyCanvas(!0,!0)};l.onMenuNodeClone=function(a,b,c,d,e){0!=e.clonable&& +(a=e.clone())&&(a.pos=[e.pos[0]+5,e.pos[1]+5],e.graph.beforeChange(),e.graph.add(a),e.graph.afterChange(),e.setDirtyCanvas(!0,!0))};l.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323", +bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000",groupcolor:"#444"}};l.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:l.onMenuAdd},{content:"Add Group",callback:l.onGroupAdd}],this._graph_stack&&0Name",d),h=f.querySelector("input");h&&g&&(h.value=g.label||"");f.querySelector("button").addEventListener("click",function(a){h.value&&(g&&(g.label=h.value),c.setDirty(!0));f.close()})}},extra:a};a&&(g.title=a.type);var h=null;a&&(h=a.getSlotInPosition(b.canvasX,b.canvasY),l.active_node=a);h?(e=[],a.getSlotMenuOptions?e=a.getSlotMenuOptions(h):(h&&h.output&&h.output.links&&h.output.links.length&&e.push({content:"Disconnect Links", +slot:h}),b=h.input||h.output,e.push(b.locked?"Cannot remove":{content:"Remove Slot",slot:h}),e.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:h})),g.title=(h.input?h.input.type:h.output.type)||"*",h.input&&h.input.type==f.ACTION&&(g.title="Action"),h.output&&h.output.type==f.EVENT&&(g.title="Event")):a?e=this.getNodeMenuOptions(a):(e=this.getCanvasMenuOptions(),(h=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&e.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group", +extra:h,options:this.getGroupMenuOptions(h)}}));e&&new f.ContextMenu(e,g,d)};"undefined"!=typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,c,d,e,g){var f,k;if(0===e)this.rect(a,b,c,d);else{void 0===g&&(g=e);if(null!=e&&e.constructor===Array)if(1==e.length)var n=f=k=g=e[0];else if(2==e.length)n=g=e[0],f=k=e[1];else if(4==e.length)n=e[0],f=e[1],k=e[2],g=e[3];else return;else n=e||0, +f=e||0,k=g||0,g=g||0;this.moveTo(a+n,b);this.lineTo(a+c-f,b);this.quadraticCurveTo(a+c,b,a+c,b+f);this.lineTo(a+c,b+d-g);this.quadraticCurveTo(a+c,b+d,a+c-g,b+d);this.lineTo(a+g,b+d);this.quadraticCurveTo(a,b+d,a,b+d-k);this.lineTo(a,b+k);this.quadraticCurveTo(a,b,a+n,b)}});f.compareObjects=function(a,b){for(var c in a)if(a[c]!=b[c])return!1;return!0};f.distance=J;f.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+ +","+(4==a.length?a[3].toFixed(2):"1.0")+")"};f.isInsideRectangle=C;f.growBounding=function(a,b,c){ba[2]&&(a[2]=b);ca[3]&&(a[3]=c)};f.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};f.overlapBounding=H;f.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),c=0,d,e,g=0;6>g;g+=2)d="0123456789ABCDEF".indexOf(a.charAt(g)),e="0123456789ABCDEF".indexOf(a.charAt(g+1)),b[c]=16*d+e,c++;return b}; +f.num2hex=function(a){for(var b="#",c,d,e=0;3>e;e++)c=a[e]/16,d=a[e]%16,b+="0123456789ABCDEF".charAt(c)+"0123456789ABCDEF".charAt(d);return b};E.prototype.addItem=function(a,b,c){function d(a){var b=this.value;b&&b.has_submenu&&e.call(this,a)}function e(a){var b=this.value,d=!0;g.current_submenu&&g.current_submenu.close(a);if(c.callback){var e=c.callback.call(this,b,c,a,g,c.node);!0===e&&(d=!1)}if(b&&(b.callback&&!c.ignore_item_callbacks&&!0!==b.disabled&&(e=b.callback.call(this,b,c,a,g,c.extra), +!0===e&&(d=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options";new g.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:g,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:c.autoopen});d=!1}d&&!g.lock&&g.close()}var g=this;c=c||{};var f=document.createElement("div");f.className="litemenu-entry submenu";var k=!1;if(null===b)f.classList.add("separator");else{f.innerHTML=b&&b.title?b.title: +a;if(f.value=b)b.disabled&&(k=!0,f.classList.add("disabled")),(b.submenu||b.has_submenu)&&f.classList.add("has_submenu");"function"==typeof b?(f.dataset.value=a,f.onclick_callback=b):f.dataset.value=b;b.className&&(f.className+=" "+b.className)}this.root.appendChild(f);k||f.addEventListener("click",e);c.autoopen&&f.addEventListener("mouseenter",d);return f};E.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock= +!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!E.isCursorOverElement(a,this.parentMenu.root)&&E.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};E.trigger=function(a,b,c,d){var e=document.createEvent("CustomEvent");e.initCustomEvent(b,!0,!0,c);e.srcElement=d;a.dispatchEvent?a.dispatchEvent(e):a.__events&&a.__events.dispatchEvent(e);return e};E.prototype.getTopMenu= +function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};E.prototype.getFirstEvent=function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};E.isCursorOverElement=function(a,b){var c=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&cMath.abs(b))return d[1];a=(a-d[0])/b;return d[1]*(1-a)+e[1]*a}}return 0}};G.prototype.draw=function(a,b,c,d,e,f){if(c=this.points){this.size=b;var g=b[0]-2*this.margin;b=b[1]-2*this.margin;e=e||"#666";a.save();a.translate(this.margin,this.margin);d&&(a.fillStyle="#111",a.fillRect(0,0,g,b),a.fillStyle="#222",a.fillRect(.5*g,0,1,b),a.strokeStyle="#333", +a.strokeRect(0,0,g,b));a.strokeStyle=e;f&&(a.globalAlpha=.5);a.beginPath();for(d=0;da[1])){var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=a[0]-this.margin;a=a[1]-this.margin; +this.selected=this.getCloserPoint([f,a],30/b.ds.scale);-1==this.selected&&(b=[f/d,1-a/e],c.push(b),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};G.prototype.onMouseMove=function(a,b){var c=this.points;if(c){var d=this.selected;if(!(0>d)){var e=(a[0]-this.margin)/(this.size[0]-2*this.margin),f=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale); +if(b=c[d]){var h=0==d||d==c.length-1;!h&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+10)?(c.splice(d,1),this.selected=-1):(b[0]=h?0==d?0:1:Math.clamp(e,0,1),b[1]=1-Math.clamp(f,0,1),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0)}}}};G.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};G.prototype.getCloserPoint=function(a,b){var c=this.points;if(!c)return-1;b=b||30;for(var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin, +f=c.length,h=[0,0],k=1E6,l=-1,p=0;pk||q>b||(l=p,k=q)}return l};f.CurveEditor=G;f.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,c){return b>a?b:c> ";b.fillText(h+d.getTitle(),.5*a.width,40);b.restore()}d=!1;this.onRenderBackground&&(d=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b);if(this.background_image&& -.5> ";b.fillText(h+d.getTitle(),.5*a.width,40);b.restore()}d=!1;this.onRenderBackground&&(d=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b); +if(this.background_image&&.5this.ds.scale;if(this.live_mode){if(!a.flags.collapsed&&(b.shadowColor="transparent",a.onDrawForeground))a.onDrawForeground(b,this,this.canvas)}else{var c=this.editor_alpha;b.globalAlpha=c;this.render_shadows&&!f?(b.shadowColor=e.DEFAULT_SHADOW_COLOR,b.shadowOffsetX=2*this.ds.scale,b.shadowOffsetY=2*this.ds.scale,b.shadowBlur=3*this.ds.scale):b.shadowColor="transparent";if(!a.flags.collapsed||!a.onDrawCollapsed|| -1!=a.onDrawCollapsed(b,this)){var n=a._shape||e.BOX_SHAPE;D.set(a.size);var q=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var l=a.getTitle?a.getTitle():a.title;null!=l&&(a._collapsed_width=Math.min(a.size[0],b.measureText(l).width+2*e.NODE_TITLE_HEIGHT),D[0]=a._collapsed_width,D[1]=0)}a.clip_area&&(b.save(),b.beginPath(),n==e.BOX_SHAPE?b.rect(0,0,D[0],D[1]):n==e.ROUND_SHAPE?b.roundRect(0,0,D[0],D[1],10):n==e.CIRCLE_SHAPE&&b.arc(.5*D[0],.5*D[1],.5*D[0],0,2*Math.PI),b.clip());a.has_errors&& +1!=a.onDrawCollapsed(b,this)){var n=a._shape||e.BOX_SHAPE;D.set(a.size);var q=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var l=a.getTitle?a.getTitle():a.title;null!=l&&(a._collapsed_width=Math.min(a.size[0],b.measureText(l).width+2*e.NODE_TITLE_HEIGHT),D[0]=a._collapsed_width,D[1]=0)}a.clip_area&&(b.save(),b.beginPath(),n==e.BOX_SHAPE?b.rect(0,0,D[0],D[1]):n==e.ROUND_SHAPE?b.roundRect(0,0,D[0],D[1],[10]):n==e.CIRCLE_SHAPE&&b.arc(.5*D[0],.5*D[1],.5*D[0],0,2*Math.PI),b.clip());a.has_errors&& (h="red");this.drawNodeShape(a,b,D,d,h,a.is_selected,a.mouseOver);b.shadowColor="transparent";if(a.onDrawForeground)a.onDrawForeground(b,this,this.canvas);b.textAlign=q?"center":"left";b.font=this.inner_text_font;h=!f;n=this.connecting_output;b.lineWidth=1;l=0;var v=new Float32Array(2);if(!a.flags.collapsed){if(a.inputs)for(d=0;dthis.ds.scale,l=a._shape||a.constructor.shape||e.ROUND_SHAPE,u=a.constructor.title_mode,m=!0;u==e.TRANSPARENT_TITLE?m=!1:u==e.AUTOHIDE_TITLE&&n&&(m=!0);x[0]=0;x[1]=m?-f:0;x[2]=d[0]+1;x[3]=m?d[1]+f:d[1];n=b.globalAlpha;b.beginPath();l==e.BOX_SHAPE||q?b.fillRect(x[0],x[1],x[2],x[3]):l==e.ROUND_SHAPE||l==e.CARD_SHAPE?b.roundRect(x[0],x[1],x[2],x[3],this.round_radius,l==e.CARD_SHAPE?0:this.round_radius):l==e.CIRCLE_SHAPE&&b.arc(.5*d[0],.5*d[1],.5*d[0],0, -2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,x[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(m||u==e.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,f,d,this.ds.scale,h);else if(u!=e.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){m=a.constructor.title_color||h;a.flags.collapsed&&(b.shadowColor=e.DEFAULT_SHADOW_COLOR);if(this.use_gradients){var v= -g.gradients[m];v||(v=g.gradients[m]=b.createLinearGradient(0,0,400,0),v.addColorStop(0,m),v.addColorStop(1,"#000"));b.fillStyle=v}else b.fillStyle=m;b.beginPath();l==e.BOX_SHAPE||q?b.rect(0,-f,d[0]+1,f):(l==e.ROUND_SHAPE||l==e.CARD_SHAPE)&&b.roundRect(0,-f,d[0]+1,f,this.round_radius,a.flags.collapsed?this.round_radius:0);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,f,d,this.ds.scale);else l==e.ROUND_SHAPE||l==e.CIRCLE_SHAPE||l==e.CARD_SHAPE?(q&&(b.fillStyle="black", -b.beginPath(),b.arc(.5*f,-.5*f,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||e.NODE_DEFAULT_BOXCOLOR,q?b.fillRect(.5*f-5,-.5*f-5,10,10):(b.beginPath(),b.arc(.5*f,-.5*f,5,0,2*Math.PI),b.fill())):(q&&(b.fillStyle="black",b.fillRect(.5*(f-10)-1,-.5*(f+10)-1,12,12)),b.fillStyle=a.boxcolor||e.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(f-10),-.5*(f+10),10,10));b.globalAlpha=n;if(a.onDrawTitleText)a.onDrawTitleText(b,f,d,this.ds.scale,this.title_text_font,c);!q&&(b.font=this.title_text_font,n=String(a.getTitle()))&& -(b.fillStyle=c?e.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(n),b.fillText(n.substr(0,20),f,e.NODE_TITLE_TEXT_Y-f),b.textAlign="left"):(b.textAlign="left",b.fillText(n,f,e.NODE_TITLE_TEXT_Y-f)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(n=e.NODE_TITLE_HEIGHT,m=a.size[0]-n,v=e.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1],m+2,-n+2,n-4,n-4),b.fillStyle=v?"#888":"#555", -l==e.BOX_SHAPE||q?b.fillRect(m+2,-n+2,n-4,n-4):(b.beginPath(),b.roundRect(m+2,-n+2,n-4,n-4,4),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(m+.2*n,.6*-n),b.lineTo(m+.8*n,.6*-n),b.lineTo(m+.5*n,.3*-n),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(c){if(a.onBounding)a.onBounding(x);u==e.TRANSPARENT_TITLE&&(x[1]-=f,x[3]+=f);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();l==e.BOX_SHAPE?b.rect(-6+x[0],-6+x[1],12+x[2],12+x[3]):l==e.ROUND_SHAPE||l==e.CARD_SHAPE&&a.flags.collapsed?b.roundRect(-6+x[0], --6+x[1],12+x[2],12+x[3],2*this.round_radius):l==e.CARD_SHAPE?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],2*this.round_radius,2):l==e.CIRCLE_SHAPE&&b.arc(.5*d[0],.5*d[1],.5*d[0]+6,0,2*Math.PI);b.strokeStyle=e.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=h;b.globalAlpha=1}};var K=new Float32Array(4),l=new Float32Array(4),m=new Float32Array(2),v=new Float32Array(2);g.prototype.drawConnections=function(a){var b=e.getTime(),d=this.visible_area;K[0]=d[0]-20;K[1]=d[1]-20;K[2]=d[2]+40;K[3]=d[3]+40;a.lineWidth= -this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;d=this.graph._nodes;for(var h=0,f=d.length;hl[2]&&(l[0]+=l[2],l[2]=Math.abs(l[2]));0>l[3]&&(l[1]+=l[3],l[3]=Math.abs(l[3]));if(G(l,K)){var J=g.outputs[k];k=c.inputs[n];if(J&&k&&(g=J.dir||(g.horizontal?e.DOWN:e.RIGHT),k=k.dir||(c.horizontal?e.UP:e.LEFT),this.renderLink(a,F,r,q,!1,0,null,g,k),q&&q._last_time&&1E3>b-q._last_time)){J=2-.002*(b-q._last_time);var E=a.globalAlpha;a.globalAlpha=E*J;this.renderLink(a,F,r,q,!0,J,"white",g,k);a.globalAlpha=E}}}}}}a.globalAlpha=1};g.prototype.renderLink=function(a,b,d,h,f,c,n,q,l,m){h&&this.visible_links.push(h); -!n&&h&&(n=h.color||g.link_type_colors[h.type]);n||(n=this.default_link_color);null!=h&&this.highlighted_links[h.id]&&(n="#FFF");q=q||e.RIGHT;l=l||e.LEFT;var u=B(b,d);this.render_connections_border&&.6b[1]?0:Math.PI,a.save(),a.translate(v[0],v[1]),a.rotate(u),a.beginPath(),a.moveTo(-5, --3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(h[0],h[1]),a.rotate(m),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(f[0],f[1],5,0,2*Math.PI),a.fill());if(c)for(a.fillStyle=n,v=0;5>v;++v)c=(.001*e.getTime()+.2*v)%1,f=this.computeConnectionPoint(b,d,c,q,l),a.beginPath(),a.arc(f[0],f[1],5,0,2*Math.PI),a.fill()};g.prototype.computeConnectionPoint=function(a,b,d,h,f){h=h||e.RIGHT;f=f||e.LEFT;var c=B(a,b),n=[a[0],a[1]],q= -[b[0],b[1]];switch(h){case e.LEFT:n[0]+=-.25*c;break;case e.RIGHT:n[0]+=.25*c;break;case e.UP:n[1]+=-.25*c;break;case e.DOWN:n[1]+=.25*c}switch(f){case e.LEFT:q[0]+=-.25*c;break;case e.RIGHT:q[0]+=.25*c;break;case e.UP:q[1]+=-.25*c;break;case e.DOWN:q[1]+=.25*c}h=(1-d)*(1-d)*(1-d);f=3*(1-d)*(1-d)*d;c=3*(1-d)*d*d;d*=d*d;return[h*a[0]+f*n[0]+c*q[0]+d*b[0],h*a[1]+f*n[1]+c*q[1]+d*b[1]]};g.prototype.drawExecutionOrder=function(a){a.shadowColor="transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle= -"white";a.globalAlpha=.75;for(var b=this.visible_nodes,d=0;dc||c>E-12||ng.last_y+k||void 0===g.last_y)){h=g.value;switch(g.type){case "button":"mousedown"===d.type&&(g.callback&&setTimeout(function(){g.callback(g,l,a,b,d)},20),this.dirty_canvas=g.clicked=!0);break;case "slider":m=Math.clamp((c-15)/(E-30),0,1); -g.value=g.options.min+(g.options.max-g.options.min)*m;g.callback&&setTimeout(function(){f(g,g.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":h=g.value;if("mousemove"==d.type&&"number"==g.type)g.value+=.1*d.deltaX*(g.options.step||1),null!=g.options.min&&g.valueg.options.max&&(g.value=g.options.max);else if("mousedown"==d.type){var H=g.options.values;H&&H.constructor===Function&&(H=g.options.values(g,a));var F= -null;"number"!=g.type&&(F=H.constructor===Array?H:Object.keys(H));c=40>c?-1:c>E-40?1:0;if("number"==g.type)g.value+=.1*c*(g.options.step||1),null!=g.options.min&&g.valueg.options.max&&(g.value=g.options.max);else if(c)m=-1,this.last_mouseclick=0,m=H.constructor===Object?F.indexOf(String(g.value))+c:F.indexOf(g.value)+c,m>=F.length&&(m=F.length-1),0>m&&(m=0),g.value=H.constructor===Array?H[m]:m;else{var r=H!=F?Object.values(H):H; -new e.ContextMenu(r,{scale:Math.max(1,this.ds.scale),event:d,className:"dark",callback:function(a,b,d){H!=F&&(a=r.indexOf(a));this.value=a;f(this,a);l.dirty_canvas=!0;return!1}.bind(g)},m)}}else"mouseup"==d.type&&"number"==g.type&&(c=40>c?-1:c>E-40?1:0,200>d.click_time&&0==c&&this.prompt("Value",g.value,function(a){this.value=Number(a);f(this,this.value)}.bind(g),d));h!=g.value&&setTimeout(function(){f(this,this.value)}.bind(g),20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==d.type&&(g.value= -!g.value,setTimeout(function(){f(g,g.value)},20));break;case "string":case "text":"mousedown"==d.type&&this.prompt("Value",g.value,function(a){this.value=a;f(this,a)}.bind(g),d,g.options?g.options.multiline:!1);break;default:g.mouse&&(this.dirty_canvas=g.mouse(d,[c,n],a))}if(h!=g.value){if(a.onWidgetChanged)a.onWidgetChanged(g.name,g.value,h,g);a.graph._version++}return g}}}return null};g.prototype.drawGroups=function(a,b){if(this.graph){a=this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha; -for(var d=0;dd&&.01>b.editor_alpha&&(clearInterval(h),1>d&&(b.live_mode=!0));1"+(m.label?m.label:q)+""+a+"",value:q})}if(l.length)return new e.ContextMenu(l, -{event:d,callback:function(a,b,d,h){f&&(b=this.getBoundingClientRect(),c.showEditPropertyValue(f,a.value,{position:[b.left,b.top]}))},parentMenu:h,allow_html:!0,node:f},b),!1}};g.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};g.onResizeNode=function(a,b,d,h,f){if(f){f.size=f.computeSize();if(f.onResize)f.onResize(f.size);f.setDirtyCanvas(!0,!0)}};g.prototype.showLinkMenu=function(a,b){var d=this;console.log(a);var h=new e.ContextMenu(["Add Node",null, -"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,e,c){switch(b){case "Add Node":g.onMenuAdd(null,null,c,h,function(b){console.log("node autoconnect");var f=d.graph.getNodeById(a.origin_id),h=d.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&f.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==h.inputs[0].type&&(f.connect(a.origin_slot,b,0),b.connect(0,h,a.target_slot),b.pos[0]-=.5*b.size[0])});break;case "Delete":d.graph.removeLink(a.id)}}}); -return!1};g.onShowPropertyEditor=function(a,b,d,h,f){function e(){var b=l.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);f[c]=b;q.parentNode&&q.parentNode.removeChild(q);f.setDirtyCanvas(!0,!0)}var c=a.property||"title";b=f[c];var q=document.createElement("div");q.className="graphdialog";q.innerHTML="";q.querySelector(".name").innerText=c;var l=q.querySelector(".value");l&&(l.value=b,l.addEventListener("blur", -function(a){this.focus()}),l.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)e(),a.preventDefault(),a.stopPropagation()}));b=g.active_canvas.canvas;d=b.getBoundingClientRect();var m=h=-20;d&&(h-=d.left,m-=d.top);event?(q.style.left=event.clientX+h+"px",q.style.top=event.clientY+m+"px"):(q.style.left=.5*b.width+h+"px",q.style.top=.5*b.height+m+"px");q.querySelector("button").addEventListener("click",e);b.parentNode.appendChild(q)};g.prototype.prompt=function(a, -b,d,h,f){var e=this;a=a||"";var c=!1,q=document.createElement("div");q.className="graphdialog rounded";q.innerHTML=f?" ":" ";q.close=function(){e.prompt_box=null;q.parentNode&&q.parentNode.removeChild(q)};1g.search_limit)break}}n=null;if(Array.prototype.filter)n=Object.keys(e.registered_node_types).filter(h); -else for(q in n=[],e.registered_node_types)h(q)&&n.push(q);for(q=0;qg.search_limit);q++);}}var f=this,c=g.active_canvas,l=c.canvas,q=l.ownerDocument||document,m=document.createElement("div");m.className="litegraph litesearchbox graphdialog rounded";m.innerHTML="Search
";m.close=function(){f.search_box=null;q.body.focus();q.body.style.overflow="";setTimeout(function(){f.canvas.focus()}, -20);m.parentNode&&m.parentNode.removeChild(m)};var v=null;1l.height-200&&(k.style.maxHeight=l.height-a.layerY-20+"px");H.focus();return m};g.prototype.showEditPropertyValue=function(a,b,d){function h(){f(v.value)}function f(f){e&&e.values&&e.values.constructor===Object&&void 0!=e.values[f]&&(f=e.values[f]);"number"==typeof a.properties[b]&&(f=Number(f));if("array"==c||"object"==c)f=JSON.parse(f);a.properties[b]=f;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,f);if(d.onclose)d.onclose();g.close();a.setDirtyCanvas(!0, -!0)}if(a&&void 0!==a.properties[b]){d=d||{};var e=a.getPropertyInfo(b),c=e.type,q="";if("string"==c||"number"==c||"array"==c||"object"==c)q="";else if("enum"!=c&&"combo"!=c||!e.values)if("boolean"==c)q="";else{console.warn("unknown type: "+c);return}else{q=""}var g=this.createDialog(""+(e.label?e.label:b)+""+q+"",d);if("enum"!=c&&"combo"!=c||!e.values)if("boolean"==c)(v=g.querySelector("input"))&&v.addEventListener("click",function(a){f(!!v.checked)});else{if(v=g.querySelector("input"))v.addEventListener("blur",function(a){this.focus()}),m=void 0!==a.properties[b]?a.properties[b]:"","string"!==c&&(m=JSON.stringify(m)), -v.value=m,v.addEventListener("keydown",function(a){13==a.keyCode&&(h(),a.preventDefault(),a.stopPropagation())})}else{var v=g.querySelector("select");v.addEventListener("change",function(a){f(a.target.value)})}g.querySelector("button").addEventListener("click",h);return g}};g.prototype.createDialog=function(a,b){b=b||{};var d=document.createElement("div");d.className="graphdialog";d.innerHTML=a;a=this.canvas.getBoundingClientRect();var h=-20,f=-20;a&&(h-=a.left,f-=a.top);b.position?(h+=b.position[0], -f+=b.position[1]):b.event?(h+=b.event.clientX,f+=b.event.clientY):(h+=.5*this.canvas.width,f+=.5*this.canvas.height);d.style.left=h+"px";d.style.top=f+"px";this.canvas.parentNode.appendChild(d);d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return d};g.prototype.createPanel=function(a,b){b=b||{};var d=b.window||window,h=document.createElement("div");h.className="litegraph dialog";h.innerHTML="
"; -h.header=h.querySelector(".dialog-header");b.width&&(h.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(h.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){h.close()}),h.header.appendChild(b));h.title_element=h.querySelector(".dialog-title");h.title_element.innerText=a;h.content=h.querySelector(".dialog-content");h.footer=h.querySelector(".dialog-footer"); -h.close=function(){this.parentNode&&this.parentNode.removeChild(this)};h.clear=function(){this.content.innerHTML=""};h.addHTML=function(a,b,d){var f=document.createElement("div");b&&(f.className=b);f.innerHTML=a;d?h.footer.appendChild(f):h.content.appendChild(f);return f};h.addButton=function(a,b,d){var f=document.createElement("button");f.innerText=a;f.options=d;f.classList.add("btn");f.addEventListener("click",b);h.footer.appendChild(f);return f};h.addSeparator=function(){var a=document.createElement("div"); -a.className="separator";h.content.appendChild(a)};h.addWidget=function(a,b,c,q,l){function f(a,b){console.log("change",a,b);q.callback&&q.callback(a,b);l&&l(a,b)}q=q||{};var m=String(c);a=a.toLowerCase();"number"==a&&(m=c.toFixed(3));var n=document.createElement("div");n.className="property";n.innerHTML="";n.querySelector(".property_name").innerText=q.label||b;var v=n.querySelector(".property_value");v.innerText=m;n.dataset.property= -b;n.dataset.type=q.type||a;n.options=q;n.value=c;if("boolean"==a)n.classList.add("boolean"),c&&n.classList.add("bool-on"),n.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";f(a,this.value)});else if("string"==a||"number"==a)v.setAttribute("contenteditable",!0),v.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),v.addEventListener("blur", -function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));f(b,a)});else if("enum"==a||"combo"==a)m=g.getPropertyPrintableValue(c,q.values),v.innerText=m,v.addEventListener("click",function(a){var b=this.parentNode.dataset.property,h=this;new e.ContextMenu(q.values||[],{event:a,className:"dark",callback:function(a,d,e){h.innerText=a;f(b,a);return!1}},d)});h.content.appendChild(n);return n};return h};g.getPropertyPrintableValue=function(a, -b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var d="",h;for(h in b)if(b[h]==a){d=h;break}return String(a)+" ("+d+")"}};g.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var d=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:d});b.id="node-panel";b.node=a;b.classList.add("settings");var h=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+ -""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var d in a.properties){var e=a.properties[d],c=a.getPropertyInfo(d);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(d,b)||b.addWidget(c.widget||c.type,d,e,c,function(b,d){h.graph.beforeChange(a);a.setProperty(b,d);h.graph.afterChange();h.dirty_canvas=!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete|| -(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};g.prototype.showSubgraphPropertiesDialog=function(a){function b(){h.clear();if(a.inputs)for(var d=0;d","subgraph_property");c.dataset.name=e.name;c.dataset.slot=d;c.querySelector(".name").innerText=e.name;c.querySelector(".type").innerText= -e.type;c.querySelector("button").addEventListener("click",function(d){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var d=this.canvas.parentNode.querySelector(".subgraph_dialog");d&&d.close();var h=this.createPanel("Subgraph Inputs",{closable:!0,width:500});h.node=a;h.classList.add("subgraph_dialog");h.addHTML(" + NameType", -"subgraph_property extra",!0).querySelector("button").addEventListener("click",function(d){d=this.parentNode;var f=d.querySelector(".name").value,h=d.querySelector(".type").value;f&&-1==a.findInputSlot(f)&&(a.addInput(f,h),d.querySelector(".name").value="",d.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(h);return h};g.prototype.checkPanels=function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var c in g.node_colors)a=g.node_colors[c],a={value:c,content:""+c+""},b.push(a);new e.ContextMenu(b,{event:d,callback:function(a){f&&((a=a.value?g.node_colors[a.value]:null)? -f.constructor===e.LGraphGroup?f.color=a.groupcolor:(f.color=a.color,f.bgcolor=a.bgcolor):(delete f.color,delete f.bgcolor),f.setDirtyCanvas(!0,!0))},parentMenu:h,node:f});return!1};g.onMenuNodeShapes=function(a,b,d,h,f){if(!f)throw"no node passed";new e.ContextMenu(e.VALID_SHAPES,{event:d,callback:function(a){f&&(f.graph.beforeChange(f),f.shape=a,f.graph.afterChange(f),f.setDirtyCanvas(!0))},parentMenu:h,node:f});return!1};g.onMenuNodeRemove=function(a,b,d,h,f){if(!f)throw"no node passed";!1!==f.removable&& -(a=f.graph,a.beforeChange(),a.remove(f),a.afterChange(),f.setDirtyCanvas(!0,!0))};g.onMenuNodeToSubgraph=function(a,b,d,h,f){a=f.graph;if(b=g.active_canvas)d=Object.values(b.selected_nodes||{}),d.length||(d=[f]),h=e.createNode("graph/subgraph"),h.pos=f.pos.concat(),a.add(h),h.buildFromNodes(d),b.deselectAllNodes(),f.setDirtyCanvas(!0,!0)};g.onMenuNodeClone=function(a,b,d,h,f){0!=f.clonable&&(a=f.clone())&&(a.pos=[f.pos[0]+5,f.pos[1]+5],f.graph.beforeChange(),f.graph.add(a),f.graph.afterChange(),f.setDirtyCanvas(!0, -!0))};g.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323",bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000", -groupcolor:"#444"}};g.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:g.onMenuAdd},{content:"Add Group",callback:g.onGroupAdd}],this._graph_stack&&0Name", -f),l=e.querySelector("input");l&&c&&(l.value=c.label||"");e.querySelector("button").addEventListener("click",function(a){l.value&&(c&&(c.label=l.value),d.setDirty(!0));e.close()})}},extra:a};a&&(c.title=a.type);var l=null;a&&(l=a.getSlotInPosition(b.canvasX,b.canvasY),g.active_node=a);l?(f=[],a.getSlotMenuOptions?f=a.getSlotMenuOptions(l):(l&&l.output&&l.output.links&&l.output.links.length&&f.push({content:"Disconnect Links",slot:l}),b=l.input||l.output,f.push(b.locked?"Cannot remove":{content:"Remove Slot", -slot:l}),f.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:l})),c.title=(l.input?l.input.type:l.output.type)||"*",l.input&&l.input.type==e.ACTION&&(c.title="Action"),l.output&&l.output.type==e.EVENT&&(c.title="Event")):a?f=this.getNodeMenuOptions(a):(f=this.getCanvasMenuOptions(),(l=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&f.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group",extra:l,options:this.getGroupMenuOptions(l)}}));f&&new e.ContextMenu(f,c,h)};"undefined"!= -typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,d,h,f,c){var e,l;if(0===f)this.rect(a,b,d,h);else{void 0===c&&(c=f);if(null!=f&&f.constructor===Array)if(1==f.length)var m=e=l=c=f[0];else if(2==f.length)m=c=f[0],e=l=f[1];else if(4==f.length)m=f[0],e=f[1],l=f[2],c=f[3];else return;else m=f||0,e=f||0,l=c||0,c=c||0;this.moveTo(a+m,b);this.lineTo(a+d-e,b);this.quadraticCurveTo(a+d,b, -a+d,b+e);this.lineTo(a+d,b+h-c);this.quadraticCurveTo(a+d,b+h,a+d-c,b+h);this.lineTo(a+c,b+h);this.quadraticCurveTo(a,b+h,a,b+h-l);this.lineTo(a,b+l);this.quadraticCurveTo(a,b,a+m,b)}});e.compareObjects=function(a,b){for(var d in a)if(a[d]!=b[d])return!1;return!0};e.distance=B;e.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+","+(4==a.length?a[3].toFixed(2):"1.0")+")"};e.isInsideRectangle=z;e.growBounding= -function(a,b,d){ba[2]&&(a[2]=b);da[3]&&(a[3]=d)};e.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};e.overlapBounding=G;e.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),d=0,h,f,c=0;6>c;c+=2)h="0123456789ABCDEF".indexOf(a.charAt(c)),f="0123456789ABCDEF".indexOf(a.charAt(c+1)),b[d]=16*h+f,d++;return b};e.num2hex=function(a){for(var b="#",d,h,f=0;3>f;f++)d=a[f]/16,h=a[f]%16,b+= -"0123456789ABCDEF".charAt(d)+"0123456789ABCDEF".charAt(h);return b};A.prototype.addItem=function(a,b,d){function h(a){var b=this.value;b&&b.has_submenu&&f.call(this,a)}function f(a){var b=this.value,f=!0;c.current_submenu&&c.current_submenu.close(a);if(d.callback){var h=d.callback.call(this,b,d,a,c,d.node);!0===h&&(f=!1)}if(b&&(b.callback&&!d.ignore_item_callbacks&&!0!==b.disabled&&(h=b.callback.call(this,b,d,a,c,d.extra),!0===h&&(f=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options"; -new c.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:c,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:d.autoopen});f=!1}f&&!c.lock&&c.close()}var c=this;d=d||{};var e=document.createElement("div");e.className="litemenu-entry submenu";var l=!1;if(null===b)e.classList.add("separator");else{e.innerHTML=b&&b.title?b.title:a;if(e.value=b)b.disabled&&(l=!0,e.classList.add("disabled")),(b.submenu||b.has_submenu)&& -e.classList.add("has_submenu");"function"==typeof b?(e.dataset.value=a,e.onclick_callback=b):e.dataset.value=b;b.className&&(e.className+=" "+b.className)}this.root.appendChild(e);l||e.addEventListener("click",f);d.autoopen&&e.addEventListener("mouseenter",h);return e};A.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock=!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!A.isCursorOverElement(a, -this.parentMenu.root)&&A.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};A.trigger=function(a,b,d,h){var f=document.createEvent("CustomEvent");f.initCustomEvent(b,!0,!0,d);f.srcElement=h;a.dispatchEvent?a.dispatchEvent(f):a.__events&&a.__events.dispatchEvent(f);return f};A.prototype.getTopMenu=function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};A.prototype.getFirstEvent= -function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};A.isCursorOverElement=function(a,b){var d=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&dMath.abs(b))return h[1];a=(a-h[0])/b;return h[1]*(1-a)+f[1]*a}}return 0}};C.prototype.draw=function(a,b,d,h,f,c){if(d=this.points){this.size=b;var e=b[0]-2*this.margin;b=b[1]-2*this.margin;f=f||"#666";a.save();a.translate(this.margin,this.margin);h&&(a.fillStyle="#111",a.fillRect(0,0,e,b),a.fillStyle="#222",a.fillRect(.5*e,0,1,b),a.strokeStyle="#333",a.strokeRect(0,0,e,b));a.strokeStyle=f;c&&(a.globalAlpha=.5);a.beginPath();for(h=0;ha[1])){var h=this.size[0]-2*this.margin,f=this.size[1]-2*this.margin,c=a[0]-this.margin;a=a[1]-this.margin;this.selected=this.getCloserPoint([c,a],30/b.ds.scale);-1==this.selected&&(b=[c/h,1-a/f],d.push(b), -d.sort(function(a,b){return a[0]-b[0]}),this.selected=d.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};C.prototype.onMouseMove=function(a,b){var d=this.points;if(d){var h=this.selected;if(!(0>h)){var f=(a[0]-this.margin)/(this.size[0]-2*this.margin),c=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale);if(b=d[h]){var e=0==h||h==d.length-1;!e&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+ -10)?(d.splice(h,1),this.selected=-1):(b[0]=e?0==h?0:1:Math.clamp(f,0,1),b[1]=1-Math.clamp(c,0,1),d.sort(function(a,b){return a[0]-b[0]}),this.selected=d.indexOf(b),this.must_update=!0)}}}};C.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};C.prototype.getCloserPoint=function(a,b){var d=this.points;if(!d)return-1;b=b||30;for(var h=this.size[0]-2*this.margin,f=this.size[1]-2*this.margin,c=d.length,e=[0,0],l=1E6,m=-1,g=0;gl||v>b||(m=g,l=v)}return m};e.CurveEditor=C;e.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,d){return b>a?b:dthis.ds.scale,l=a._shape||a.constructor.shape||e.ROUND_SHAPE,u=a.constructor.title_mode,m=!0;u==e.TRANSPARENT_TITLE?m=!1:u==e.AUTOHIDE_TITLE&&n&&(m=!0);x[0]=0;x[1]=m?-f:0;x[2]=d[0]+1;x[3]=m?d[1]+f:d[1];n=b.globalAlpha;b.beginPath();l==e.BOX_SHAPE||q?b.fillRect(x[0],x[1],x[2],x[3]):l==e.ROUND_SHAPE||l==e.CARD_SHAPE?b.roundRect(x[0],x[1],x[2],x[3],l==e.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):l==e.CIRCLE_SHAPE&&b.arc(.5* +d[0],.5*d[1],.5*d[0],0,2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,x[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(m||u==e.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,f,d,this.ds.scale,h);else if(u!=e.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){m=a.constructor.title_color||h;a.flags.collapsed&&(b.shadowColor=e.DEFAULT_SHADOW_COLOR); +if(this.use_gradients){var v=g.gradients[m];v||(v=g.gradients[m]=b.createLinearGradient(0,0,400,0),v.addColorStop(0,m),v.addColorStop(1,"#000"));b.fillStyle=v}else b.fillStyle=m;b.beginPath();l==e.BOX_SHAPE||q?b.rect(0,-f,d[0]+1,f):(l==e.ROUND_SHAPE||l==e.CARD_SHAPE)&&b.roundRect(0,-f,d[0]+1,f,a.flags.collapsed?[this.round_radius]:[this.round_radius,this.round_radius,0,0]);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,f,d,this.ds.scale);else l==e.ROUND_SHAPE||l==e.CIRCLE_SHAPE|| +l==e.CARD_SHAPE?(q&&(b.fillStyle="black",b.beginPath(),b.arc(.5*f,-.5*f,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||e.NODE_DEFAULT_BOXCOLOR,q?b.fillRect(.5*f-5,-.5*f-5,10,10):(b.beginPath(),b.arc(.5*f,-.5*f,5,0,2*Math.PI),b.fill())):(q&&(b.fillStyle="black",b.fillRect(.5*(f-10)-1,-.5*(f+10)-1,12,12)),b.fillStyle=a.boxcolor||e.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(f-10),-.5*(f+10),10,10));b.globalAlpha=n;if(a.onDrawTitleText)a.onDrawTitleText(b,f,d,this.ds.scale,this.title_text_font,c);!q&&(b.font= +this.title_text_font,n=String(a.getTitle()))&&(b.fillStyle=c?e.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(n),b.fillText(n.substr(0,20),f,e.NODE_TITLE_TEXT_Y-f),b.textAlign="left"):(b.textAlign="left",b.fillText(n,f,e.NODE_TITLE_TEXT_Y-f)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(n=e.NODE_TITLE_HEIGHT,m=a.size[0]-n,v=e.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1], +m+2,-n+2,n-4,n-4),b.fillStyle=v?"#888":"#555",l==e.BOX_SHAPE||q?b.fillRect(m+2,-n+2,n-4,n-4):(b.beginPath(),b.roundRect(m+2,-n+2,n-4,n-4,[4]),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(m+.2*n,.6*-n),b.lineTo(m+.8*n,.6*-n),b.lineTo(m+.5*n,.3*-n),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(c){if(a.onBounding)a.onBounding(x);u==e.TRANSPARENT_TITLE&&(x[1]-=f,x[3]+=f);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();l==e.BOX_SHAPE?b.rect(-6+x[0],-6+x[1],12+x[2],12+x[3]):l==e.ROUND_SHAPE||l==e.CARD_SHAPE&& +a.flags.collapsed?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],[2*this.round_radius]):l==e.CARD_SHAPE?b.roundRect(-6+x[0],-6+x[1],12+x[2],12+x[3],[2*this.round_radius,2,2*this.round_radius,2]):l==e.CIRCLE_SHAPE&&b.arc(.5*d[0],.5*d[1],.5*d[0]+6,0,2*Math.PI);b.strokeStyle=e.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=h;b.globalAlpha=1}};var K=new Float32Array(4),l=new Float32Array(4),m=new Float32Array(2),v=new Float32Array(2);g.prototype.drawConnections=function(a){var b=e.getTime(),d=this.visible_area; +K[0]=d[0]-20;K[1]=d[1]-20;K[2]=d[2]+40;K[3]=d[3]+40;a.lineWidth=this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;d=this.graph._nodes;for(var h=0,f=d.length;hl[2]&&(l[0]+=l[2],l[2]=Math.abs(l[2]));0>l[3]&&(l[1]+=l[3],l[3]=Math.abs(l[3]));if(G(l,K)){var J=g.outputs[k];k=c.inputs[n];if(J&&k&&(g=J.dir||(g.horizontal?e.DOWN:e.RIGHT),k=k.dir||(c.horizontal?e.UP:e.LEFT),this.renderLink(a,F,r,q,!1,0,null,g,k),q&&q._last_time&&1E3>b-q._last_time)){J=2-.002*(b-q._last_time);var E=a.globalAlpha;a.globalAlpha=E*J;this.renderLink(a,F,r,q,!0,J,"white",g,k);a.globalAlpha=E}}}}}}a.globalAlpha=1};g.prototype.renderLink= +function(a,b,d,h,f,c,n,q,l,m){h&&this.visible_links.push(h);!n&&h&&(n=h.color||g.link_type_colors[h.type]);n||(n=this.default_link_color);null!=h&&this.highlighted_links[h.id]&&(n="#FFF");q=q||e.RIGHT;l=l||e.LEFT;var u=B(b,d);this.render_connections_border&&.6b[1]? +0:Math.PI,a.save(),a.translate(v[0],v[1]),a.rotate(u),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(h[0],h[1]),a.rotate(m),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(f[0],f[1],5,0,2*Math.PI),a.fill());if(c)for(a.fillStyle=n,v=0;5>v;++v)c=(.001*e.getTime()+.2*v)%1,f=this.computeConnectionPoint(b,d,c,q,l),a.beginPath(),a.arc(f[0],f[1],5,0,2*Math.PI),a.fill()};g.prototype.computeConnectionPoint= +function(a,b,d,h,f){h=h||e.RIGHT;f=f||e.LEFT;var c=B(a,b),n=[a[0],a[1]],q=[b[0],b[1]];switch(h){case e.LEFT:n[0]+=-.25*c;break;case e.RIGHT:n[0]+=.25*c;break;case e.UP:n[1]+=-.25*c;break;case e.DOWN:n[1]+=.25*c}switch(f){case e.LEFT:q[0]+=-.25*c;break;case e.RIGHT:q[0]+=.25*c;break;case e.UP:q[1]+=-.25*c;break;case e.DOWN:q[1]+=.25*c}h=(1-d)*(1-d)*(1-d);f=3*(1-d)*(1-d)*d;c=3*(1-d)*d*d;d*=d*d;return[h*a[0]+f*n[0]+c*q[0]+d*b[0],h*a[1]+f*n[1]+c*q[1]+d*b[1]]};g.prototype.drawExecutionOrder=function(a){a.shadowColor= +"transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle="white";a.globalAlpha=.75;for(var b=this.visible_nodes,d=0;dc||c>E-12||ng.last_y+k||void 0===g.last_y)){h=g.value;switch(g.type){case "button":"mousedown"===d.type&&(g.callback&&setTimeout(function(){g.callback(g,l,a,b,d)},20), +this.dirty_canvas=g.clicked=!0);break;case "slider":m=Math.clamp((c-15)/(E-30),0,1);g.value=g.options.min+(g.options.max-g.options.min)*m;g.callback&&setTimeout(function(){f(g,g.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":h=g.value;if("mousemove"==d.type&&"number"==g.type)g.value+=.1*d.deltaX*(g.options.step||1),null!=g.options.min&&g.valueg.options.max&&(g.value=g.options.max);else if("mousedown"==d.type){var H= +g.options.values;H&&H.constructor===Function&&(H=g.options.values(g,a));var F=null;"number"!=g.type&&(F=H.constructor===Array?H:Object.keys(H));c=40>c?-1:c>E-40?1:0;if("number"==g.type)g.value+=.1*c*(g.options.step||1),null!=g.options.min&&g.valueg.options.max&&(g.value=g.options.max);else if(c)m=-1,this.last_mouseclick=0,m=H.constructor===Object?F.indexOf(String(g.value))+c:F.indexOf(g.value)+c,m>=F.length&&(m=F.length-1),0>m&& +(m=0),g.value=H.constructor===Array?H[m]:m;else{var r=H!=F?Object.values(H):H;new e.ContextMenu(r,{scale:Math.max(1,this.ds.scale),event:d,className:"dark",callback:function(a,b,d){H!=F&&(a=r.indexOf(a));this.value=a;f(this,a);l.dirty_canvas=!0;return!1}.bind(g)},m)}}else"mouseup"==d.type&&"number"==g.type&&(c=40>c?-1:c>E-40?1:0,200>d.click_time&&0==c&&this.prompt("Value",g.value,function(a){this.value=Number(a);f(this,this.value)}.bind(g),d));h!=g.value&&setTimeout(function(){f(this,this.value)}.bind(g), +20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==d.type&&(g.value=!g.value,setTimeout(function(){f(g,g.value)},20));break;case "string":case "text":"mousedown"==d.type&&this.prompt("Value",g.value,function(a){this.value=a;f(this,a)}.bind(g),d,g.options?g.options.multiline:!1);break;default:g.mouse&&(this.dirty_canvas=g.mouse(d,[c,n],a))}if(h!=g.value){if(a.onWidgetChanged)a.onWidgetChanged(g.name,g.value,h,g);a.graph._version++}return g}}}return null};g.prototype.drawGroups=function(a,b){if(this.graph){a= +this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha;for(var d=0;dd&&.01>b.editor_alpha&&(clearInterval(h),1>d&&(b.live_mode=!0));1"+(m.label?m.label:q)+""+a+"", +value:q})}if(l.length)return new e.ContextMenu(l,{event:d,callback:function(a,b,d,h){f&&(b=this.getBoundingClientRect(),c.showEditPropertyValue(f,a.value,{position:[b.left,b.top]}))},parentMenu:h,allow_html:!0,node:f},b),!1}};g.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};g.onResizeNode=function(a,b,d,h,f){if(f){f.size=f.computeSize();if(f.onResize)f.onResize(f.size);f.setDirtyCanvas(!0,!0)}};g.prototype.showLinkMenu=function(a,b){var d=this;console.log(a); +var h=new e.ContextMenu(["Add Node",null,"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,e,c){switch(b){case "Add Node":g.onMenuAdd(null,null,c,h,function(b){console.log("node autoconnect");var f=d.graph.getNodeById(a.origin_id),h=d.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&f.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==h.inputs[0].type&&(f.connect(a.origin_slot,b,0),b.connect(0,h,a.target_slot), +b.pos[0]-=.5*b.size[0])});break;case "Delete":d.graph.removeLink(a.id)}}});return!1};g.onShowPropertyEditor=function(a,b,d,h,f){function e(){var b=l.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);f[c]=b;q.parentNode&&q.parentNode.removeChild(q);f.setDirtyCanvas(!0,!0)}var c=a.property||"title";b=f[c];var q=document.createElement("div");q.className="graphdialog";q.innerHTML="";q.querySelector(".name").innerText= +c;var l=q.querySelector(".value");l&&(l.value=b,l.addEventListener("blur",function(a){this.focus()}),l.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)e(),a.preventDefault(),a.stopPropagation()}));b=g.active_canvas.canvas;d=b.getBoundingClientRect();var m=h=-20;d&&(h-=d.left,m-=d.top);event?(q.style.left=event.clientX+h+"px",q.style.top=event.clientY+m+"px"):(q.style.left=.5*b.width+h+"px",q.style.top=.5*b.height+m+"px");q.querySelector("button").addEventListener("click", +e);b.parentNode.appendChild(q)};g.prototype.prompt=function(a,b,d,h,f){var e=this;a=a||"";var c=!1,q=document.createElement("div");q.className="graphdialog rounded";q.innerHTML=f?" ":" ";q.close=function(){e.prompt_box=null;q.parentNode&&q.parentNode.removeChild(q)};1g.search_limit)break}}n=null;if(Array.prototype.filter)n=Object.keys(e.registered_node_types).filter(h);else for(q in n=[],e.registered_node_types)h(q)&&n.push(q);for(q=0;qg.search_limit);q++);}}var f=this,c=g.active_canvas,l=c.canvas,q=l.ownerDocument||document,m=document.createElement("div");m.className="litegraph litesearchbox graphdialog rounded";m.innerHTML="Search
"; +m.close=function(){f.search_box=null;q.body.focus();q.body.style.overflow="";setTimeout(function(){f.canvas.focus()},20);m.parentNode&&m.parentNode.removeChild(m)};var v=null;1l.height-200&&(k.style.maxHeight=l.height-a.layerY-20+"px");H.focus();return m};g.prototype.showEditPropertyValue=function(a,b,d){function h(){f(v.value)}function f(f){e&&e.values&&e.values.constructor===Object&&void 0!=e.values[f]&&(f=e.values[f]);"number"==typeof a.properties[b]&&(f=Number(f));if("array"==c||"object"==c)f=JSON.parse(f);a.properties[b]= +f;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,f);if(d.onclose)d.onclose();g.close();a.setDirtyCanvas(!0,!0)}if(a&&void 0!==a.properties[b]){d=d||{};var e=a.getPropertyInfo(b),c=e.type,q="";if("string"==c||"number"==c||"array"==c||"object"==c)q="";else if("enum"!=c&&"combo"!=c||!e.values)if("boolean"==c)q="";else{console.warn("unknown type: "+c); +return}else{q=""}var g=this.createDialog(""+(e.label?e.label:b)+""+q+"",d);if("enum"!=c&&"combo"!=c||!e.values)if("boolean"==c)(v=g.querySelector("input"))&&v.addEventListener("click",function(a){f(!!v.checked)});else{if(v=g.querySelector("input"))v.addEventListener("blur", +function(a){this.focus()}),m=void 0!==a.properties[b]?a.properties[b]:"","string"!==c&&(m=JSON.stringify(m)),v.value=m,v.addEventListener("keydown",function(a){13==a.keyCode&&(h(),a.preventDefault(),a.stopPropagation())})}else{var v=g.querySelector("select");v.addEventListener("change",function(a){f(a.target.value)})}g.querySelector("button").addEventListener("click",h);return g}};g.prototype.createDialog=function(a,b){b=b||{};var d=document.createElement("div");d.className="graphdialog";d.innerHTML= +a;a=this.canvas.getBoundingClientRect();var h=-20,f=-20;a&&(h-=a.left,f-=a.top);b.position?(h+=b.position[0],f+=b.position[1]):b.event?(h+=b.event.clientX,f+=b.event.clientY):(h+=.5*this.canvas.width,f+=.5*this.canvas.height);d.style.left=h+"px";d.style.top=f+"px";this.canvas.parentNode.appendChild(d);d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return d};g.prototype.createPanel=function(a,b){b=b||{};var d=b.window||window,h=document.createElement("div");h.className="litegraph dialog"; +h.innerHTML="
";h.header=h.querySelector(".dialog-header");b.width&&(h.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(h.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){h.close()}),h.header.appendChild(b)); +h.title_element=h.querySelector(".dialog-title");h.title_element.innerText=a;h.content=h.querySelector(".dialog-content");h.footer=h.querySelector(".dialog-footer");h.close=function(){this.parentNode&&this.parentNode.removeChild(this)};h.clear=function(){this.content.innerHTML=""};h.addHTML=function(a,b,d){var f=document.createElement("div");b&&(f.className=b);f.innerHTML=a;d?h.footer.appendChild(f):h.content.appendChild(f);return f};h.addButton=function(a,b,d){var f=document.createElement("button"); +f.innerText=a;f.options=d;f.classList.add("btn");f.addEventListener("click",b);h.footer.appendChild(f);return f};h.addSeparator=function(){var a=document.createElement("div");a.className="separator";h.content.appendChild(a)};h.addWidget=function(a,b,c,q,l){function f(a,b){console.log("change",a,b);q.callback&&q.callback(a,b);l&&l(a,b)}q=q||{};var m=String(c);a=a.toLowerCase();"number"==a&&(m=c.toFixed(3));var n=document.createElement("div");n.className="property";n.innerHTML=""; +n.querySelector(".property_name").innerText=q.label||b;var v=n.querySelector(".property_value");v.innerText=m;n.dataset.property=b;n.dataset.type=q.type||a;n.options=q;n.value=c;if("boolean"==a)n.classList.add("boolean"),c&&n.classList.add("bool-on"),n.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";f(a,this.value)});else if("string"==a||"number"==a)v.setAttribute("contenteditable", +!0),v.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),v.addEventListener("blur",function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));f(b,a)});else if("enum"==a||"combo"==a)m=g.getPropertyPrintableValue(c,q.values),v.innerText=m,v.addEventListener("click",function(a){var b=this.parentNode.dataset.property,h=this;new e.ContextMenu(q.values||[],{event:a,className:"dark",callback:function(a, +d,e){h.innerText=a;f(b,a);return!1}},d)});h.content.appendChild(n);return n};return h};g.getPropertyPrintableValue=function(a,b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var d="",h;for(h in b)if(b[h]==a){d=h;break}return String(a)+" ("+d+")"}};g.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var d=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:d});b.id="node-panel";b.node= +a;b.classList.add("settings");var h=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var d in a.properties){var e=a.properties[d],c=a.getPropertyInfo(d);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(d,b)||b.addWidget(c.widget||c.type,d,e,c,function(b,d){h.graph.beforeChange(a);a.setProperty(b,d);h.graph.afterChange();h.dirty_canvas= +!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete||(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};g.prototype.showSubgraphPropertiesDialog=function(a){function b(){h.clear();if(a.inputs)for(var d=0;d", +"subgraph_property");c.dataset.name=e.name;c.dataset.slot=d;c.querySelector(".name").innerText=e.name;c.querySelector(".type").innerText=e.type;c.querySelector("button").addEventListener("click",function(d){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var d=this.canvas.parentNode.querySelector(".subgraph_dialog");d&&d.close();var h=this.createPanel("Subgraph Inputs",{closable:!0,width:500});h.node=a;h.classList.add("subgraph_dialog"); +h.addHTML(" + NameType","subgraph_property extra",!0).querySelector("button").addEventListener("click",function(d){d=this.parentNode;var f=d.querySelector(".name").value,h=d.querySelector(".type").value;f&&-1==a.findInputSlot(f)&&(a.addInput(f,h),d.querySelector(".name").value="",d.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(h);return h};g.prototype.checkPanels= +function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var c in g.node_colors)a=g.node_colors[c],a={value:c,content:""+c+""},b.push(a);new e.ContextMenu(b,{event:d,callback:function(a){f&&((a=a.value?g.node_colors[a.value]:null)?f.constructor===e.LGraphGroup?f.color=a.groupcolor:(f.color=a.color,f.bgcolor=a.bgcolor):(delete f.color,delete f.bgcolor),f.setDirtyCanvas(!0,!0))},parentMenu:h,node:f});return!1};g.onMenuNodeShapes=function(a,b,d,h,f){if(!f)throw"no node passed";new e.ContextMenu(e.VALID_SHAPES,{event:d,callback:function(a){f&&(f.graph.beforeChange(f),f.shape=a,f.graph.afterChange(f),f.setDirtyCanvas(!0))}, +parentMenu:h,node:f});return!1};g.onMenuNodeRemove=function(a,b,d,h,f){if(!f)throw"no node passed";!1!==f.removable&&(a=f.graph,a.beforeChange(),a.remove(f),a.afterChange(),f.setDirtyCanvas(!0,!0))};g.onMenuNodeToSubgraph=function(a,b,d,h,f){a=f.graph;if(b=g.active_canvas)d=Object.values(b.selected_nodes||{}),d.length||(d=[f]),h=e.createNode("graph/subgraph"),h.pos=f.pos.concat(),a.add(h),h.buildFromNodes(d),b.deselectAllNodes(),f.setDirtyCanvas(!0,!0)};g.onMenuNodeClone=function(a,b,d,h,f){0!=f.clonable&& +(a=f.clone())&&(a.pos=[f.pos[0]+5,f.pos[1]+5],f.graph.beforeChange(),f.graph.add(a),f.graph.afterChange(),f.setDirtyCanvas(!0,!0))};g.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323", +bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000",groupcolor:"#444"}};g.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:g.onMenuAdd},{content:"Add Group",callback:g.onGroupAdd}],this._graph_stack&&0Name",f),l=e.querySelector("input");l&&c&&(l.value=c.label||"");e.querySelector("button").addEventListener("click",function(a){l.value&&(c&&(c.label=l.value),d.setDirty(!0));e.close()})}},extra:a};a&&(c.title=a.type);var l=null;a&&(l=a.getSlotInPosition(b.canvasX,b.canvasY),g.active_node=a);l?(f=[],a.getSlotMenuOptions?f=a.getSlotMenuOptions(l):(l&&l.output&&l.output.links&&l.output.links.length&&f.push({content:"Disconnect Links", +slot:l}),b=l.input||l.output,f.push(b.locked?"Cannot remove":{content:"Remove Slot",slot:l}),f.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:l})),c.title=(l.input?l.input.type:l.output.type)||"*",l.input&&l.input.type==e.ACTION&&(c.title="Action"),l.output&&l.output.type==e.EVENT&&(c.title="Event")):a?f=this.getNodeMenuOptions(a):(f=this.getCanvasMenuOptions(),(l=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&f.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group", +extra:l,options:this.getGroupMenuOptions(l)}}));f&&new e.ContextMenu(f,c,h)};"undefined"!=typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,d,h,f,c){var e,l;if(0===f)this.rect(a,b,d,h);else{void 0===c&&(c=f);if(null!=f&&f.constructor===Array)if(1==f.length)var m=e=l=c=f[0];else if(2==f.length)m=c=f[0],e=l=f[1];else if(4==f.length)m=f[0],e=f[1],l=f[2],c=f[3];else return;else m=f||0, +e=f||0,l=c||0,c=c||0;this.moveTo(a+m,b);this.lineTo(a+d-e,b);this.quadraticCurveTo(a+d,b,a+d,b+e);this.lineTo(a+d,b+h-c);this.quadraticCurveTo(a+d,b+h,a+d-c,b+h);this.lineTo(a+c,b+h);this.quadraticCurveTo(a,b+h,a,b+h-l);this.lineTo(a,b+l);this.quadraticCurveTo(a,b,a+m,b)}});e.compareObjects=function(a,b){for(var d in a)if(a[d]!=b[d])return!1;return!0};e.distance=B;e.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+ +","+(4==a.length?a[3].toFixed(2):"1.0")+")"};e.isInsideRectangle=z;e.growBounding=function(a,b,d){ba[2]&&(a[2]=b);da[3]&&(a[3]=d)};e.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};e.overlapBounding=G;e.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),d=0,h,f,c=0;6>c;c+=2)h="0123456789ABCDEF".indexOf(a.charAt(c)),f="0123456789ABCDEF".indexOf(a.charAt(c+1)),b[d]=16*h+f,d++;return b}; +e.num2hex=function(a){for(var b="#",d,h,f=0;3>f;f++)d=a[f]/16,h=a[f]%16,b+="0123456789ABCDEF".charAt(d)+"0123456789ABCDEF".charAt(h);return b};A.prototype.addItem=function(a,b,d){function h(a){var b=this.value;b&&b.has_submenu&&f.call(this,a)}function f(a){var b=this.value,f=!0;c.current_submenu&&c.current_submenu.close(a);if(d.callback){var h=d.callback.call(this,b,d,a,c,d.node);!0===h&&(f=!1)}if(b&&(b.callback&&!d.ignore_item_callbacks&&!0!==b.disabled&&(h=b.callback.call(this,b,d,a,c,d.extra), +!0===h&&(f=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options";new c.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:c,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:d.autoopen});f=!1}f&&!c.lock&&c.close()}var c=this;d=d||{};var e=document.createElement("div");e.className="litemenu-entry submenu";var l=!1;if(null===b)e.classList.add("separator");else{e.innerHTML=b&&b.title?b.title: +a;if(e.value=b)b.disabled&&(l=!0,e.classList.add("disabled")),(b.submenu||b.has_submenu)&&e.classList.add("has_submenu");"function"==typeof b?(e.dataset.value=a,e.onclick_callback=b):e.dataset.value=b;b.className&&(e.className+=" "+b.className)}this.root.appendChild(e);l||e.addEventListener("click",f);d.autoopen&&e.addEventListener("mouseenter",h);return e};A.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock= +!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!A.isCursorOverElement(a,this.parentMenu.root)&&A.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};A.trigger=function(a,b,d,h){var f=document.createEvent("CustomEvent");f.initCustomEvent(b,!0,!0,d);f.srcElement=h;a.dispatchEvent?a.dispatchEvent(f):a.__events&&a.__events.dispatchEvent(f);return f};A.prototype.getTopMenu= +function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};A.prototype.getFirstEvent=function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};A.isCursorOverElement=function(a,b){var d=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&dMath.abs(b))return h[1];a=(a-h[0])/b;return h[1]*(1-a)+f[1]*a}}return 0}};C.prototype.draw=function(a,b,d,h,f,c){if(d=this.points){this.size=b;var e=b[0]-2*this.margin;b=b[1]-2*this.margin;f=f||"#666";a.save();a.translate(this.margin,this.margin);h&&(a.fillStyle="#111",a.fillRect(0,0,e,b),a.fillStyle="#222",a.fillRect(.5*e,0,1,b),a.strokeStyle="#333", +a.strokeRect(0,0,e,b));a.strokeStyle=f;c&&(a.globalAlpha=.5);a.beginPath();for(h=0;ha[1])){var h=this.size[0]-2*this.margin,f=this.size[1]-2*this.margin,c=a[0]-this.margin;a=a[1]-this.margin; +this.selected=this.getCloserPoint([c,a],30/b.ds.scale);-1==this.selected&&(b=[c/h,1-a/f],d.push(b),d.sort(function(a,b){return a[0]-b[0]}),this.selected=d.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};C.prototype.onMouseMove=function(a,b){var d=this.points;if(d){var h=this.selected;if(!(0>h)){var f=(a[0]-this.margin)/(this.size[0]-2*this.margin),c=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale); +if(b=d[h]){var e=0==h||h==d.length-1;!e&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+10)?(d.splice(h,1),this.selected=-1):(b[0]=e?0==h?0:1:Math.clamp(f,0,1),b[1]=1-Math.clamp(c,0,1),d.sort(function(a,b){return a[0]-b[0]}),this.selected=d.indexOf(b),this.must_update=!0)}}}};C.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};C.prototype.getCloserPoint=function(a,b){var d=this.points;if(!d)return-1;b=b||30;for(var h=this.size[0]-2*this.margin,f=this.size[1]-2*this.margin, +c=d.length,e=[0,0],l=1E6,m=-1,g=0;gl||v>b||(m=g,l=v)}return m};e.CurveEditor=C;e.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,d){return b>a?b:d> ";b.fillText(d+c.getTitle(),.5*a.width,40);b.restore()}c=!1;this.onRenderBackground&&(c=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b);if(this.background_image&& -.5> ";b.fillText(d+c.getTitle(),.5*a.width,40);b.restore()}c=!1;this.onRenderBackground&&(c=this.onRenderBackground(a,b));this.viewport||(b.restore(),b.setTransform(1,0,0,1,0,0));this.visible_links.length=0;if(this.graph){b.save();this.ds.toCanvasContext(b); +if(this.background_image&&.5this.ds.scale;if(this.live_mode){if(!a.flags.collapsed&&(b.shadowColor="transparent",a.onDrawForeground))a.onDrawForeground(b,this,this.canvas)}else{var f=this.editor_alpha;b.globalAlpha=f;this.render_shadows&&!e?(b.shadowColor=k.DEFAULT_SHADOW_COLOR,b.shadowOffsetX=2*this.ds.scale,b.shadowOffsetY=2*this.ds.scale,b.shadowBlur=3*this.ds.scale):b.shadowColor="transparent";if(!a.flags.collapsed||!a.onDrawCollapsed|| -1!=a.onDrawCollapsed(b,this)){var g=a._shape||k.BOX_SHAPE;G.set(a.size);var n=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var r=a.getTitle?a.getTitle():a.title;null!=r&&(a._collapsed_width=Math.min(a.size[0],b.measureText(r).width+2*k.NODE_TITLE_HEIGHT),G[0]=a._collapsed_width,G[1]=0)}a.clip_area&&(b.save(),b.beginPath(),g==k.BOX_SHAPE?b.rect(0,0,G[0],G[1]):g==k.ROUND_SHAPE?b.roundRect(0,0,G[0],G[1],10):g==k.CIRCLE_SHAPE&&b.arc(.5*G[0],.5*G[1],.5*G[0],0,2*Math.PI),b.clip());a.has_errors&& +1!=a.onDrawCollapsed(b,this)){var g=a._shape||k.BOX_SHAPE;G.set(a.size);var n=a.horizontal;if(a.flags.collapsed){b.font=this.inner_text_font;var r=a.getTitle?a.getTitle():a.title;null!=r&&(a._collapsed_width=Math.min(a.size[0],b.measureText(r).width+2*k.NODE_TITLE_HEIGHT),G[0]=a._collapsed_width,G[1]=0)}a.clip_area&&(b.save(),b.beginPath(),g==k.BOX_SHAPE?b.rect(0,0,G[0],G[1]):g==k.ROUND_SHAPE?b.roundRect(0,0,G[0],G[1],[10]):g==k.CIRCLE_SHAPE&&b.arc(.5*G[0],.5*G[1],.5*G[0],0,2*Math.PI),b.clip());a.has_errors&& (d="red");this.drawNodeShape(a,b,G,c,d,a.is_selected,a.mouseOver);b.shadowColor="transparent";if(a.onDrawForeground)a.onDrawForeground(b,this,this.canvas);b.textAlign=n?"center":"left";b.font=this.inner_text_font;d=!e;g=this.connecting_output;b.lineWidth=1;r=0;var h=new Float32Array(2);if(!a.flags.collapsed){if(a.inputs)for(c=0;cthis.ds.scale,r=a._shape||a.constructor.shape||k.ROUND_SHAPE,l=a.constructor.title_mode,u=!0;l==k.TRANSPARENT_TITLE?u=!1:l==k.AUTOHIDE_TITLE&&g&&(u=!0);A[0]=0;A[1]=u?-e:0;A[2]=c[0]+1;A[3]=u?c[1]+e:c[1];g=b.globalAlpha;b.beginPath();r==k.BOX_SHAPE||n?b.fillRect(A[0],A[1],A[2],A[3]):r==k.ROUND_SHAPE||r==k.CARD_SHAPE?b.roundRect(A[0],A[1],A[2],A[3],this.round_radius,r==k.CARD_SHAPE?0:this.round_radius):r==k.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0],0, -2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,A[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(u||l==k.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,e,c,this.ds.scale,d);else if(l!=k.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){u=a.constructor.title_color||d;a.flags.collapsed&&(b.shadowColor=k.DEFAULT_SHADOW_COLOR);if(this.use_gradients){var p= -h.gradients[u];p||(p=h.gradients[u]=b.createLinearGradient(0,0,400,0),p.addColorStop(0,u),p.addColorStop(1,"#000"));b.fillStyle=p}else b.fillStyle=u;b.beginPath();r==k.BOX_SHAPE||n?b.rect(0,-e,c[0]+1,e):(r==k.ROUND_SHAPE||r==k.CARD_SHAPE)&&b.roundRect(0,-e,c[0]+1,e,this.round_radius,a.flags.collapsed?this.round_radius:0);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,e,c,this.ds.scale);else r==k.ROUND_SHAPE||r==k.CIRCLE_SHAPE||r==k.CARD_SHAPE?(n&&(b.fillStyle="black", -b.beginPath(),b.arc(.5*e,-.5*e,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||k.NODE_DEFAULT_BOXCOLOR,n?b.fillRect(.5*e-5,-.5*e-5,10,10):(b.beginPath(),b.arc(.5*e,-.5*e,5,0,2*Math.PI),b.fill())):(n&&(b.fillStyle="black",b.fillRect(.5*(e-10)-1,-.5*(e+10)-1,12,12)),b.fillStyle=a.boxcolor||k.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(e-10),-.5*(e+10),10,10));b.globalAlpha=g;if(a.onDrawTitleText)a.onDrawTitleText(b,e,c,this.ds.scale,this.title_text_font,f);!n&&(b.font=this.title_text_font,g=String(a.getTitle()))&& -(b.fillStyle=f?k.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(g),b.fillText(g.substr(0,20),e,k.NODE_TITLE_TEXT_Y-e),b.textAlign="left"):(b.textAlign="left",b.fillText(g,e,k.NODE_TITLE_TEXT_Y-e)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(g=k.NODE_TITLE_HEIGHT,u=a.size[0]-g,p=k.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1],u+2,-g+2,g-4,g-4),b.fillStyle=p?"#888":"#555", -r==k.BOX_SHAPE||n?b.fillRect(u+2,-g+2,g-4,g-4):(b.beginPath(),b.roundRect(u+2,-g+2,g-4,g-4,4),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(u+.2*g,.6*-g),b.lineTo(u+.8*g,.6*-g),b.lineTo(u+.5*g,.3*-g),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(f){if(a.onBounding)a.onBounding(A);l==k.TRANSPARENT_TITLE&&(A[1]-=e,A[3]+=e);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();r==k.BOX_SHAPE?b.rect(-6+A[0],-6+A[1],12+A[2],12+A[3]):r==k.ROUND_SHAPE||r==k.CARD_SHAPE&&a.flags.collapsed?b.roundRect(-6+A[0], --6+A[1],12+A[2],12+A[3],2*this.round_radius):r==k.CARD_SHAPE?b.roundRect(-6+A[0],-6+A[1],12+A[2],12+A[3],2*this.round_radius,2):r==k.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0]+6,0,2*Math.PI);b.strokeStyle=k.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=d;b.globalAlpha=1}};var J=new Float32Array(4),D=new Float32Array(4),H=new Float32Array(2),F=new Float32Array(2);h.prototype.drawConnections=function(a){var b=k.getTime(),c=this.visible_area;J[0]=c[0]-20;J[1]=c[1]-20;J[2]=c[2]+40;J[3]=c[3]+40;a.lineWidth= -this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;c=this.graph._nodes;for(var d=0,e=c.length;dD[2]&&(D[0]+=D[2],D[2]=Math.abs(D[2]));0>D[3]&&(D[1]+=D[3],D[3]=Math.abs(D[3]));if(B(D,J)){var z=r.outputs[h];h=f.inputs[g];if(z&&h&&(r=z.dir||(r.horizontal?k.DOWN:k.RIGHT),h=h.dir||(f.horizontal?k.UP:k.LEFT),this.renderLink(a,u,p,n,!1,0,null,r,h),n&&n._last_time&&1E3>b-n._last_time)){z=2-.002*(b-n._last_time);var l=a.globalAlpha;a.globalAlpha=l*z;this.renderLink(a,u,p,n,!0,z,"white",r,h);a.globalAlpha=l}}}}}}a.globalAlpha=1};h.prototype.renderLink=function(a,b,c,d,e,f,g,n,r,l){d&&this.visible_links.push(d); -!g&&d&&(g=d.color||h.link_type_colors[d.type]);g||(g=this.default_link_color);null!=d&&this.highlighted_links[d.id]&&(g="#FFF");n=n||k.RIGHT;r=r||k.LEFT;var u=E(b,c);this.render_connections_border&&.6b[1]?0:Math.PI,a.save(),a.translate(p[0],p[1]),a.rotate(u),a.beginPath(),a.moveTo(-5, --3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(d[0],d[1]),a.rotate(l),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill());if(f)for(a.fillStyle=g,p=0;5>p;++p)f=(.001*k.getTime()+.2*p)%1,e=this.computeConnectionPoint(b,c,f,n,r),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill()};h.prototype.computeConnectionPoint=function(a,b,c,d,e){d=d||k.RIGHT;e=e||k.LEFT;var f=E(a,b),g=[a[0],a[1]],n= -[b[0],b[1]];switch(d){case k.LEFT:g[0]+=-.25*f;break;case k.RIGHT:g[0]+=.25*f;break;case k.UP:g[1]+=-.25*f;break;case k.DOWN:g[1]+=.25*f}switch(e){case k.LEFT:n[0]+=-.25*f;break;case k.RIGHT:n[0]+=.25*f;break;case k.UP:n[1]+=-.25*f;break;case k.DOWN:n[1]+=.25*f}d=(1-c)*(1-c)*(1-c);e=3*(1-c)*(1-c)*c;f=3*(1-c)*c*c;c*=c*c;return[d*a[0]+e*g[0]+f*n[0]+c*b[0],d*a[1]+e*g[1]+f*n[1]+c*b[1]]};h.prototype.drawExecutionOrder=function(a){a.shadowColor="transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle= -"white";a.globalAlpha=.75;for(var b=this.visible_nodes,c=0;cf||f>t-12||gp.last_y+z||void 0===p.last_y)){d=p.value;switch(p.type){case "button":"mousedown"===c.type&&(p.callback&&setTimeout(function(){p.callback(p,r,a,b,c)},20),this.dirty_canvas=p.clicked=!0);break;case "slider":h=Math.clamp((f-15)/(t-30),0,1); -p.value=p.options.min+(p.options.max-p.options.min)*h;p.callback&&setTimeout(function(){e(p,p.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":d=p.value;if("mousemove"==c.type&&"number"==p.type)p.value+=.1*c.deltaX*(p.options.step||1),null!=p.options.min&&p.valuep.options.max&&(p.value=p.options.max);else if("mousedown"==c.type){var m=p.options.values;m&&m.constructor===Function&&(m=p.options.values(p,a));var q= -null;"number"!=p.type&&(q=m.constructor===Array?m:Object.keys(m));f=40>f?-1:f>t-40?1:0;if("number"==p.type)p.value+=.1*f*(p.options.step||1),null!=p.options.min&&p.valuep.options.max&&(p.value=p.options.max);else if(f)h=-1,this.last_mouseclick=0,h=m.constructor===Object?q.indexOf(String(p.value))+f:q.indexOf(p.value)+f,h>=q.length&&(h=q.length-1),0>h&&(h=0),p.value=m.constructor===Array?m[h]:h;else{var w=m!=q?Object.values(m):m; -new k.ContextMenu(w,{scale:Math.max(1,this.ds.scale),event:c,className:"dark",callback:function(a,b,c){m!=q&&(a=w.indexOf(a));this.value=a;e(this,a);r.dirty_canvas=!0;return!1}.bind(p)},h)}}else"mouseup"==c.type&&"number"==p.type&&(f=40>f?-1:f>t-40?1:0,200>c.click_time&&0==f&&this.prompt("Value",p.value,function(a){this.value=Number(a);e(this,this.value)}.bind(p),c));d!=p.value&&setTimeout(function(){e(this,this.value)}.bind(p),20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==c.type&&(p.value= -!p.value,setTimeout(function(){e(p,p.value)},20));break;case "string":case "text":"mousedown"==c.type&&this.prompt("Value",p.value,function(a){this.value=a;e(this,a)}.bind(p),c,p.options?p.options.multiline:!1);break;default:p.mouse&&(this.dirty_canvas=p.mouse(c,[f,g],a))}if(d!=p.value){if(a.onWidgetChanged)a.onWidgetChanged(p.name,p.value,d,p);a.graph._version++}return p}}}return null};h.prototype.drawGroups=function(a,b){if(this.graph){a=this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha; -for(var c=0;cc&&.01>b.editor_alpha&&(clearInterval(d),1>c&&(b.live_mode=!0));1"+(r.label?r.label:n)+""+a+"",value:n})}if(g.length)return new k.ContextMenu(g, -{event:c,callback:function(a,b,c,d){e&&(b=this.getBoundingClientRect(),f.showEditPropertyValue(e,a.value,{position:[b.left,b.top]}))},parentMenu:d,allow_html:!0,node:e},b),!1}};h.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};h.onResizeNode=function(a,b,c,d,e){if(e){e.size=e.computeSize();if(e.onResize)e.onResize(e.size);e.setDirtyCanvas(!0,!0)}};h.prototype.showLinkMenu=function(a,b){var c=this;console.log(a);var d=new k.ContextMenu(["Add Node",null, -"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,f,g){switch(b){case "Add Node":h.onMenuAdd(null,null,g,d,function(b){console.log("node autoconnect");var d=c.graph.getNodeById(a.origin_id),e=c.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&d.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==e.inputs[0].type&&(d.connect(a.origin_slot,b,0),b.connect(0,e,a.target_slot),b.pos[0]-=.5*b.size[0])});break;case "Delete":c.graph.removeLink(a.id)}}}); -return!1};h.onShowPropertyEditor=function(a,b,c,d,e){function f(){var b=k.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);e[g]=b;n.parentNode&&n.parentNode.removeChild(n);e.setDirtyCanvas(!0,!0)}var g=a.property||"title";b=e[g];var n=document.createElement("div");n.className="graphdialog";n.innerHTML="";n.querySelector(".name").innerText=g;var k=n.querySelector(".value");k&&(k.value=b,k.addEventListener("blur", -function(a){this.focus()}),k.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)f(),a.preventDefault(),a.stopPropagation()}));b=h.active_canvas.canvas;c=b.getBoundingClientRect();var l=d=-20;c&&(d-=c.left,l-=c.top);event?(n.style.left=event.clientX+d+"px",n.style.top=event.clientY+l+"px"):(n.style.left=.5*b.width+d+"px",n.style.top=.5*b.height+l+"px");n.querySelector("button").addEventListener("click",f);b.parentNode.appendChild(n)};h.prototype.prompt=function(a, -b,c,d,e){var f=this;a=a||"";var g=!1,n=document.createElement("div");n.className="graphdialog rounded";n.innerHTML=e?" ":" ";n.close=function(){f.prompt_box=null;n.parentNode&&n.parentNode.removeChild(n)};1h.search_limit)break}}l=null;if(Array.prototype.filter)l=Object.keys(k.registered_node_types).filter(d); -else for(n in l=[],k.registered_node_types)d(n)&&l.push(n);for(n=0;nh.search_limit);n++);}}var e=this,f=h.active_canvas,g=f.canvas,n=g.ownerDocument||document,r=document.createElement("div");r.className="litegraph litesearchbox graphdialog rounded";r.innerHTML="Search
";r.close=function(){e.search_box=null;n.body.focus();n.body.style.overflow="";setTimeout(function(){e.canvas.focus()}, -20);r.parentNode&&r.parentNode.removeChild(r)};var l=null;1g.height-200&&(m.style.maxHeight=g.height-a.layerY-20+"px");q.focus();return r};h.prototype.showEditPropertyValue=function(a,b,c){function d(){e(p.value)}function e(d){f&&f.values&&f.values.constructor===Object&&void 0!=f.values[d]&&(d=f.values[d]);"number"==typeof a.properties[b]&&(d=Number(d));if("array"==g||"object"==g)d=JSON.parse(d);a.properties[b]=d;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,d);if(c.onclose)c.onclose();l.close();a.setDirtyCanvas(!0, -!0)}if(a&&void 0!==a.properties[b]){c=c||{};var f=a.getPropertyInfo(b),g=f.type,n="";if("string"==g||"number"==g||"array"==g||"object"==g)n="";else if("enum"!=g&&"combo"!=g||!f.values)if("boolean"==g)n="";else{console.warn("unknown type: "+g);return}else{n=""}var l=this.createDialog(""+(f.label?f.label:b)+""+n+"",c);if("enum"!=g&&"combo"!=g||!f.values)if("boolean"==g)(p=l.querySelector("input"))&&p.addEventListener("click",function(a){e(!!p.checked)});else{if(p=l.querySelector("input"))p.addEventListener("blur",function(a){this.focus()}),h=void 0!==a.properties[b]?a.properties[b]:"","string"!==g&&(h=JSON.stringify(h)), -p.value=h,p.addEventListener("keydown",function(a){13==a.keyCode&&(d(),a.preventDefault(),a.stopPropagation())})}else{var p=l.querySelector("select");p.addEventListener("change",function(a){e(a.target.value)})}l.querySelector("button").addEventListener("click",d);return l}};h.prototype.createDialog=function(a,b){b=b||{};var c=document.createElement("div");c.className="graphdialog";c.innerHTML=a;a=this.canvas.getBoundingClientRect();var d=-20,e=-20;a&&(d-=a.left,e-=a.top);b.position?(d+=b.position[0], -e+=b.position[1]):b.event?(d+=b.event.clientX,e+=b.event.clientY):(d+=.5*this.canvas.width,e+=.5*this.canvas.height);c.style.left=d+"px";c.style.top=e+"px";this.canvas.parentNode.appendChild(c);c.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return c};h.prototype.createPanel=function(a,b){b=b||{};var c=b.window||window,d=document.createElement("div");d.className="litegraph dialog";d.innerHTML="
"; -d.header=d.querySelector(".dialog-header");b.width&&(d.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(d.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){d.close()}),d.header.appendChild(b));d.title_element=d.querySelector(".dialog-title");d.title_element.innerText=a;d.content=d.querySelector(".dialog-content");d.footer=d.querySelector(".dialog-footer"); -d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};d.clear=function(){this.content.innerHTML=""};d.addHTML=function(a,b,c){var e=document.createElement("div");b&&(e.className=b);e.innerHTML=a;c?d.footer.appendChild(e):d.content.appendChild(e);return e};d.addButton=function(a,b,c){var e=document.createElement("button");e.innerText=a;e.options=c;e.classList.add("btn");e.addEventListener("click",b);d.footer.appendChild(e);return e};d.addSeparator=function(){var a=document.createElement("div"); -a.className="separator";d.content.appendChild(a)};d.addWidget=function(a,b,g,n,r){function e(a,b){console.log("change",a,b);n.callback&&n.callback(a,b);r&&r(a,b)}n=n||{};var f=String(g);a=a.toLowerCase();"number"==a&&(f=g.toFixed(3));var l=document.createElement("div");l.className="property";l.innerHTML="";l.querySelector(".property_name").innerText=n.label||b;var z=l.querySelector(".property_value");z.innerText=f;l.dataset.property= -b;l.dataset.type=n.type||a;l.options=n;l.value=g;if("boolean"==a)l.classList.add("boolean"),g&&l.classList.add("bool-on"),l.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";e(a,this.value)});else if("string"==a||"number"==a)z.setAttribute("contenteditable",!0),z.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),z.addEventListener("blur", -function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));e(b,a)});else if("enum"==a||"combo"==a)f=h.getPropertyPrintableValue(g,n.values),z.innerText=f,z.addEventListener("click",function(a){var b=this.parentNode.dataset.property,d=this;new k.ContextMenu(n.values||[],{event:a,className:"dark",callback:function(a,c,n){d.innerText=a;e(b,a);return!1}},c)});d.content.appendChild(l);return l};return d};h.getPropertyPrintableValue=function(a, -b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var c="",d;for(d in b)if(b[d]==a){c=d;break}return String(a)+" ("+c+")"}};h.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var c=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:c});b.id="node-panel";b.node=a;b.classList.add("settings");var d=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+ -""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var c in a.properties){var f=a.properties[c],g=a.getPropertyInfo(c);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(c,b)||b.addWidget(g.widget||g.type,c,f,g,function(b,c){d.graph.beforeChange(a);a.setProperty(b,c);d.graph.afterChange();d.dirty_canvas=!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete|| -(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};h.prototype.showSubgraphPropertiesDialog=function(a){function b(){d.clear();if(a.inputs)for(var c=0;c","subgraph_property");g.dataset.name=f.name;g.dataset.slot=c;g.querySelector(".name").innerText=f.name;g.querySelector(".type").innerText= -f.type;g.querySelector("button").addEventListener("click",function(c){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var c=this.canvas.parentNode.querySelector(".subgraph_dialog");c&&c.close();var d=this.createPanel("Subgraph Inputs",{closable:!0,width:500});d.node=a;d.classList.add("subgraph_dialog");d.addHTML(" + NameType", -"subgraph_property extra",!0).querySelector("button").addEventListener("click",function(c){c=this.parentNode;var d=c.querySelector(".name").value,e=c.querySelector(".type").value;d&&-1==a.findInputSlot(d)&&(a.addInput(d,e),c.querySelector(".name").value="",c.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(d);return d};h.prototype.checkPanels=function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var f in h.node_colors)a=h.node_colors[f],a={value:f,content:""+f+""},b.push(a);new k.ContextMenu(b,{event:c,callback:function(a){e&&((a=a.value?h.node_colors[a.value]:null)? -e.constructor===k.LGraphGroup?e.color=a.groupcolor:(e.color=a.color,e.bgcolor=a.bgcolor):(delete e.color,delete e.bgcolor),e.setDirtyCanvas(!0,!0))},parentMenu:d,node:e});return!1};h.onMenuNodeShapes=function(a,b,c,d,e){if(!e)throw"no node passed";new k.ContextMenu(k.VALID_SHAPES,{event:c,callback:function(a){e&&(e.graph.beforeChange(e),e.shape=a,e.graph.afterChange(e),e.setDirtyCanvas(!0))},parentMenu:d,node:e});return!1};h.onMenuNodeRemove=function(a,b,c,d,e){if(!e)throw"no node passed";!1!==e.removable&& -(a=e.graph,a.beforeChange(),a.remove(e),a.afterChange(),e.setDirtyCanvas(!0,!0))};h.onMenuNodeToSubgraph=function(a,b,c,d,e){a=e.graph;if(b=h.active_canvas)c=Object.values(b.selected_nodes||{}),c.length||(c=[e]),d=k.createNode("graph/subgraph"),d.pos=e.pos.concat(),a.add(d),d.buildFromNodes(c),b.deselectAllNodes(),e.setDirtyCanvas(!0,!0)};h.onMenuNodeClone=function(a,b,c,d,e){0!=e.clonable&&(a=e.clone())&&(a.pos=[e.pos[0]+5,e.pos[1]+5],e.graph.beforeChange(),e.graph.add(a),e.graph.afterChange(),e.setDirtyCanvas(!0, -!0))};h.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323",bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000", -groupcolor:"#444"}};h.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:h.onMenuAdd},{content:"Add Group",callback:h.onGroupAdd}],this._graph_stack&&0Name", -d),g=f.querySelector("input");g&&n&&(g.value=n.label||"");f.querySelector("button").addEventListener("click",function(a){g.value&&(n&&(n.label=g.value),c.setDirty(!0));f.close()})}},extra:a};a&&(f.title=a.type);var g=null;a&&(g=a.getSlotInPosition(b.canvasX,b.canvasY),h.active_node=a);g?(e=[],a.getSlotMenuOptions?e=a.getSlotMenuOptions(g):(g&&g.output&&g.output.links&&g.output.links.length&&e.push({content:"Disconnect Links",slot:g}),b=g.input||g.output,e.push(b.locked?"Cannot remove":{content:"Remove Slot", -slot:g}),e.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:g})),f.title=(g.input?g.input.type:g.output.type)||"*",g.input&&g.input.type==k.ACTION&&(f.title="Action"),g.output&&g.output.type==k.EVENT&&(f.title="Event")):a?e=this.getNodeMenuOptions(a):(e=this.getCanvasMenuOptions(),(g=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&e.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group",extra:g,options:this.getGroupMenuOptions(g)}}));e&&new k.ContextMenu(e,f,d)};"undefined"!= -typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,c,d,e,f){var g,n;if(0===e)this.rect(a,b,c,d);else{void 0===f&&(f=e);if(null!=e&&e.constructor===Array)if(1==e.length)var k=g=n=f=e[0];else if(2==e.length)k=f=e[0],g=n=e[1];else if(4==e.length)k=e[0],g=e[1],n=e[2],f=e[3];else return;else k=e||0,g=e||0,n=f||0,f=f||0;this.moveTo(a+k,b);this.lineTo(a+c-g,b);this.quadraticCurveTo(a+c,b, -a+c,b+g);this.lineTo(a+c,b+d-f);this.quadraticCurveTo(a+c,b+d,a+c-f,b+d);this.lineTo(a+f,b+d);this.quadraticCurveTo(a,b+d,a,b+d-n);this.lineTo(a,b+n);this.quadraticCurveTo(a,b,a+k,b)}});k.compareObjects=function(a,b){for(var c in a)if(a[c]!=b[c])return!1;return!0};k.distance=E;k.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+","+(4==a.length?a[3].toFixed(2):"1.0")+")"};k.isInsideRectangle=C;k.growBounding= -function(a,b,c){ba[2]&&(a[2]=b);ca[3]&&(a[3]=c)};k.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};k.overlapBounding=B;k.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),c=0,d,e,f=0;6>f;f+=2)d="0123456789ABCDEF".indexOf(a.charAt(f)),e="0123456789ABCDEF".indexOf(a.charAt(f+1)),b[c]=16*d+e,c++;return b};k.num2hex=function(a){for(var b="#",c,d,e=0;3>e;e++)c=a[e]/16,d=a[e]%16,b+= -"0123456789ABCDEF".charAt(c)+"0123456789ABCDEF".charAt(d);return b};x.prototype.addItem=function(a,b,c){function d(a){var b=this.value;b&&b.has_submenu&&e.call(this,a)}function e(a){var b=this.value,d=!0;f.current_submenu&&f.current_submenu.close(a);if(c.callback){var e=c.callback.call(this,b,c,a,f,c.node);!0===e&&(d=!1)}if(b&&(b.callback&&!c.ignore_item_callbacks&&!0!==b.disabled&&(e=b.callback.call(this,b,c,a,f,c.extra),!0===e&&(d=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options"; -new f.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:f,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:c.autoopen});d=!1}d&&!f.lock&&f.close()}var f=this;c=c||{};var g=document.createElement("div");g.className="litemenu-entry submenu";var n=!1;if(null===b)g.classList.add("separator");else{g.innerHTML=b&&b.title?b.title:a;if(g.value=b)b.disabled&&(n=!0,g.classList.add("disabled")),(b.submenu||b.has_submenu)&& -g.classList.add("has_submenu");"function"==typeof b?(g.dataset.value=a,g.onclick_callback=b):g.dataset.value=b;b.className&&(g.className+=" "+b.className)}this.root.appendChild(g);n||g.addEventListener("click",e);c.autoopen&&g.addEventListener("mouseenter",d);return g};x.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock=!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!x.isCursorOverElement(a, -this.parentMenu.root)&&x.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};x.trigger=function(a,b,c,d){var e=document.createEvent("CustomEvent");e.initCustomEvent(b,!0,!0,c);e.srcElement=d;a.dispatchEvent?a.dispatchEvent(e):a.__events&&a.__events.dispatchEvent(e);return e};x.prototype.getTopMenu=function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};x.prototype.getFirstEvent= -function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};x.isCursorOverElement=function(a,b){var c=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&cMath.abs(b))return d[1];a=(a-d[0])/b;return d[1]*(1-a)+e[1]*a}}return 0}};I.prototype.draw=function(a,b,c,d,e,f){if(c=this.points){this.size=b;var g=b[0]-2*this.margin;b=b[1]-2*this.margin;e=e||"#666";a.save();a.translate(this.margin,this.margin);d&&(a.fillStyle="#111",a.fillRect(0,0,g,b),a.fillStyle="#222",a.fillRect(.5*g,0,1,b),a.strokeStyle="#333",a.strokeRect(0,0,g,b));a.strokeStyle=e;f&&(a.globalAlpha=.5);a.beginPath();for(d=0;da[1])){var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=a[0]-this.margin;a=a[1]-this.margin;this.selected=this.getCloserPoint([f,a],30/b.ds.scale);-1==this.selected&&(b=[f/d,1-a/e],c.push(b), -c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};I.prototype.onMouseMove=function(a,b){var c=this.points;if(c){var d=this.selected;if(!(0>d)){var e=(a[0]-this.margin)/(this.size[0]-2*this.margin),f=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale);if(b=c[d]){var g=0==d||d==c.length-1;!g&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+ -10)?(c.splice(d,1),this.selected=-1):(b[0]=g?0==d?0:1:Math.clamp(e,0,1),b[1]=1-Math.clamp(f,0,1),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0)}}}};I.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};I.prototype.getCloserPoint=function(a,b){var c=this.points;if(!c)return-1;b=b||30;for(var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=c.length,g=[0,0],n=1E6,k=-1,h=0;hn||l>b||(k=h,n=l)}return k};k.CurveEditor=I;k.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,c){return b>a?b:cthis.ds.scale,r=a._shape||a.constructor.shape||k.ROUND_SHAPE,l=a.constructor.title_mode,u=!0;l==k.TRANSPARENT_TITLE?u=!1:l==k.AUTOHIDE_TITLE&&g&&(u=!0);A[0]=0;A[1]=u?-e:0;A[2]=c[0]+1;A[3]=u?c[1]+e:c[1];g=b.globalAlpha;b.beginPath();r==k.BOX_SHAPE||n?b.fillRect(A[0],A[1],A[2],A[3]):r==k.ROUND_SHAPE||r==k.CARD_SHAPE?b.roundRect(A[0],A[1],A[2],A[3],r==k.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):r==k.CIRCLE_SHAPE&&b.arc(.5* +c[0],.5*c[1],.5*c[0],0,2*Math.PI);b.fill();a.flags.collapsed||(b.shadowColor="transparent",b.fillStyle="rgba(0,0,0,0.2)",b.fillRect(0,-1,A[2],2));b.shadowColor="transparent";if(a.onDrawBackground)a.onDrawBackground(b,this,this.canvas,this.graph_mouse);if(u||l==k.TRANSPARENT_TITLE){if(a.onDrawTitleBar)a.onDrawTitleBar(b,e,c,this.ds.scale,d);else if(l!=k.TRANSPARENT_TITLE&&(a.constructor.title_color||this.render_title_colored)){u=a.constructor.title_color||d;a.flags.collapsed&&(b.shadowColor=k.DEFAULT_SHADOW_COLOR); +if(this.use_gradients){var p=h.gradients[u];p||(p=h.gradients[u]=b.createLinearGradient(0,0,400,0),p.addColorStop(0,u),p.addColorStop(1,"#000"));b.fillStyle=p}else b.fillStyle=u;b.beginPath();r==k.BOX_SHAPE||n?b.rect(0,-e,c[0]+1,e):(r==k.ROUND_SHAPE||r==k.CARD_SHAPE)&&b.roundRect(0,-e,c[0]+1,e,a.flags.collapsed?[this.round_radius]:[this.round_radius,this.round_radius,0,0]);b.fill();b.shadowColor="transparent"}if(a.onDrawTitleBox)a.onDrawTitleBox(b,e,c,this.ds.scale);else r==k.ROUND_SHAPE||r==k.CIRCLE_SHAPE|| +r==k.CARD_SHAPE?(n&&(b.fillStyle="black",b.beginPath(),b.arc(.5*e,-.5*e,6,0,2*Math.PI),b.fill()),b.fillStyle=a.boxcolor||k.NODE_DEFAULT_BOXCOLOR,n?b.fillRect(.5*e-5,-.5*e-5,10,10):(b.beginPath(),b.arc(.5*e,-.5*e,5,0,2*Math.PI),b.fill())):(n&&(b.fillStyle="black",b.fillRect(.5*(e-10)-1,-.5*(e+10)-1,12,12)),b.fillStyle=a.boxcolor||k.NODE_DEFAULT_BOXCOLOR,b.fillRect(.5*(e-10),-.5*(e+10),10,10));b.globalAlpha=g;if(a.onDrawTitleText)a.onDrawTitleText(b,e,c,this.ds.scale,this.title_text_font,f);!n&&(b.font= +this.title_text_font,g=String(a.getTitle()))&&(b.fillStyle=f?k.NODE_SELECTED_TITLE_COLOR:a.constructor.title_text_color||this.node_title_color,a.flags.collapsed?(b.textAlign="left",b.measureText(g),b.fillText(g.substr(0,20),e,k.NODE_TITLE_TEXT_Y-e),b.textAlign="left"):(b.textAlign="left",b.fillText(g,e,k.NODE_TITLE_TEXT_Y-e)));a.flags.collapsed||!a.subgraph||a.skip_subgraph_button||(g=k.NODE_TITLE_HEIGHT,u=a.size[0]-g,p=k.isInsideRectangle(this.graph_mouse[0]-a.pos[0],this.graph_mouse[1]-a.pos[1], +u+2,-g+2,g-4,g-4),b.fillStyle=p?"#888":"#555",r==k.BOX_SHAPE||n?b.fillRect(u+2,-g+2,g-4,g-4):(b.beginPath(),b.roundRect(u+2,-g+2,g-4,g-4,[4]),b.fill()),b.fillStyle="#333",b.beginPath(),b.moveTo(u+.2*g,.6*-g),b.lineTo(u+.8*g,.6*-g),b.lineTo(u+.5*g,.3*-g),b.fill());if(a.onDrawTitle)a.onDrawTitle(b)}if(f){if(a.onBounding)a.onBounding(A);l==k.TRANSPARENT_TITLE&&(A[1]-=e,A[3]+=e);b.lineWidth=1;b.globalAlpha=.8;b.beginPath();r==k.BOX_SHAPE?b.rect(-6+A[0],-6+A[1],12+A[2],12+A[3]):r==k.ROUND_SHAPE||r==k.CARD_SHAPE&& +a.flags.collapsed?b.roundRect(-6+A[0],-6+A[1],12+A[2],12+A[3],[2*this.round_radius]):r==k.CARD_SHAPE?b.roundRect(-6+A[0],-6+A[1],12+A[2],12+A[3],[2*this.round_radius,2,2*this.round_radius,2]):r==k.CIRCLE_SHAPE&&b.arc(.5*c[0],.5*c[1],.5*c[0]+6,0,2*Math.PI);b.strokeStyle=k.NODE_BOX_OUTLINE_COLOR;b.stroke();b.strokeStyle=d;b.globalAlpha=1}};var J=new Float32Array(4),D=new Float32Array(4),H=new Float32Array(2),F=new Float32Array(2);h.prototype.drawConnections=function(a){var b=k.getTime(),c=this.visible_area; +J[0]=c[0]-20;J[1]=c[1]-20;J[2]=c[2]+40;J[3]=c[3]+40;a.lineWidth=this.connections_width;a.fillStyle="#AAA";a.strokeStyle="#AAA";a.globalAlpha=this.editor_alpha;c=this.graph._nodes;for(var d=0,e=c.length;dD[2]&&(D[0]+=D[2],D[2]=Math.abs(D[2]));0>D[3]&&(D[1]+=D[3],D[3]=Math.abs(D[3]));if(B(D,J)){var z=r.outputs[h];h=f.inputs[g];if(z&&h&&(r=z.dir||(r.horizontal?k.DOWN:k.RIGHT),h=h.dir||(f.horizontal?k.UP:k.LEFT),this.renderLink(a,u,p,n,!1,0,null,r,h),n&&n._last_time&&1E3>b-n._last_time)){z=2-.002*(b-n._last_time);var l=a.globalAlpha;a.globalAlpha=l*z;this.renderLink(a,u,p,n,!0,z,"white",r,h);a.globalAlpha=l}}}}}}a.globalAlpha=1};h.prototype.renderLink= +function(a,b,c,d,e,f,g,n,r,l){d&&this.visible_links.push(d);!g&&d&&(g=d.color||h.link_type_colors[d.type]);g||(g=this.default_link_color);null!=d&&this.highlighted_links[d.id]&&(g="#FFF");n=n||k.RIGHT;r=r||k.LEFT;var u=E(b,c);this.render_connections_border&&.6b[1]? +0:Math.PI,a.save(),a.translate(p[0],p[1]),a.rotate(u),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore(),a.save(),a.translate(d[0],d[1]),a.rotate(l),a.beginPath(),a.moveTo(-5,-3),a.lineTo(0,7),a.lineTo(5,-3),a.fill(),a.restore()),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill());if(f)for(a.fillStyle=g,p=0;5>p;++p)f=(.001*k.getTime()+.2*p)%1,e=this.computeConnectionPoint(b,c,f,n,r),a.beginPath(),a.arc(e[0],e[1],5,0,2*Math.PI),a.fill()};h.prototype.computeConnectionPoint= +function(a,b,c,d,e){d=d||k.RIGHT;e=e||k.LEFT;var f=E(a,b),g=[a[0],a[1]],n=[b[0],b[1]];switch(d){case k.LEFT:g[0]+=-.25*f;break;case k.RIGHT:g[0]+=.25*f;break;case k.UP:g[1]+=-.25*f;break;case k.DOWN:g[1]+=.25*f}switch(e){case k.LEFT:n[0]+=-.25*f;break;case k.RIGHT:n[0]+=.25*f;break;case k.UP:n[1]+=-.25*f;break;case k.DOWN:n[1]+=.25*f}d=(1-c)*(1-c)*(1-c);e=3*(1-c)*(1-c)*c;f=3*(1-c)*c*c;c*=c*c;return[d*a[0]+e*g[0]+f*n[0]+c*b[0],d*a[1]+e*g[1]+f*n[1]+c*b[1]]};h.prototype.drawExecutionOrder=function(a){a.shadowColor= +"transparent";a.globalAlpha=.25;a.textAlign="center";a.strokeStyle="white";a.globalAlpha=.75;for(var b=this.visible_nodes,c=0;cf||f>t-12||gp.last_y+z||void 0===p.last_y)){d=p.value;switch(p.type){case "button":"mousedown"===c.type&&(p.callback&&setTimeout(function(){p.callback(p,r,a,b,c)},20), +this.dirty_canvas=p.clicked=!0);break;case "slider":h=Math.clamp((f-15)/(t-30),0,1);p.value=p.options.min+(p.options.max-p.options.min)*h;p.callback&&setTimeout(function(){e(p,p.value)},20);this.dirty_canvas=!0;break;case "number":case "combo":d=p.value;if("mousemove"==c.type&&"number"==p.type)p.value+=.1*c.deltaX*(p.options.step||1),null!=p.options.min&&p.valuep.options.max&&(p.value=p.options.max);else if("mousedown"==c.type){var m= +p.options.values;m&&m.constructor===Function&&(m=p.options.values(p,a));var q=null;"number"!=p.type&&(q=m.constructor===Array?m:Object.keys(m));f=40>f?-1:f>t-40?1:0;if("number"==p.type)p.value+=.1*f*(p.options.step||1),null!=p.options.min&&p.valuep.options.max&&(p.value=p.options.max);else if(f)h=-1,this.last_mouseclick=0,h=m.constructor===Object?q.indexOf(String(p.value))+f:q.indexOf(p.value)+f,h>=q.length&&(h=q.length-1),0>h&& +(h=0),p.value=m.constructor===Array?m[h]:h;else{var w=m!=q?Object.values(m):m;new k.ContextMenu(w,{scale:Math.max(1,this.ds.scale),event:c,className:"dark",callback:function(a,b,c){m!=q&&(a=w.indexOf(a));this.value=a;e(this,a);r.dirty_canvas=!0;return!1}.bind(p)},h)}}else"mouseup"==c.type&&"number"==p.type&&(f=40>f?-1:f>t-40?1:0,200>c.click_time&&0==f&&this.prompt("Value",p.value,function(a){this.value=Number(a);e(this,this.value)}.bind(p),c));d!=p.value&&setTimeout(function(){e(this,this.value)}.bind(p), +20);this.dirty_canvas=!0;break;case "toggle":"mousedown"==c.type&&(p.value=!p.value,setTimeout(function(){e(p,p.value)},20));break;case "string":case "text":"mousedown"==c.type&&this.prompt("Value",p.value,function(a){this.value=a;e(this,a)}.bind(p),c,p.options?p.options.multiline:!1);break;default:p.mouse&&(this.dirty_canvas=p.mouse(c,[f,g],a))}if(d!=p.value){if(a.onWidgetChanged)a.onWidgetChanged(p.name,p.value,d,p);a.graph._version++}return p}}}return null};h.prototype.drawGroups=function(a,b){if(this.graph){a= +this.graph._groups;b.save();b.globalAlpha=.5*this.editor_alpha;for(var c=0;cc&&.01>b.editor_alpha&&(clearInterval(d),1>c&&(b.live_mode=!0));1"+(r.label?r.label:n)+""+a+"", +value:n})}if(g.length)return new k.ContextMenu(g,{event:c,callback:function(a,b,c,d){e&&(b=this.getBoundingClientRect(),f.showEditPropertyValue(e,a.value,{position:[b.left,b.top]}))},parentMenu:d,allow_html:!0,node:e},b),!1}};h.decodeHTML=function(a){var b=document.createElement("div");b.innerText=a;return b.innerHTML};h.onResizeNode=function(a,b,c,d,e){if(e){e.size=e.computeSize();if(e.onResize)e.onResize(e.size);e.setDirtyCanvas(!0,!0)}};h.prototype.showLinkMenu=function(a,b){var c=this;console.log(a); +var d=new k.ContextMenu(["Add Node",null,"Delete"],{event:b,title:null!=a.data?a.data.constructor.name:null,callback:function(b,f,g){switch(b){case "Add Node":h.onMenuAdd(null,null,g,d,function(b){console.log("node autoconnect");var d=c.graph.getNodeById(a.origin_id),e=c.graph.getNodeById(a.target_id);b.inputs&&b.inputs.length&&b.outputs&&b.outputs.length&&d.outputs[a.origin_slot].type==b.inputs[0].type&&b.outputs[0].type==e.inputs[0].type&&(d.connect(a.origin_slot,b,0),b.connect(0,e,a.target_slot), +b.pos[0]-=.5*b.size[0])});break;case "Delete":c.graph.removeLink(a.id)}}});return!1};h.onShowPropertyEditor=function(a,b,c,d,e){function f(){var b=k.value;"Number"==a.type?b=Number(b):"Boolean"==a.type&&(b=!!b);e[g]=b;n.parentNode&&n.parentNode.removeChild(n);e.setDirtyCanvas(!0,!0)}var g=a.property||"title";b=e[g];var n=document.createElement("div");n.className="graphdialog";n.innerHTML="";n.querySelector(".name").innerText= +g;var k=n.querySelector(".value");k&&(k.value=b,k.addEventListener("blur",function(a){this.focus()}),k.addEventListener("keydown",function(a){if(13==a.keyCode||"textarea"==a.target.localName)f(),a.preventDefault(),a.stopPropagation()}));b=h.active_canvas.canvas;c=b.getBoundingClientRect();var l=d=-20;c&&(d-=c.left,l-=c.top);event?(n.style.left=event.clientX+d+"px",n.style.top=event.clientY+l+"px"):(n.style.left=.5*b.width+d+"px",n.style.top=.5*b.height+l+"px");n.querySelector("button").addEventListener("click", +f);b.parentNode.appendChild(n)};h.prototype.prompt=function(a,b,c,d,e){var f=this;a=a||"";var g=!1,n=document.createElement("div");n.className="graphdialog rounded";n.innerHTML=e?" ":" ";n.close=function(){f.prompt_box=null;n.parentNode&&n.parentNode.removeChild(n)};1h.search_limit)break}}l=null;if(Array.prototype.filter)l=Object.keys(k.registered_node_types).filter(d);else for(n in l=[],k.registered_node_types)d(n)&&l.push(n);for(n=0;nh.search_limit);n++);}}var e=this,f=h.active_canvas,g=f.canvas,n=g.ownerDocument||document,r=document.createElement("div");r.className="litegraph litesearchbox graphdialog rounded";r.innerHTML="Search
"; +r.close=function(){e.search_box=null;n.body.focus();n.body.style.overflow="";setTimeout(function(){e.canvas.focus()},20);r.parentNode&&r.parentNode.removeChild(r)};var l=null;1g.height-200&&(m.style.maxHeight=g.height-a.layerY-20+"px");q.focus();return r};h.prototype.showEditPropertyValue=function(a,b,c){function d(){e(p.value)}function e(d){f&&f.values&&f.values.constructor===Object&&void 0!=f.values[d]&&(d=f.values[d]);"number"==typeof a.properties[b]&&(d=Number(d));if("array"==g||"object"==g)d=JSON.parse(d);a.properties[b]= +d;a.graph&&a.graph._version++;if(a.onPropertyChanged)a.onPropertyChanged(b,d);if(c.onclose)c.onclose();l.close();a.setDirtyCanvas(!0,!0)}if(a&&void 0!==a.properties[b]){c=c||{};var f=a.getPropertyInfo(b),g=f.type,n="";if("string"==g||"number"==g||"array"==g||"object"==g)n="";else if("enum"!=g&&"combo"!=g||!f.values)if("boolean"==g)n="";else{console.warn("unknown type: "+g); +return}else{n=""}var l=this.createDialog(""+(f.label?f.label:b)+""+n+"",c);if("enum"!=g&&"combo"!=g||!f.values)if("boolean"==g)(p=l.querySelector("input"))&&p.addEventListener("click",function(a){e(!!p.checked)});else{if(p=l.querySelector("input"))p.addEventListener("blur", +function(a){this.focus()}),h=void 0!==a.properties[b]?a.properties[b]:"","string"!==g&&(h=JSON.stringify(h)),p.value=h,p.addEventListener("keydown",function(a){13==a.keyCode&&(d(),a.preventDefault(),a.stopPropagation())})}else{var p=l.querySelector("select");p.addEventListener("change",function(a){e(a.target.value)})}l.querySelector("button").addEventListener("click",d);return l}};h.prototype.createDialog=function(a,b){b=b||{};var c=document.createElement("div");c.className="graphdialog";c.innerHTML= +a;a=this.canvas.getBoundingClientRect();var d=-20,e=-20;a&&(d-=a.left,e-=a.top);b.position?(d+=b.position[0],e+=b.position[1]):b.event?(d+=b.event.clientX,e+=b.event.clientY):(d+=.5*this.canvas.width,e+=.5*this.canvas.height);c.style.left=d+"px";c.style.top=e+"px";this.canvas.parentNode.appendChild(c);c.close=function(){this.parentNode&&this.parentNode.removeChild(this)};return c};h.prototype.createPanel=function(a,b){b=b||{};var c=b.window||window,d=document.createElement("div");d.className="litegraph dialog"; +d.innerHTML="
";d.header=d.querySelector(".dialog-header");b.width&&(d.style.width=b.width+(b.width.constructor===Number?"px":""));b.height&&(d.style.height=b.height+(b.height.constructor===Number?"px":""));b.closable&&(b=document.createElement("span"),b.innerHTML="✕",b.classList.add("close"),b.addEventListener("click",function(){d.close()}),d.header.appendChild(b)); +d.title_element=d.querySelector(".dialog-title");d.title_element.innerText=a;d.content=d.querySelector(".dialog-content");d.footer=d.querySelector(".dialog-footer");d.close=function(){this.parentNode&&this.parentNode.removeChild(this)};d.clear=function(){this.content.innerHTML=""};d.addHTML=function(a,b,c){var e=document.createElement("div");b&&(e.className=b);e.innerHTML=a;c?d.footer.appendChild(e):d.content.appendChild(e);return e};d.addButton=function(a,b,c){var e=document.createElement("button"); +e.innerText=a;e.options=c;e.classList.add("btn");e.addEventListener("click",b);d.footer.appendChild(e);return e};d.addSeparator=function(){var a=document.createElement("div");a.className="separator";d.content.appendChild(a)};d.addWidget=function(a,b,g,n,r){function e(a,b){console.log("change",a,b);n.callback&&n.callback(a,b);r&&r(a,b)}n=n||{};var f=String(g);a=a.toLowerCase();"number"==a&&(f=g.toFixed(3));var l=document.createElement("div");l.className="property";l.innerHTML=""; +l.querySelector(".property_name").innerText=n.label||b;var z=l.querySelector(".property_value");z.innerText=f;l.dataset.property=b;l.dataset.type=n.type||a;l.options=n;l.value=g;if("boolean"==a)l.classList.add("boolean"),g&&l.classList.add("bool-on"),l.addEventListener("click",function(){var a=this.dataset.property;this.value=!this.value;this.classList.toggle("bool-on");this.querySelector(".property_value").innerText=this.value?"true":"false";e(a,this.value)});else if("string"==a||"number"==a)z.setAttribute("contenteditable", +!0),z.addEventListener("keydown",function(a){"Enter"==a.code&&(a.preventDefault(),this.blur())}),z.addEventListener("blur",function(){var a=this.innerText,b=this.parentNode.dataset.property;"number"==this.parentNode.dataset.type&&(a=Number(a));e(b,a)});else if("enum"==a||"combo"==a)f=h.getPropertyPrintableValue(g,n.values),z.innerText=f,z.addEventListener("click",function(a){var b=this.parentNode.dataset.property,d=this;new k.ContextMenu(n.values||[],{event:a,className:"dark",callback:function(a, +c,n){d.innerText=a;e(b,a);return!1}},c)});d.content.appendChild(l);return l};return d};h.getPropertyPrintableValue=function(a,b){if(!b||b.constructor===Array)return String(a);if(b.constructor===Object){var c="",d;for(d in b)if(b[d]==a){c=d;break}return String(a)+" ("+c+")"}};h.prototype.showShowNodePanel=function(a){window.SELECTED_NODE=a;var b=document.querySelector("#node-panel");b&&b.close();var c=this.getCanvasWindow();b=this.createPanel(a.title||"",{closable:!0,window:c});b.id="node-panel";b.node= +a;b.classList.add("settings");var d=this;(function(){b.content.innerHTML="";b.addHTML(""+a.type+""+(a.constructor.desc||"")+"");b.addHTML("

Properties

");for(var c in a.properties){var f=a.properties[c],g=a.getPropertyInfo(c);a.onAddPropertyToPanel&&a.onAddPropertyToPanel(c,b)||b.addWidget(g.widget||g.type,c,f,g,function(b,c){d.graph.beforeChange(a);a.setProperty(b,c);d.graph.afterChange();d.dirty_canvas= +!0})}b.addSeparator();if(a.onShowCustomPanelInfo)a.onShowCustomPanelInfo(b);b.addButton("Delete",function(){a.block_delete||(a.graph.remove(a),b.close())}).classList.add("delete")})();this.canvas.parentNode.appendChild(b)};h.prototype.showSubgraphPropertiesDialog=function(a){function b(){d.clear();if(a.inputs)for(var c=0;c", +"subgraph_property");g.dataset.name=f.name;g.dataset.slot=c;g.querySelector(".name").innerText=f.name;g.querySelector(".type").innerText=f.type;g.querySelector("button").addEventListener("click",function(c){a.removeInput(Number(this.parentNode.dataset.slot));b()})}}}console.log("showing subgraph properties dialog");var c=this.canvas.parentNode.querySelector(".subgraph_dialog");c&&c.close();var d=this.createPanel("Subgraph Inputs",{closable:!0,width:500});d.node=a;d.classList.add("subgraph_dialog"); +d.addHTML(" + NameType","subgraph_property extra",!0).querySelector("button").addEventListener("click",function(c){c=this.parentNode;var d=c.querySelector(".name").value,e=c.querySelector(".type").value;d&&-1==a.findInputSlot(d)&&(a.addInput(d,e),c.querySelector(".name").value="",c.querySelector(".type").value="",b())});b();this.canvas.parentNode.appendChild(d);return d};h.prototype.checkPanels= +function(){if(this.canvas)for(var a=this.canvas.parentNode.querySelectorAll(".litegraph.dialog"),b=0;bNo color"});for(var f in h.node_colors)a=h.node_colors[f],a={value:f,content:""+f+""},b.push(a);new k.ContextMenu(b,{event:c,callback:function(a){e&&((a=a.value?h.node_colors[a.value]:null)?e.constructor===k.LGraphGroup?e.color=a.groupcolor:(e.color=a.color,e.bgcolor=a.bgcolor):(delete e.color,delete e.bgcolor),e.setDirtyCanvas(!0,!0))},parentMenu:d,node:e});return!1};h.onMenuNodeShapes=function(a,b,c,d,e){if(!e)throw"no node passed";new k.ContextMenu(k.VALID_SHAPES,{event:c,callback:function(a){e&&(e.graph.beforeChange(e),e.shape=a,e.graph.afterChange(e),e.setDirtyCanvas(!0))}, +parentMenu:d,node:e});return!1};h.onMenuNodeRemove=function(a,b,c,d,e){if(!e)throw"no node passed";!1!==e.removable&&(a=e.graph,a.beforeChange(),a.remove(e),a.afterChange(),e.setDirtyCanvas(!0,!0))};h.onMenuNodeToSubgraph=function(a,b,c,d,e){a=e.graph;if(b=h.active_canvas)c=Object.values(b.selected_nodes||{}),c.length||(c=[e]),d=k.createNode("graph/subgraph"),d.pos=e.pos.concat(),a.add(d),d.buildFromNodes(c),b.deselectAllNodes(),e.setDirtyCanvas(!0,!0)};h.onMenuNodeClone=function(a,b,c,d,e){0!=e.clonable&& +(a=e.clone())&&(a.pos=[e.pos[0]+5,e.pos[1]+5],e.graph.beforeChange(),e.graph.add(a),e.graph.afterChange(),e.setDirtyCanvas(!0,!0))};h.node_colors={red:{color:"#322",bgcolor:"#533",groupcolor:"#A88"},brown:{color:"#332922",bgcolor:"#593930",groupcolor:"#b06634"},green:{color:"#232",bgcolor:"#353",groupcolor:"#8A8"},blue:{color:"#223",bgcolor:"#335",groupcolor:"#88A"},pale_blue:{color:"#2a363b",bgcolor:"#3f5159",groupcolor:"#3f789e"},cyan:{color:"#233",bgcolor:"#355",groupcolor:"#8AA"},purple:{color:"#323", +bgcolor:"#535",groupcolor:"#a1309b"},yellow:{color:"#432",bgcolor:"#653",groupcolor:"#b58b2a"},black:{color:"#222",bgcolor:"#000",groupcolor:"#444"}};h.prototype.getCanvasMenuOptions=function(){if(this.getMenuOptions)var a=this.getMenuOptions();else a=[{content:"Add Node",has_submenu:!0,callback:h.onMenuAdd},{content:"Add Group",callback:h.onGroupAdd}],this._graph_stack&&0Name",d),g=f.querySelector("input");g&&n&&(g.value=n.label||"");f.querySelector("button").addEventListener("click",function(a){g.value&&(n&&(n.label=g.value),c.setDirty(!0));f.close()})}},extra:a};a&&(f.title=a.type);var g=null;a&&(g=a.getSlotInPosition(b.canvasX,b.canvasY),h.active_node=a);g?(e=[],a.getSlotMenuOptions?e=a.getSlotMenuOptions(g):(g&&g.output&&g.output.links&&g.output.links.length&&e.push({content:"Disconnect Links", +slot:g}),b=g.input||g.output,e.push(b.locked?"Cannot remove":{content:"Remove Slot",slot:g}),e.push(b.nameLocked?"Cannot rename":{content:"Rename Slot",slot:g})),f.title=(g.input?g.input.type:g.output.type)||"*",g.input&&g.input.type==k.ACTION&&(f.title="Action"),g.output&&g.output.type==k.EVENT&&(f.title="Event")):a?e=this.getNodeMenuOptions(a):(e=this.getCanvasMenuOptions(),(g=this.graph.getGroupOnPos(b.canvasX,b.canvasY))&&e.push(null,{content:"Edit Group",has_submenu:!0,submenu:{title:"Group", +extra:g,options:this.getGroupMenuOptions(g)}}));e&&new k.ContextMenu(e,f,d)};"undefined"!=typeof window&&window.CanvasRenderingContext2D&&!window.CanvasRenderingContext2D.prototype.roundRect&&(window.CanvasRenderingContext2D.prototype.roundRect=function(a,b,c,d,e,f){var g,n;if(0===e)this.rect(a,b,c,d);else{void 0===f&&(f=e);if(null!=e&&e.constructor===Array)if(1==e.length)var k=g=n=f=e[0];else if(2==e.length)k=f=e[0],g=n=e[1];else if(4==e.length)k=e[0],g=e[1],n=e[2],f=e[3];else return;else k=e||0, +g=e||0,n=f||0,f=f||0;this.moveTo(a+k,b);this.lineTo(a+c-g,b);this.quadraticCurveTo(a+c,b,a+c,b+g);this.lineTo(a+c,b+d-f);this.quadraticCurveTo(a+c,b+d,a+c-f,b+d);this.lineTo(a+f,b+d);this.quadraticCurveTo(a,b+d,a,b+d-n);this.lineTo(a,b+n);this.quadraticCurveTo(a,b,a+k,b)}});k.compareObjects=function(a,b){for(var c in a)if(a[c]!=b[c])return!1;return!0};k.distance=E;k.colorToString=function(a){return"rgba("+Math.round(255*a[0]).toFixed()+","+Math.round(255*a[1]).toFixed()+","+Math.round(255*a[2]).toFixed()+ +","+(4==a.length?a[3].toFixed(2):"1.0")+")"};k.isInsideRectangle=C;k.growBounding=function(a,b,c){ba[2]&&(a[2]=b);ca[3]&&(a[3]=c)};k.isInsideBounding=function(a,b){return a[0]b[1][0]||a[1]>b[1][1]?!1:!0};k.overlapBounding=B;k.hex2num=function(a){"#"==a.charAt(0)&&(a=a.slice(1));a=a.toUpperCase();for(var b=Array(3),c=0,d,e,f=0;6>f;f+=2)d="0123456789ABCDEF".indexOf(a.charAt(f)),e="0123456789ABCDEF".indexOf(a.charAt(f+1)),b[c]=16*d+e,c++;return b}; +k.num2hex=function(a){for(var b="#",c,d,e=0;3>e;e++)c=a[e]/16,d=a[e]%16,b+="0123456789ABCDEF".charAt(c)+"0123456789ABCDEF".charAt(d);return b};x.prototype.addItem=function(a,b,c){function d(a){var b=this.value;b&&b.has_submenu&&e.call(this,a)}function e(a){var b=this.value,d=!0;f.current_submenu&&f.current_submenu.close(a);if(c.callback){var e=c.callback.call(this,b,c,a,f,c.node);!0===e&&(d=!1)}if(b&&(b.callback&&!c.ignore_item_callbacks&&!0!==b.disabled&&(e=b.callback.call(this,b,c,a,f,c.extra), +!0===e&&(d=!1)),b.submenu)){if(!b.submenu.options)throw"ContextMenu submenu needs options";new f.constructor(b.submenu.options,{callback:b.submenu.callback,event:a,parentMenu:f,ignore_item_callbacks:b.submenu.ignore_item_callbacks,title:b.submenu.title,extra:b.submenu.extra,autoopen:c.autoopen});d=!1}d&&!f.lock&&f.close()}var f=this;c=c||{};var g=document.createElement("div");g.className="litemenu-entry submenu";var n=!1;if(null===b)g.classList.add("separator");else{g.innerHTML=b&&b.title?b.title: +a;if(g.value=b)b.disabled&&(n=!0,g.classList.add("disabled")),(b.submenu||b.has_submenu)&&g.classList.add("has_submenu");"function"==typeof b?(g.dataset.value=a,g.onclick_callback=b):g.dataset.value=b;b.className&&(g.className+=" "+b.className)}this.root.appendChild(g);n||g.addEventListener("click",e);c.autoopen&&g.addEventListener("mouseenter",d);return g};x.prototype.close=function(a,b){this.root.parentNode&&this.root.parentNode.removeChild(this.root);this.parentMenu&&!b&&(this.parentMenu.lock= +!1,this.parentMenu.current_submenu=null,void 0===a?this.parentMenu.close():a&&!x.isCursorOverElement(a,this.parentMenu.root)&&x.trigger(this.parentMenu.root,"mouseleave",a));this.current_submenu&&this.current_submenu.close(a,!0);this.root.closing_timer&&clearTimeout(this.root.closing_timer)};x.trigger=function(a,b,c,d){var e=document.createEvent("CustomEvent");e.initCustomEvent(b,!0,!0,c);e.srcElement=d;a.dispatchEvent?a.dispatchEvent(e):a.__events&&a.__events.dispatchEvent(e);return e};x.prototype.getTopMenu= +function(){return this.options.parentMenu?this.options.parentMenu.getTopMenu():this};x.prototype.getFirstEvent=function(){return this.options.parentMenu?this.options.parentMenu.getFirstEvent():this.options.event};x.isCursorOverElement=function(a,b){var c=a.clientX;a=a.clientY;return(b=b.getBoundingClientRect())?a>b.top&&ab.left&&cMath.abs(b))return d[1];a=(a-d[0])/b;return d[1]*(1-a)+e[1]*a}}return 0}};I.prototype.draw=function(a,b,c,d,e,f){if(c=this.points){this.size=b;var g=b[0]-2*this.margin;b=b[1]-2*this.margin;e=e||"#666";a.save();a.translate(this.margin,this.margin);d&&(a.fillStyle="#111",a.fillRect(0,0,g,b),a.fillStyle="#222",a.fillRect(.5*g,0,1,b),a.strokeStyle="#333", +a.strokeRect(0,0,g,b));a.strokeStyle=e;f&&(a.globalAlpha=.5);a.beginPath();for(d=0;da[1])){var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin,f=a[0]-this.margin;a=a[1]-this.margin; +this.selected=this.getCloserPoint([f,a],30/b.ds.scale);-1==this.selected&&(b=[f/d,1-a/e],c.push(b),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0);if(-1!=this.selected)return!0}};I.prototype.onMouseMove=function(a,b){var c=this.points;if(c){var d=this.selected;if(!(0>d)){var e=(a[0]-this.margin)/(this.size[0]-2*this.margin),f=(a[1]-this.margin)/(this.size[1]-2*this.margin);this._nearest=this.getCloserPoint([a[0]-this.margin,a[1]-this.margin],30/b.ds.scale); +if(b=c[d]){var g=0==d||d==c.length-1;!g&&(-10>a[0]||a[0]>this.size[0]+10||-10>a[1]||a[1]>this.size[1]+10)?(c.splice(d,1),this.selected=-1):(b[0]=g?0==d?0:1:Math.clamp(e,0,1),b[1]=1-Math.clamp(f,0,1),c.sort(function(a,b){return a[0]-b[0]}),this.selected=c.indexOf(b),this.must_update=!0)}}}};I.prototype.onMouseUp=function(a,b){this.selected=-1;return!1};I.prototype.getCloserPoint=function(a,b){var c=this.points;if(!c)return-1;b=b||30;for(var d=this.size[0]-2*this.margin,e=this.size[1]-2*this.margin, +f=c.length,g=[0,0],n=1E6,k=-1,h=0;hn||l>b||(k=h,n=l)}return k};k.CurveEditor=I;k.getParameterNames=function(a){return(a+"").replace(/[/][/].*$/gm,"").replace(/\s+/g,"").replace(/[/][*][^/*]*[*][/]/g,"").split("){",1)[0].replace(/^[^(]*[(]/,"").replace(/=[^,]+/g,"").split(",").filter(Boolean)};Math.clamp=function(a,b,c){return b>a?b:c