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:
Austin Mroz
2024-09-27 16:55:28 -05:00
parent 8160ca0342
commit 4aa04d1419
5 changed files with 17 additions and 14 deletions

View File

@@ -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)
}

View File

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

View File

@@ -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',

View File

@@ -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(),

View File

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