import type { ComboboxOnChange, ComboboxOption } from '@invoke-ai/ui-library'; import { Combobox, FormControl, FormLabel } from '@invoke-ai/ui-library'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover'; import { isSeedBehaviour, seedBehaviourChanged, selectDynamicPromptsSeedBehaviour, } from 'features/dynamicPrompts/store/dynamicPromptsSlice'; import { memo, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; const ParamDynamicPromptsSeedBehaviour = () => { const dispatch = useAppDispatch(); const { t } = useTranslation(); const seedBehaviour = useAppSelector(selectDynamicPromptsSeedBehaviour); const options = useMemo(() => { return [ { value: 'PER_ITERATION', label: t('dynamicPrompts.seedBehaviour.perIterationLabel'), description: t('dynamicPrompts.seedBehaviour.perIterationDesc'), }, { value: 'PER_PROMPT', label: t('dynamicPrompts.seedBehaviour.perPromptLabel'), description: t('dynamicPrompts.seedBehaviour.perPromptDesc'), }, ]; }, [t]); const handleChange = useCallback( (v) => { if (!isSeedBehaviour(v?.value)) { return; } dispatch(seedBehaviourChanged(v.value)); }, [dispatch] ); const value = useMemo(() => options.find((o) => o.value === seedBehaviour), [options, seedBehaviour]); return ( {t('dynamicPrompts.seedBehaviour.label')} ); }; export default memo(ParamDynamicPromptsSeedBehaviour);