Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
ComfyUI
Commits
84ea21c8
Commit
84ea21c8
authored
May 14, 2023
by
comfyanonymous
Browse files
Update litegraph from upstream.
parent
68d12b53
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
137 additions
and
8 deletions
+137
-8
web/lib/litegraph.core.js
web/lib/litegraph.core.js
+137
-8
No files found.
web/lib/litegraph.core.js
View file @
84ea21c8
...
@@ -5880,13 +5880,13 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -5880,13 +5880,13 @@ LGraphNode.prototype.executeAction = function(action)
//when clicked on top of a node
//when clicked on top of a node
//and it is not interactive
//and it is not interactive
if (node && this.allow_interaction && !skip_action && !this.read_only) {
if (node &&
(
this.allow_interaction
|| node.flags.allow_interaction)
&& !skip_action && !this.read_only) {
if (!this.live_mode && !node.flags.pinned) {
if (!this.live_mode && !node.flags.pinned) {
this.bringToFront(node);
this.bringToFront(node);
} //if it wasn't selected?
} //if it wasn't selected?
//not dragging mouse to connect two slots
//not dragging mouse to connect two slots
if ( !this.connecting_node && !node.flags.collapsed && !this.live_mode ) {
if (
this.allow_interaction &&
!this.connecting_node && !node.flags.collapsed && !this.live_mode ) {
//Search for corner for resize
//Search for corner for resize
if ( !skip_action &&
if ( !skip_action &&
node.resizable !== false && node.inResizeCorner(e.canvasX, e.canvasY)
node.resizable !== false && node.inResizeCorner(e.canvasX, e.canvasY)
...
@@ -6033,7 +6033,7 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -6033,7 +6033,7 @@ LGraphNode.prototype.executeAction = function(action)
}
}
//double clicking
//double clicking
if (is_double_click && this.selected_nodes[node.id]) {
if (
this.allow_interaction &&
is_double_click && this.selected_nodes[node.id]) {
//double click node
//double click node
if (node.onDblClick) {
if (node.onDblClick) {
node.onDblClick( e, pos, this );
node.onDblClick( e, pos, this );
...
@@ -6307,6 +6307,9 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -6307,6 +6307,9 @@ LGraphNode.prototype.executeAction = function(action)
this.dirty_canvas = true;
this.dirty_canvas = true;
}
}
//get node over
var node = this.graph.getNodeOnPos(e.canvasX,e.canvasY,this.visible_nodes);
if (this.dragging_rectangle)
if (this.dragging_rectangle)
{
{
this.dragging_rectangle[2] = e.canvasX - this.dragging_rectangle[0];
this.dragging_rectangle[2] = e.canvasX - this.dragging_rectangle[0];
...
@@ -6336,14 +6339,11 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -6336,14 +6339,11 @@ LGraphNode.prototype.executeAction = function(action)
this.ds.offset[1] += delta[1] / this.ds.scale;
this.ds.offset[1] += delta[1] / this.ds.scale;
this.dirty_canvas = true;
this.dirty_canvas = true;
this.dirty_bgcanvas = true;
this.dirty_bgcanvas = true;
} else if (this.allow_interaction && !this.read_only) {
} else if
(
(this.allow_interaction
|| (node && node.flags.allow_interaction))
&& !this.read_only) {
if (this.connecting_node) {
if (this.connecting_node) {
this.dirty_canvas = true;
this.dirty_canvas = true;
}
}
//get node over
var node = this.graph.getNodeOnPos(e.canvasX,e.canvasY,this.visible_nodes);
//remove mouseover flag
//remove mouseover flag
for (var i = 0, l = this.graph._nodes.length; i < l; ++i) {
for (var i = 0, l = this.graph._nodes.length; i < l; ++i) {
if (this.graph._nodes[i].mouseOver && node != this.graph._nodes[i] ) {
if (this.graph._nodes[i].mouseOver && node != this.graph._nodes[i] ) {
...
@@ -9911,7 +9911,7 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -9911,7 +9911,7 @@ LGraphNode.prototype.executeAction = function(action)
event,
event,
active_widget
active_widget
) {
) {
if (!node.widgets || !node.widgets.length) {
if (!node.widgets || !node.widgets.length
|| (!this.allow_interaction && !node.flags.allow_interaction)
) {
return null;
return null;
}
}
...
@@ -10300,6 +10300,119 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -10300,6 +10300,119 @@ LGraphNode.prototype.executeAction = function(action)
canvas.graph.add(group);
canvas.graph.add(group);
};
};
/**
* Determines the furthest nodes in each direction
* @param nodes {LGraphNode[]} the nodes to from which boundary nodes will be extracted
* @return {{left: LGraphNode, top: LGraphNode, right: LGraphNode, bottom: LGraphNode}}
*/
LGraphCanvas.getBoundaryNodes = function(nodes) {
let top = null;
let right = null;
let bottom = null;
let left = null;
for (const nID in nodes) {
const node = nodes[nID];
const [x, y] = node.pos;
const [width, height] = node.size;
if (top === null || y < top.pos[1]) {
top = node;
}
if (right === null || x + width > right.pos[0] + right.size[0]) {
right = node;
}
if (bottom === null || y + height > bottom.pos[1] + bottom.size[1]) {
bottom = node;
}
if (left === null || x < left.pos[0]) {
left = node;
}
}
return {
"top": top,
"right": right,
"bottom": bottom,
"left": left
};
}
/**
* Determines the furthest nodes in each direction for the currently selected nodes
* @return {{left: LGraphNode, top: LGraphNode, right: LGraphNode, bottom: LGraphNode}}
*/
LGraphCanvas.prototype.boundaryNodesForSelection = function() {
return LGraphCanvas.getBoundaryNodes(Object.values(this.selected_nodes));
}
/**
*
* @param {LGraphNode[]} nodes a list of nodes
* @param {"top"|"bottom"|"left"|"right"} direction Direction to align the nodes
* @param {LGraphNode?} align_to Node to align to (if null, align to the furthest node in the given direction)
*/
LGraphCanvas.alignNodes = function (nodes, direction, align_to) {
if (!nodes) {
return;
}
const canvas = LGraphCanvas.active_canvas;
let boundaryNodes = []
if (align_to === undefined) {
boundaryNodes = LGraphCanvas.getBoundaryNodes(nodes)
} else {
boundaryNodes = {
"top": align_to,
"right": align_to,
"bottom": align_to,
"left": align_to
}
}
for (const [_, node] of Object.entries(canvas.selected_nodes)) {
switch (direction) {
case "right":
node.pos[0] = boundaryNodes["right"].pos[0] + boundaryNodes["right"].size[0] - node.size[0];
break;
case "left":
node.pos[0] = boundaryNodes["left"].pos[0];
break;
case "top":
node.pos[1] = boundaryNodes["top"].pos[1];
break;
case "bottom":
node.pos[1] = boundaryNodes["bottom"].pos[1] + boundaryNodes["bottom"].size[1] - node.size[1];
break;
}
}
canvas.dirty_canvas = true;
canvas.dirty_bgcanvas = true;
};
LGraphCanvas.onNodeAlign = function(value, options, event, prev_menu, node) {
new LiteGraph.ContextMenu(["Top", "Bottom", "Left", "Right"], {
event: event,
callback: inner_clicked,
parentMenu: prev_menu,
});
function inner_clicked(value) {
LGraphCanvas.alignNodes(LGraphCanvas.active_canvas.selected_nodes, value.toLowerCase(), node);
}
}
LGraphCanvas.onGroupAlign = function(value, options, event, prev_menu) {
new LiteGraph.ContextMenu(["Top", "Bottom", "Left", "Right"], {
event: event,
callback: inner_clicked,
parentMenu: prev_menu,
});
function inner_clicked(value) {
LGraphCanvas.alignNodes(LGraphCanvas.active_canvas.selected_nodes, value.toLowerCase());
}
}
LGraphCanvas.onMenuAdd = function (node, options, e, prev_menu, callback) {
LGraphCanvas.onMenuAdd = function (node, options, e, prev_menu, callback) {
var canvas = LGraphCanvas.active_canvas;
var canvas = LGraphCanvas.active_canvas;
...
@@ -12900,6 +13013,14 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -12900,6 +13013,14 @@ LGraphNode.prototype.executeAction = function(action)
options.push({ content: "Options", callback: that.showShowGraphOptionsPanel });
options.push({ content: "Options", callback: that.showShowGraphOptionsPanel });
}*/
}*/
if (Object.keys(this.selected_nodes).length > 1) {
options.push({
content: "Align",
has_submenu: true,
callback: LGraphCanvas.onGroupAlign,
})
}
if (this._graph_stack && this._graph_stack.length > 0) {
if (this._graph_stack && this._graph_stack.length > 0) {
options.push(null, {
options.push(null, {
content: "Close subgraph",
content: "Close subgraph",
...
@@ -13014,6 +13135,14 @@ LGraphNode.prototype.executeAction = function(action)
...
@@ -13014,6 +13135,14 @@ LGraphNode.prototype.executeAction = function(action)
callback: LGraphCanvas.onMenuNodeToSubgraph
callback: LGraphCanvas.onMenuNodeToSubgraph
});
});
if (Object.keys(this.selected_nodes).length > 1) {
options.push({
content: "Align Selected To",
has_submenu: true,
callback: LGraphCanvas.onNodeAlign,
})
}
options.push(null, {
options.push(null, {
content: "Remove",
content: "Remove",
disabled: !(node.removable !== false && !node.block_delete ),
disabled: !(node.removable !== false && !node.block_delete ),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment