mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-08 17:10:07 +00:00
type implementation for detailed descriptions
Previously, description was a simple string, but supporting more complex descriptions requires that new data be passed. The type of a nodes description has been updated to be either a simple string as before, or an array consisting of short description string, an html string for the full description, and a placeholder dict for future usage. Definitions and usage points for description have been updated to accommodate this change
This commit is contained in:
@@ -85,6 +85,9 @@ const onIdle = () => {
|
||||
ctor.title_mode !== LiteGraph.NO_TITLE &&
|
||||
canvas.graph_mouse[1] < node.pos[1] // If we are over a node, but not within the node then we are on its title
|
||||
) {
|
||||
if (Array.isArray(nodeDef.description)) {
|
||||
return showTooltip(nodeDef.description[0])
|
||||
}
|
||||
return showTooltip(nodeDef.description)
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,11 @@ https://github.com/Nuked88/ComfyUI-N-Sidebar/blob/7ae7da4a9761009fb6629bc04c6830
|
||||
backgroundColor: litegraphColors.WIDGET_BGCOLOR
|
||||
}"
|
||||
>
|
||||
{{ nodeDef.description }}
|
||||
{{
|
||||
Array.isArray(nodeDef.description)
|
||||
? nodeDef.description[0]
|
||||
: nodeDef.description
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -149,8 +149,8 @@ function updateNode(node) {
|
||||
return
|
||||
}
|
||||
helpDOM.def = def
|
||||
if (def.longDescription) {
|
||||
helpDOM.innerHTML = def.longDescription
|
||||
if (Array.isArray(def.description)) {
|
||||
helpDOM.innerHTML = def.description[1]
|
||||
} else {
|
||||
//do additional parsing to prettify output and combine tooltips
|
||||
let content = ''
|
||||
@@ -189,15 +189,6 @@ function updateNode(node) {
|
||||
helpDOM.innerHTML = content
|
||||
}
|
||||
}
|
||||
app.registerExtension({
|
||||
name: 'Comfy.longformDocumentation',
|
||||
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
||||
//TODO: Find better method. Likely require explicit opt in
|
||||
if (nodeData.description.includes('</div>') && !nodeData.longDescription) {
|
||||
nodeData.longDescription = nodeData.description
|
||||
}
|
||||
}
|
||||
})
|
||||
var bringToFront
|
||||
let documentationSidebar = {
|
||||
id: 'documentationSidebar',
|
||||
|
||||
@@ -345,6 +345,11 @@ const zComfyComboOutput = z.array(z.any())
|
||||
const zComfyOutputTypesSpec = z.array(
|
||||
z.union([zComfyNodeDataType, zComfyComboOutput])
|
||||
)
|
||||
const zDescriptionSpec = z.union([
|
||||
z.string(),
|
||||
z.tuple([z.string(), z.string()]),
|
||||
z.tuple([z.string(), z.string(), z.record(z.string(), z.any())])
|
||||
])
|
||||
|
||||
const zComfyNodeDef = z.object({
|
||||
input: zComfyInputsSpec.optional(),
|
||||
@@ -354,7 +359,7 @@ const zComfyNodeDef = z.object({
|
||||
output_tooltips: z.array(z.string()).optional(),
|
||||
name: z.string(),
|
||||
display_name: z.string(),
|
||||
description: z.string(),
|
||||
description: zDescriptionSpec,
|
||||
category: z.string(),
|
||||
output_node: z.boolean(),
|
||||
python_module: z.string(),
|
||||
|
||||
2
src/types/comfy.d.ts
vendored
2
src/types/comfy.d.ts
vendored
@@ -117,7 +117,7 @@ export interface ComfyExtension {
|
||||
export type ComfyObjectInfo = {
|
||||
name: string
|
||||
display_name?: string
|
||||
description?: string
|
||||
description?: [string | string, string | string, string, Record<string, any>]
|
||||
category: string
|
||||
input?: {
|
||||
required?: Record<string, ComfyObjectInfoConfig>
|
||||
|
||||
Reference in New Issue
Block a user