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
d5a59da6
Commit
d5a59da6
authored
Apr 21, 2023
by
comfyanonymous
Browse files
Merge branch 'slotDefaults-dynamic' of
https://github.com/omar92/ComfyUI
parents
98ae4bbf
5229c1f9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
11 deletions
+62
-11
web/extensions/core/slotDefaults.js
web/extensions/core/slotDefaults.js
+62
-11
No files found.
web/extensions/core/slotDefaults.js
View file @
d5a59da6
import
{
app
}
from
"
/scripts/app.js
"
;
import
{
ComfyWidgets
}
from
"
/scripts/widgets.js
"
;
// Adds defaults for quickly adding nodes with middle click on the input/output
app
.
registerExtension
({
name
:
"
Comfy.SlotDefaults
"
,
suggestionsNumber
:
null
,
init
()
{
LiteGraph
.
middle_click_slot_add_default_node
=
true
;
LiteGraph
.
slot_types_default_in
=
{
MODEL
:
"
CheckpointLoaderSimple
"
,
LATENT
:
"
EmptyLatentImage
"
,
VAE
:
"
VAELoader
"
,
};
this
.
suggestionsNumber
=
app
.
ui
.
settings
.
addSetting
({
id
:
"
Comfy.NodeSuggestions.number
"
,
name
:
"
number of nodes suggestions
"
,
type
:
"
slider
"
,
attrs
:
{
min
:
1
,
max
:
100
,
step
:
1
,
},
defaultValue
:
5
,
onChange
:
(
newVal
,
oldVal
)
=>
{
this
.
setDefaults
(
newVal
);
}
});
},
slot_types_default_out
:
{},
slot_types_default_in
:
{},
async
beforeRegisterNodeDef
(
nodeType
,
nodeData
,
app
)
{
var
nodeId
=
nodeData
.
name
;
var
inputs
=
[];
inputs
=
nodeData
[
"
input
"
][
"
required
"
];
//only show required inputs to reduce the mess also not logical to create node with optional inputs
for
(
const
inputKey
in
inputs
)
{
var
input
=
(
inputs
[
inputKey
]);
if
(
typeof
input
[
0
]
!==
"
string
"
)
continue
;
var
type
=
input
[
0
]
if
(
type
in
ComfyWidgets
)
{
var
customProperties
=
input
[
1
]
if
(
!
(
customProperties
?.
forceInput
))
continue
;
//ignore widgets that don't force input
}
if
(
!
(
type
in
this
.
slot_types_default_out
))
{
this
.
slot_types_default_out
[
type
]
=
[
"
Reroute
"
];
}
if
(
this
.
slot_types_default_out
[
type
].
includes
(
nodeId
))
continue
;
this
.
slot_types_default_out
[
type
].
push
(
nodeId
);
}
LiteGraph
.
slot_types_default_out
=
{
LATENT
:
"
VAEDecode
"
,
IMAGE
:
"
SaveImage
"
,
CLIP
:
"
CLIPTextEncode
"
,
};
var
outputs
=
nodeData
[
"
output
"
];
for
(
const
key
in
outputs
)
{
var
type
=
outputs
[
key
];
if
(
!
(
type
in
this
.
slot_types_default_in
))
{
this
.
slot_types_default_in
[
type
]
=
[
"
Reroute
"
];
// ["Reroute", "Primitive"]; primitive doesn't always work :'()
}
this
.
slot_types_default_in
[
type
].
push
(
nodeId
);
}
var
maxNum
=
this
.
suggestionsNumber
?
this
.
suggestionsNumber
.
value
:
5
;
this
.
setDefaults
(
maxNum
);
},
setDefaults
(
maxNum
)
{
LiteGraph
.
slot_types_default_out
=
{};
LiteGraph
.
slot_types_default_in
=
{};
for
(
const
type
in
this
.
slot_types_default_out
)
{
LiteGraph
.
slot_types_default_out
[
type
]
=
this
.
slot_types_default_out
[
type
].
slice
(
0
,
maxNum
);
}
for
(
const
type
in
this
.
slot_types_default_in
)
{
LiteGraph
.
slot_types_default_in
[
type
]
=
this
.
slot_types_default_in
[
type
].
slice
(
0
,
maxNum
);
}
}
});
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