mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
Add tile ControlNet model selection to upscale settings
Co-authored-by: kent <kent@invoke.ai>
This commit is contained in:
committed by
psychedelicious
parent
8bfbea5ed3
commit
264cc5ef46
@@ -0,0 +1,38 @@
|
||||
import { Combobox, FormControl, FormLabel } from '@invoke-ai/ui-library';
|
||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||
import { useModelCombobox } from 'common/hooks/useModelCombobox';
|
||||
import { selectTileControlNetModel, tileControlnetModelChanged } from 'features/parameters/store/upscaleSlice';
|
||||
import { memo, useCallback } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useControlNetModels } from 'services/api/hooks/modelsByType';
|
||||
import type { ControlNetModelConfig } from 'services/api/types';
|
||||
|
||||
const ParamTileControlNetModel = () => {
|
||||
const dispatch = useAppDispatch();
|
||||
const { t } = useTranslation();
|
||||
const tileControlNetModel = useAppSelector(selectTileControlNetModel);
|
||||
const [modelConfigs, { isLoading }] = useControlNetModels();
|
||||
|
||||
const _onChange = useCallback(
|
||||
(controlNetModel: ControlNetModelConfig | null) => {
|
||||
dispatch(tileControlnetModelChanged(controlNetModel));
|
||||
},
|
||||
[dispatch]
|
||||
);
|
||||
|
||||
const { options, value, onChange, noOptionsMessage } = useModelCombobox({
|
||||
modelConfigs,
|
||||
onChange: _onChange,
|
||||
selectedModel: tileControlNetModel,
|
||||
isLoading,
|
||||
});
|
||||
|
||||
return (
|
||||
<FormControl isDisabled={!options.length} isInvalid={!options.length} minW={0} flexGrow={1} gap={2}>
|
||||
<FormLabel m={0}>{t('controlLayers.controlNet')}</FormLabel>
|
||||
<Combobox value={value} options={options} onChange={onChange} noOptionsMessage={noOptionsMessage} />
|
||||
</FormControl>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(ParamTileControlNetModel);
|
||||
@@ -5,6 +5,7 @@ import { roundDownToMultiple } from 'common/util/roundDownToMultiple';
|
||||
import ParamCreativity from 'features/parameters/components/Upscale/ParamCreativity';
|
||||
import ParamSpandrelModel from 'features/parameters/components/Upscale/ParamSpandrelModel';
|
||||
import ParamStructure from 'features/parameters/components/Upscale/ParamStructure';
|
||||
import ParamTileControlNetModel from 'features/parameters/components/Upscale/ParamTileControlNetModel';
|
||||
import { selectUpscaleSlice } from 'features/parameters/store/upscaleSlice';
|
||||
import { getGridSize } from 'features/parameters/util/optimalDimension';
|
||||
import { UpscaleScaleSlider } from 'features/settingsAccordions/components/UpscaleSettingsAccordion/UpscaleScaleSlider';
|
||||
@@ -70,6 +71,7 @@ export const UpscaleSettingsAccordion = memo(() => {
|
||||
</Flex>
|
||||
<Expander label={t('accordions.advanced.options')} isOpen={isOpenExpander} onToggle={onToggleExpander}>
|
||||
<Flex gap={4} pb={4} flexDir="column">
|
||||
<ParamTileControlNetModel />
|
||||
<ParamCreativity />
|
||||
<ParamStructure />
|
||||
</Flex>
|
||||
|
||||
Reference in New Issue
Block a user