From cfa46ebacb66933ebb0369714d3e788ed8393630 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Tue, 11 Feb 2025 11:05:58 -0500 Subject: [PATCH] [Refactor] useBooleanWidget composable (#2516) --- src/composables/widgets/useBooleanWidget.ts | 25 +++++++++++++++++++++ src/scripts/widgets.ts | 14 ++---------- 2 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 src/composables/widgets/useBooleanWidget.ts diff --git a/src/composables/widgets/useBooleanWidget.ts b/src/composables/widgets/useBooleanWidget.ts new file mode 100644 index 000000000..4a5f526dc --- /dev/null +++ b/src/composables/widgets/useBooleanWidget.ts @@ -0,0 +1,25 @@ +import type { LGraphNode } from '@comfyorg/litegraph' + +import type { ComfyWidgetConstructor } from '@/scripts/widgets' +import type { InputSpec } from '@/types/apiTypes' + +export const useBooleanWidget = () => { + const widgetConstructor: ComfyWidgetConstructor = ( + node: LGraphNode, + inputName: string, + inputData: InputSpec + ) => { + const inputOptions = inputData[1] + const defaultVal = inputOptions?.default ?? false + const options = { + on: inputOptions?.label_on, + off: inputOptions?.label_off + } + + return { + widget: node.addWidget('toggle', inputName, defaultVal, () => {}, options) + } + } + + return widgetConstructor +} diff --git a/src/scripts/widgets.ts b/src/scripts/widgets.ts index 06918f0ba..f3d074473 100644 --- a/src/scripts/widgets.ts +++ b/src/scripts/widgets.ts @@ -3,6 +3,7 @@ import type { LGraphNode } from '@comfyorg/litegraph' import type { IWidget } from '@comfyorg/litegraph' import type { IComboWidget } from '@comfyorg/litegraph/dist/types/widgets' +import { useBooleanWidget } from '@/composables/widgets/useBooleanWidget' import { useFloatWidget } from '@/composables/widgets/useFloatWidget' import { useImageUploadWidget } from '@/composables/widgets/useImageUploadWidget' import { useIntWidget } from '@/composables/widgets/useIntWidget' @@ -251,18 +252,7 @@ export const ComfyWidgets: Record = { 'INT:noise_seed': SeedWidget, INT: useIntWidget(), FLOAT: useFloatWidget(), - BOOLEAN(node, inputName, inputData) { - let defaultVal = false - let options = {} - if (inputData[1]) { - if (inputData[1].default) defaultVal = inputData[1].default - if (inputData[1].label_on) options['on'] = inputData[1].label_on - if (inputData[1].label_off) options['off'] = inputData[1].label_off - } - return { - widget: node.addWidget('toggle', inputName, defaultVal, () => {}, options) - } - }, + BOOLEAN: useBooleanWidget(), STRING: useStringWidget(), MARKDOWN: useMarkdownWidget(), COMBO(node, inputName, inputData: InputSpec) {