Support "control after generate" in vue (#6985)

Continuation of #6034 with
- Updated synchronization for seed
- Properly truncates the displayed widget value for the button
- Synchronizes control after generate state with litegraph and allows
for serialization

Several issues from original PR have not (yet) been addressed, but are
likely better moved to future PR
- fix step value being 10 (legacy system)
- ensure it works with COMBO (Fixed in #7095)
- ensure it works with FLOAT (Fixed in #7095)
- either implement or remove the config button functionality - think it
should open settings?

<img width="280" height="694" alt="image"
src="https://github.com/user-attachments/assets/f36f1cb0-237d-4bfc-bff1-e4976775cf98"
/>

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6985-Support-control-after-generate-in-vue-2b86d73d365081d8b01ce489d887ff00)
by [Unito](https://www.unito.io)

---------

Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
AustinMroz
2025-12-13 04:23:56 -08:00
committed by GitHub
parent aab9a30511
commit b22ba97a13
47 changed files with 990 additions and 61 deletions

View File

@@ -15,6 +15,28 @@ export type WidgetValue =
| void
| File[]
const CONTROL_OPTIONS = [
'fixed',
'increment',
'decrement',
'randomize'
] as const
export type ControlOptions = (typeof CONTROL_OPTIONS)[number]
function isControlOption(val: WidgetValue): val is ControlOptions {
return CONTROL_OPTIONS.includes(val as ControlOptions)
}
export function normalizeControlOption(val: WidgetValue): ControlOptions {
if (isControlOption(val)) return val
return 'randomize'
}
export type SafeControlWidget = {
value: ControlOptions
update: (value: WidgetValue) => void
}
export interface SimplifiedWidget<
T extends WidgetValue = WidgetValue,
O = Record<string, any>
@@ -47,4 +69,6 @@ export interface SimplifiedWidget<
/** Optional input specification backing this widget */
spec?: InputSpecV2
controlWidget?: SafeControlWidget
}