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
Show 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