| import { createMemoizedSelector } from 'app/store/createMemoizedSelector'; | |
| import { useAppSelector } from 'app/store/storeHooks'; | |
| import { selectConfigSlice } from 'features/system/store/configSlice'; | |
| import { isNil } from 'lodash-es'; | |
| import { useMemo } from 'react'; | |
| import type { MainModelConfig } from 'services/api/types'; | |
| const initialStatesSelector = createMemoizedSelector(selectConfigSlice, (config) => { | |
| const { steps, guidance, scheduler, cfgRescaleMultiplier, vaePrecision, width, height } = config.sd; | |
| const { guidance: fluxGuidance } = config.flux; | |
| return { | |
| initialSteps: steps.initial, | |
| initialCfg: guidance.initial, | |
| initialScheduler: scheduler, | |
| initialCfgRescaleMultiplier: cfgRescaleMultiplier.initial, | |
| initialVaePrecision: vaePrecision, | |
| initialWidth: width.initial, | |
| initialHeight: height.initial, | |
| initialGuidance: fluxGuidance.initial, | |
| }; | |
| }); | |
| export const useMainModelDefaultSettings = (modelConfig: MainModelConfig) => { | |
| const { | |
| initialSteps, | |
| initialCfg, | |
| initialScheduler, | |
| initialCfgRescaleMultiplier, | |
| initialVaePrecision, | |
| initialWidth, | |
| initialHeight, | |
| initialGuidance, | |
| } = useAppSelector(initialStatesSelector); | |
| const defaultSettingsDefaults = useMemo(() => { | |
| return { | |
| vae: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.vae), | |
| value: modelConfig?.default_settings?.vae || 'default', | |
| }, | |
| vaePrecision: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.vae_precision), | |
| value: modelConfig?.default_settings?.vae_precision || initialVaePrecision || 'fp32', | |
| }, | |
| scheduler: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.scheduler), | |
| value: modelConfig?.default_settings?.scheduler || initialScheduler || 'dpmpp_3m_k', | |
| }, | |
| steps: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.steps), | |
| value: modelConfig?.default_settings?.steps || initialSteps, | |
| }, | |
| cfgScale: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.cfg_scale), | |
| value: modelConfig?.default_settings?.cfg_scale || initialCfg, | |
| }, | |
| cfgRescaleMultiplier: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.cfg_rescale_multiplier), | |
| value: modelConfig?.default_settings?.cfg_rescale_multiplier || initialCfgRescaleMultiplier, | |
| }, | |
| width: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.width), | |
| value: modelConfig?.default_settings?.width || initialWidth, | |
| }, | |
| height: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.height), | |
| value: modelConfig?.default_settings?.height || initialHeight, | |
| }, | |
| guidance: { | |
| isEnabled: !isNil(modelConfig?.default_settings?.guidance), | |
| value: modelConfig?.default_settings?.guidance || initialGuidance, | |
| }, | |
| }; | |
| }, [ | |
| modelConfig, | |
| initialVaePrecision, | |
| initialScheduler, | |
| initialSteps, | |
| initialCfg, | |
| initialCfgRescaleMultiplier, | |
| initialWidth, | |
| initialHeight, | |
| initialGuidance, | |
| ]); | |
| return defaultSettingsDefaults; | |
| }; | |