diff --git a/invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.ts b/invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.ts index 50e7d630856..2a5820ffd1e 100644 --- a/invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.ts +++ b/invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.ts @@ -181,15 +181,6 @@ const slice = createSlice({ negativePromptChanged: (state, action: PayloadAction) => { state.negativePrompt = action.payload; }, - positivePrompt2Changed: (state, action: PayloadAction) => { - state.positivePrompt2 = action.payload; - }, - negativePrompt2Changed: (state, action: PayloadAction) => { - state.negativePrompt2 = action.payload; - }, - shouldConcatPromptsChanged: (state, action: PayloadAction) => { - state.shouldConcatPrompts = action.payload; - }, refinerModelChanged: (state, action: PayloadAction) => { const result = zParamsState.shape.refinerModel.safeParse(action.payload); if (!result.success) { @@ -425,9 +416,6 @@ export const { shouldUseCpuNoiseChanged, positivePromptChanged, negativePromptChanged, - positivePrompt2Changed, - negativePrompt2Changed, - shouldConcatPromptsChanged, refinerModelChanged, setRefinerSteps, setRefinerCFGScale, @@ -460,8 +448,7 @@ export const paramsSliceConfig: SliceConfig = { }; export const selectParamsSlice = (state: RootState) => state.params; -export const createParamsSelector = (selector: Selector) => - createSelector(selectParamsSlice, selector); +const createParamsSelector = (selector: Selector) => createSelector(selectParamsSlice, selector); export const selectBase = createParamsSelector((params) => params.model?.base); export const selectIsSDXL = createParamsSelector((params) => params.model?.base === 'sdxl'); @@ -518,9 +505,6 @@ export const selectModelSupportsNegativePrompt = createSelector( [selectIsFLUX, selectIsChatGPT4o, selectIsFluxKontext], (isFLUX, isChatGPT4o, isFluxKontext) => !isFLUX && !isChatGPT4o && !isFluxKontext ); -export const selectPositivePrompt2 = createParamsSelector((params) => params.positivePrompt2); -export const selectNegativePrompt2 = createParamsSelector((params) => params.negativePrompt2); -export const selectShouldConcatPrompts = createParamsSelector((params) => params.shouldConcatPrompts); export const selectScheduler = createParamsSelector((params) => params.scheduler); export const selectSeamlessXAxis = createParamsSelector((params) => params.seamlessXAxis); export const selectSeamlessYAxis = createParamsSelector((params) => params.seamlessYAxis); diff --git a/invokeai/frontend/web/src/features/controlLayers/store/types.ts b/invokeai/frontend/web/src/features/controlLayers/store/types.ts index f771f8c7469..bcae4cb1277 100644 --- a/invokeai/frontend/web/src/features/controlLayers/store/types.ts +++ b/invokeai/frontend/web/src/features/controlLayers/store/types.ts @@ -14,9 +14,7 @@ import { zParameterMaskBlurMethod, zParameterModel, zParameterNegativePrompt, - zParameterNegativeStylePromptSDXL, zParameterPositivePrompt, - zParameterPositiveStylePromptSDXL, zParameterPrecision, zParameterScheduler, zParameterSDXLRefinerModel, @@ -534,9 +532,6 @@ export const zParamsState = z.object({ shouldUseCpuNoise: z.boolean(), positivePrompt: zParameterPositivePrompt, negativePrompt: zParameterNegativePrompt, - positivePrompt2: zParameterPositiveStylePromptSDXL, - negativePrompt2: zParameterNegativeStylePromptSDXL, - shouldConcatPrompts: z.boolean(), refinerModel: zParameterSDXLRefinerModel.nullable(), refinerSteps: z.number(), refinerCFGScale: z.number(), @@ -584,9 +579,6 @@ export const getInitialParamsState = (): ParamsState => ({ shouldUseCpuNoise: true, positivePrompt: '', negativePrompt: null, - positivePrompt2: '', - negativePrompt2: '', - shouldConcatPrompts: true, refinerModel: null, refinerSteps: 20, refinerCFGScale: 7.5, diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx index 285524ded21..0b7198d16fc 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx @@ -33,8 +33,6 @@ const ImageMetadataActions = (props: Props) => { - - diff --git a/invokeai/frontend/web/src/features/gallery/hooks/useRecallPrompts.ts b/invokeai/frontend/web/src/features/gallery/hooks/useRecallPrompts.ts index a882e4a9e82..b14d0187b95 100644 --- a/invokeai/frontend/web/src/features/gallery/hooks/useRecallPrompts.ts +++ b/invokeai/frontend/web/src/features/gallery/hooks/useRecallPrompts.ts @@ -22,12 +22,7 @@ export const useRecallPrompts = (imageDTO: ImageDTO) => { const parse = async () => { try { const result = await MetadataUtils.hasMetadataByHandlers({ - handlers: [ - MetadataHandlers.PositivePrompt, - MetadataHandlers.NegativePrompt, - MetadataHandlers.PositiveStylePrompt, - MetadataHandlers.NegativeStylePrompt, - ], + handlers: [MetadataHandlers.PositivePrompt, MetadataHandlers.NegativePrompt], metadata, store, require: 'some', diff --git a/invokeai/frontend/web/src/features/metadata/parsing.tsx b/invokeai/frontend/web/src/features/metadata/parsing.tsx index ca66be6e24e..3db8c3022c9 100644 --- a/invokeai/frontend/web/src/features/metadata/parsing.tsx +++ b/invokeai/frontend/web/src/features/metadata/parsing.tsx @@ -9,9 +9,7 @@ import { bboxHeightChanged, bboxWidthChanged, canvasMetadataRecalled } from 'fea import { loraAllDeleted, loraRecalled } from 'features/controlLayers/store/lorasSlice'; import { heightChanged, - negativePrompt2Changed, negativePromptChanged, - positivePrompt2Changed, positivePromptChanged, refinerModelChanged, selectBase, @@ -30,7 +28,6 @@ import { setSeamlessYAxis, setSeed, setSteps, - shouldConcatPromptsChanged, vaeSelected, widthChanged, } from 'features/controlLayers/store/paramsSlice'; @@ -49,7 +46,6 @@ import type { ParameterModel, ParameterNegativePrompt, ParameterPositivePrompt, - ParameterPositiveStylePromptSDXL, ParameterScheduler, ParameterSDXLRefinerModel, ParameterSDXLRefinerNegativeAestheticScore, @@ -70,9 +66,7 @@ import { zParameterGuidance, zParameterImageDimension, zParameterNegativePrompt, - zParameterNegativeStylePromptSDXL, zParameterPositivePrompt, - zParameterPositiveStylePromptSDXL, zParameterScheduler, zParameterSDXLRefinerNegativeAestheticScore, zParameterSDXLRefinerPositiveAestheticScore, @@ -289,46 +283,6 @@ const NegativePrompt: SingleMetadataHandler = { }; //#endregion Negative Prompt -//#region SDXL Positive Style Prompt -const PositiveStylePrompt: SingleMetadataHandler = { - [SingleMetadataKey]: true, - type: 'PositiveStylePrompt', - parse: (metadata, _store) => { - const raw = getProperty(metadata, 'positive_style_prompt'); - const parsed = zParameterPositiveStylePromptSDXL.parse(raw); - return Promise.resolve(parsed); - }, - recall: (value, store) => { - store.dispatch(positivePrompt2Changed(value)); - }, - i18nKey: 'sdxl.posStylePrompt', - LabelComponent: MetadataLabel, - ValueComponent: ({ value }: SingleMetadataValueProps) => ( - - ), -}; -//#endregion SDXL Positive Style Prompt - -//#region SDXL Negative Style Prompt -const NegativeStylePrompt: SingleMetadataHandler = { - [SingleMetadataKey]: true, - type: 'NegativeStylePrompt', - parse: (metadata, _store) => { - const raw = getProperty(metadata, 'negative_style_prompt'); - const parsed = zParameterNegativeStylePromptSDXL.parse(raw); - return Promise.resolve(parsed); - }, - recall: (value, store) => { - store.dispatch(negativePrompt2Changed(value)); - }, - i18nKey: 'sdxl.negStylePrompt', - LabelComponent: MetadataLabel, - ValueComponent: ({ value }: SingleMetadataValueProps) => ( - - ), -}; -//#endregion SDXL Negative Style Prompt - //#region CFG Scale const CFGScale: SingleMetadataHandler = { [SingleMetadataKey]: true, @@ -927,8 +881,6 @@ export const MetadataHandlers = { GenerationMode, PositivePrompt, NegativePrompt, - PositiveStylePrompt, - NegativeStylePrompt, CFGScale, CFGRescaleMultiplier, Guidance, @@ -1052,26 +1004,6 @@ const recallByHandlers = async (arg: { } } - // We may need to update the prompt concat flag based on the recalled prompts - const positivePrompt = recalled.get(MetadataHandlers.PositivePrompt); - const negativePrompt = recalled.get(MetadataHandlers.NegativePrompt); - const positiveStylePrompt = recalled.get(MetadataHandlers.PositiveStylePrompt); - const negativeStylePrompt = recalled.get(MetadataHandlers.NegativeStylePrompt); - - // The values will be undefined if the handler was not recalled - if ( - positivePrompt !== undefined || - negativePrompt !== undefined || - positiveStylePrompt !== undefined || - negativeStylePrompt !== undefined - ) { - const concat = - (Boolean(positiveStylePrompt) && positiveStylePrompt === positivePrompt) || - (Boolean(negativeStylePrompt) && negativeStylePrompt === negativePrompt); - - store.dispatch(shouldConcatPromptsChanged(concat)); - } - if (!silent) { if (recalled.size > 0) { toast({ @@ -1094,12 +1026,7 @@ const recallByHandlers = async (arg: { const recallPrompts = async (metadata: unknown, store: AppStore) => { const recalled = await recallByHandlers({ metadata, - handlers: [ - MetadataHandlers.PositivePrompt, - MetadataHandlers.NegativePrompt, - MetadataHandlers.PositiveStylePrompt, - MetadataHandlers.NegativeStylePrompt, - ], + handlers: [MetadataHandlers.PositivePrompt, MetadataHandlers.NegativePrompt], store, silent: true, }); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts index a77b0338a08..26db510599c 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts @@ -115,7 +115,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise type: 'sdxl_compel_prompt', id: getPrefixedId('neg_cond'), prompt: prompts.negative, - style: prompts.negativeStyle, + style: prompts.negative, }); modelLoader = g.addNode({ type: 'sdxl_model_loader', @@ -130,23 +130,14 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise g.addEdge(modelLoader, 'unet', tiledMultidiffusion, 'unet'); g.addEdge(positivePrompt, 'value', posCond, 'prompt'); + g.addEdge(positivePrompt, 'value', posCond, 'style'); addSDXLLoRAs(state, g, tiledMultidiffusion, modelLoader, null, posCond, negCond); g.upsertMetadata({ negative_prompt: prompts.negative, - negative_style_prompt: prompts.negativeStyle, }); - g.addEdgeToMetadata(positivePrompt, 'value', 'positive_prompt'); - - if (prompts.useMainPromptsForStyle) { - g.addEdge(positivePrompt, 'value', posCond, 'style'); - g.addEdgeToMetadata(positivePrompt, 'value', 'positive_style_prompt'); - } else { - posCond.style = prompts.positiveStyle; - g.upsertMetadata({ positive_style_prompt: prompts.positiveStyle }); - } } else { const prompts = selectPresetModifiedPrompts(state); diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts index 093ca55a32c..1a4b3f9e963 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/buildSDXLGraph.ts @@ -78,7 +78,7 @@ export const buildSDXLGraph = async (arg: GraphBuilderArg): Promise { const negativePrompt = params.negativePrompt ?? ''; - const { positivePrompt, positivePrompt2, negativePrompt2, shouldConcatPrompts } = params; + const { positivePrompt } = params; const { activeStylePresetId } = stylePresetSlice; if (activeStylePresetId) { @@ -107,9 +107,6 @@ export const selectPresetModifiedPrompts = createSelector( return { positive: presetModifiedPositivePrompt, negative: presetModifiedNegativePrompt, - positiveStyle: positivePrompt2, - negativeStyle: negativePrompt2, - useMainPromptsForStyle: shouldConcatPrompts, }; } } @@ -117,9 +114,6 @@ export const selectPresetModifiedPrompts = createSelector( return { positive: positivePrompt, negative: negativePrompt, - positiveStyle: positivePrompt2, - negativeStyle: negativePrompt2, - useMainPromptsForStyle: shouldConcatPrompts, }; } ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Core/ParamPositivePrompt.tsx b/invokeai/frontend/web/src/features/parameters/components/Core/ParamPositivePrompt.tsx index 06b5ee2b815..cd1d92c26be 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Core/ParamPositivePrompt.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Core/ParamPositivePrompt.tsx @@ -4,7 +4,6 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { usePersistedTextAreaSize } from 'common/hooks/usePersistedTextareaSize'; import { positivePromptChanged, - selectBase, selectModelSupportsNegativePrompt, selectPositivePrompt, } from 'features/controlLayers/store/paramsSlice'; @@ -21,7 +20,6 @@ import { PromptExpansionOverlay } from 'features/prompt/PromptExpansion/PromptEx import { promptExpansionApi } from 'features/prompt/PromptExpansion/state'; import { PromptPopover } from 'features/prompt/PromptPopover'; import { usePrompt } from 'features/prompt/usePrompt'; -import { SDXLConcatButton } from 'features/sdxl/components/SDXLPrompts/SDXLConcatButton'; import { selectStylePresetActivePresetId, selectStylePresetViewMode, @@ -42,7 +40,6 @@ const persistOptions: Parameters[2] = { export const ParamPositivePrompt = memo(() => { const dispatch = useAppDispatch(); const prompt = useAppSelector(selectPositivePrompt); - const baseModel = useAppSelector(selectBase); const viewMode = useAppSelector(selectStylePresetViewMode); const activeStylePresetId = useAppSelector(selectStylePresetActivePresetId); const modelSupportsNegativePrompt = useAppSelector(selectModelSupportsNegativePrompt); @@ -118,7 +115,6 @@ export const ParamPositivePrompt = memo(() => { - {baseModel === 'sdxl' && } {modelSupportsNegativePrompt && } diff --git a/invokeai/frontend/web/src/features/parameters/components/Prompts/Prompts.tsx b/invokeai/frontend/web/src/features/parameters/components/Prompts/Prompts.tsx index b4b3ced89df..efec7a857df 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Prompts/Prompts.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Prompts/Prompts.tsx @@ -1,33 +1,18 @@ import { Flex } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; import { RefImageList } from 'features/controlLayers/components/RefImage/RefImageList'; -import { - createParamsSelector, - selectHasNegativePrompt, - selectModelSupportsNegativePrompt, -} from 'features/controlLayers/store/paramsSlice'; +import { selectHasNegativePrompt, selectModelSupportsNegativePrompt } from 'features/controlLayers/store/paramsSlice'; import { ParamNegativePrompt } from 'features/parameters/components/Core/ParamNegativePrompt'; import { ParamPositivePrompt } from 'features/parameters/components/Core/ParamPositivePrompt'; -import { ParamSDXLNegativeStylePrompt } from 'features/sdxl/components/SDXLPrompts/ParamSDXLNegativeStylePrompt'; -import { ParamSDXLPositiveStylePrompt } from 'features/sdxl/components/SDXLPrompts/ParamSDXLPositiveStylePrompt'; import { memo } from 'react'; -const selectWithStylePrompts = createParamsSelector((params) => { - const isSDXL = params.model?.base === 'sdxl'; - const shouldConcatPrompts = params.shouldConcatPrompts; - return isSDXL && !shouldConcatPrompts; -}); - export const Prompts = memo(() => { - const withStylePrompts = useAppSelector(selectWithStylePrompts); const modelSupportsNegativePrompt = useAppSelector(selectModelSupportsNegativePrompt); const hasNegativePrompt = useAppSelector(selectHasNegativePrompt); return ( - {withStylePrompts && } {modelSupportsNegativePrompt && hasNegativePrompt && } - {withStylePrompts && } ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Prompts/UpscalePrompts.tsx b/invokeai/frontend/web/src/features/parameters/components/Prompts/UpscalePrompts.tsx index d5c9f13bd6b..51536d867d2 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Prompts/UpscalePrompts.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Prompts/UpscalePrompts.tsx @@ -1,32 +1,17 @@ import { Flex } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; -import { - createParamsSelector, - selectHasNegativePrompt, - selectModelSupportsNegativePrompt, -} from 'features/controlLayers/store/paramsSlice'; +import { selectHasNegativePrompt, selectModelSupportsNegativePrompt } from 'features/controlLayers/store/paramsSlice'; import { ParamNegativePrompt } from 'features/parameters/components/Core/ParamNegativePrompt'; import { ParamPositivePrompt } from 'features/parameters/components/Core/ParamPositivePrompt'; -import { ParamSDXLNegativeStylePrompt } from 'features/sdxl/components/SDXLPrompts/ParamSDXLNegativeStylePrompt'; -import { ParamSDXLPositiveStylePrompt } from 'features/sdxl/components/SDXLPrompts/ParamSDXLPositiveStylePrompt'; import { memo } from 'react'; -const selectWithStylePrompts = createParamsSelector((params) => { - const isSDXL = params.model?.base === 'sdxl'; - const shouldConcatPrompts = params.shouldConcatPrompts; - return isSDXL && !shouldConcatPrompts; -}); - export const UpscalePrompts = memo(() => { - const withStylePrompts = useAppSelector(selectWithStylePrompts); const modelSupportsNegativePrompt = useAppSelector(selectModelSupportsNegativePrompt); const hasNegativePrompt = useAppSelector(selectHasNegativePrompt); return ( - {withStylePrompts && } {modelSupportsNegativePrompt && hasNegativePrompt && } - {withStylePrompts && } ); }); diff --git a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts index 5421ae162f3..a318c5d6112 100644 --- a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts +++ b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts @@ -33,16 +33,6 @@ export const [zParameterNegativePrompt, isParameterNegativePrompt] = buildParame export type ParameterNegativePrompt = z.infer; // #endregion -// #region Positive style prompt (SDXL) -export const [zParameterPositiveStylePromptSDXL, isParameterPositiveStylePromptSDXL] = buildParameter(z.string()); -export type ParameterPositiveStylePromptSDXL = z.infer; -// #endregion - -// #region Positive style prompt (SDXL) -export const [zParameterNegativeStylePromptSDXL, isParameterNegativeStylePromptSDXL] = buildParameter(z.string()); -export type ParameterNegativeStylePromptSDXL = z.infer; -// #endregion - // #region Steps export const [zParameterSteps, isParameterSteps] = buildParameter(z.number().int().min(1)); export type ParameterSteps = z.infer; diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/ParamSDXLNegativeStylePrompt.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/ParamSDXLNegativeStylePrompt.tsx deleted file mode 100644 index 41e57f5416b..00000000000 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLPrompts/ParamSDXLNegativeStylePrompt.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Textarea } from '@invoke-ai/ui-library'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { usePersistedTextAreaSize } from 'common/hooks/usePersistedTextareaSize'; -import { negativePrompt2Changed, selectNegativePrompt2 } from 'features/controlLayers/store/paramsSlice'; -import { PromptLabel } from 'features/parameters/components/Prompts/PromptLabel'; -import { PromptOverlayButtonWrapper } from 'features/parameters/components/Prompts/PromptOverlayButtonWrapper'; -import { AddPromptTriggerButton } from 'features/prompt/AddPromptTriggerButton'; -import { PromptPopover } from 'features/prompt/PromptPopover'; -import { usePrompt } from 'features/prompt/usePrompt'; -import { memo, useCallback, useRef } from 'react'; -import { useTranslation } from 'react-i18next'; - -const persistOptions: Parameters[2] = { - trackWidth: false, - trackHeight: true, -}; - -export const ParamSDXLNegativeStylePrompt = memo(() => { - const dispatch = useAppDispatch(); - const prompt = useAppSelector(selectNegativePrompt2); - const textareaRef = useRef(null); - usePersistedTextAreaSize('negative_style_prompt', textareaRef, persistOptions); - - const { t } = useTranslation(); - const handleChange = useCallback( - (v: string) => { - dispatch(negativePrompt2Changed(v)); - }, - [dispatch] - ); - const { onChange, isOpen, onClose, onOpen, onSelect, onKeyDown } = usePrompt({ - prompt, - textareaRef: textareaRef, - onChange: handleChange, - }); - - return ( - - -