mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-03 06:47:33 +00:00
Support node deprecated/experimental flag (#563)
* Add deprecated field * Hide deprecated nodes * Add experimental node show/hide * Add setting tooltips * nit * nit * nit
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { NodeSearchService } from '@/services/nodeSearchService'
|
||||
import { ComfyNodeDef } from '@/types/apiTypes'
|
||||
import { defineStore } from 'pinia'
|
||||
import { Type, Transform, plainToClass } from 'class-transformer'
|
||||
import { Type, Transform, plainToClass, Expose } from 'class-transformer'
|
||||
import { ComfyWidgetConstructor } from '@/scripts/widgets'
|
||||
import { TreeNode } from 'primevue/treenode'
|
||||
import { buildTree } from '@/utils/treeUtil'
|
||||
@@ -166,6 +166,23 @@ export class ComfyNodeDefImpl {
|
||||
python_module: string
|
||||
description: string
|
||||
|
||||
@Transform(({ value, obj }) => value ?? obj.category === '', {
|
||||
toClassOnly: true
|
||||
})
|
||||
@Type(() => Boolean)
|
||||
@Expose()
|
||||
deprecated: boolean
|
||||
|
||||
@Transform(
|
||||
({ value, obj }) => value ?? obj.category.startsWith('_for_testing'),
|
||||
{
|
||||
toClassOnly: true
|
||||
}
|
||||
)
|
||||
@Type(() => Boolean)
|
||||
@Expose()
|
||||
experimental: boolean
|
||||
|
||||
@Type(() => ComfyInputsSpec)
|
||||
input: ComfyInputsSpec
|
||||
|
||||
@@ -229,22 +246,34 @@ export const SYSTEM_NODE_DEFS: Record<string, ComfyNodeDef> = {
|
||||
interface State {
|
||||
nodeDefsByName: Record<string, ComfyNodeDefImpl>
|
||||
widgets: Record<string, ComfyWidgetConstructor>
|
||||
showDeprecated: boolean
|
||||
showExperimental: boolean
|
||||
}
|
||||
|
||||
export const useNodeDefStore = defineStore('nodeDef', {
|
||||
state: (): State => ({
|
||||
nodeDefsByName: {},
|
||||
widgets: {}
|
||||
widgets: {},
|
||||
showDeprecated: false,
|
||||
showExperimental: false
|
||||
}),
|
||||
getters: {
|
||||
nodeDefs(state) {
|
||||
return Object.values(state.nodeDefsByName)
|
||||
},
|
||||
nodeSearchService(state) {
|
||||
return new NodeSearchService(Object.values(state.nodeDefsByName))
|
||||
// Node defs that are not deprecated
|
||||
visibleNodeDefs(state) {
|
||||
return this.nodeDefs.filter(
|
||||
(nodeDef: ComfyNodeDefImpl) =>
|
||||
(state.showDeprecated || !nodeDef.deprecated) &&
|
||||
(state.showExperimental || !nodeDef.experimental)
|
||||
)
|
||||
},
|
||||
nodeSearchService() {
|
||||
return new NodeSearchService(this.visibleNodeDefs)
|
||||
},
|
||||
nodeTree(): TreeNode {
|
||||
return buildTree(this.nodeDefs, (nodeDef: ComfyNodeDefImpl) => [
|
||||
return buildTree(this.visibleNodeDefs, (nodeDef: ComfyNodeDefImpl) => [
|
||||
...nodeDef.category.split('/'),
|
||||
nodeDef.display_name
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user