revert(ui): rip out linear view config stuff

This commit is contained in:
psychedelicious
2025-01-22 11:50:59 +11:00
parent e9a13ec882
commit 1063498458
6 changed files with 0 additions and 140 deletions

View File

@@ -2,7 +2,6 @@ import type { SystemStyleObject } from '@invoke-ai/ui-library';
import { Box, Circle, Flex, IconButton, Spacer } from '@invoke-ai/ui-library';
import { useAppDispatch } from 'app/store/storeHooks';
import { DndListDropIndicator } from 'features/dnd/DndListDropIndicator';
import { InputFieldLinearViewConfigIconButton } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldLinearViewConfigIconButton';
import { InputFieldNotesIconButtonEditable } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldNotesIconButtonEditable';
import { InputFieldResetToInitialValueIconButton } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldResetToInitialValueIconButton';
import { useLinearViewFieldDnd } from 'features/nodes/components/sidePanel/workflow/useLinearViewFieldDnd';
@@ -61,7 +60,6 @@ export const InputFieldEditModeLinear = memo(({ nodeId, fieldName }: Props) => {
<InputFieldTitle nodeId={nodeId} fieldName={fieldName} />
<Spacer />
{isMouseOverNode && <Circle me={2} size={2} borderRadius="full" bg="invokeBlue.500" />}
<InputFieldLinearViewConfigIconButton nodeId={nodeId} fieldName={fieldName} />
<InputFieldNotesIconButtonEditable nodeId={nodeId} fieldName={fieldName} />
<InputFieldResetToInitialValueIconButton nodeId={nodeId} fieldName={fieldName} />
<IconButton

View File

@@ -1,85 +0,0 @@
import {
FormControl,
FormLabel,
IconButton,
Popover,
PopoverContent,
PopoverTrigger,
Select,
} from '@invoke-ai/ui-library';
import { useAppDispatch } from 'app/store/storeHooks';
import { useInputFieldIsExposed } from 'features/nodes/hooks/useInputFieldIsExposed';
import { useInputFieldLinearViewConfig } from 'features/nodes/hooks/useInputFieldLinearViewConfig';
import { fieldLinearViewConfigChanged } from 'features/nodes/store/nodesSlice';
import type { FieldInputInstance } from 'features/nodes/types/field';
import type { ChangeEvent } from 'react';
import { memo, useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { PiWrenchFill } from 'react-icons/pi';
type Props = {
nodeId: string;
fieldName: string;
};
const parseNotesDisplay = (
notesDisplay: string
): NonNullable<FieldInputInstance['linearViewConfig']>['notesDisplay'] => {
switch (notesDisplay) {
case 'none':
return 'none';
case 'helper-text':
return 'helper-text';
case 'icon-with-popover':
return 'icon-with-popover';
default:
return 'none';
}
};
export const InputFieldLinearViewConfigIconButton = memo(({ nodeId, fieldName }: Props) => {
const dispatch = useAppDispatch();
const { t } = useTranslation();
const isExposed = useInputFieldIsExposed(nodeId, fieldName);
const linearViewConfig = useInputFieldLinearViewConfig(nodeId, fieldName);
const onChangeNotesDisplay = useCallback(
(e: ChangeEvent<HTMLSelectElement>) => {
const notesDisplay = parseNotesDisplay(e.target.value);
dispatch(
fieldLinearViewConfigChanged({ nodeId, fieldName, linearViewConfig: { ...linearViewConfig, notesDisplay } })
);
},
[dispatch, fieldName, linearViewConfig, nodeId]
);
if (!isExposed) {
return null;
}
return (
<Popover>
<PopoverTrigger>
<IconButton
variant="ghost"
tooltip="Linear View Config"
aria-label="Linear View Config"
icon={<PiWrenchFill />}
pointerEvents="auto"
size="xs"
/>
</PopoverTrigger>
<PopoverContent p={2} w={256}>
<FormControl orientation="vertical">
<FormLabel>{t('nodes.notesDisplay')}</FormLabel>
<Select value={linearViewConfig?.notesDisplay ?? 'none'} onChange={onChangeNotesDisplay}>
<option value="none">{t('common.none')}</option>
<option value="helper-text">{t('nodes.helperText')}</option>
<option value="icon-with-popover">{t('nodes.iconWithPopover')}</option>
</Select>
</FormControl>
</PopoverContent>
</Popover>
);
});
InputFieldLinearViewConfigIconButton.displayName = 'InputFieldLinearViewConfigIconButton';

View File

@@ -1,10 +1,7 @@
import { Box, FormControl, FormLabel, Spacer } from '@invoke-ai/ui-library';
import { InputFieldNotesHelperText } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldNotesHelperText';
import { InputFieldNotesIconButtonReadonly } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldNotesIconButtonReadonly';
import { InputFieldRenderer } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer';
import { InputFieldResetToInitialValueIconButton } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldResetToInitialValueIconButton';
import { useInputFieldLabel } from 'features/nodes/hooks/useInputFieldLabel';
import { useInputFieldLinearViewConfig } from 'features/nodes/hooks/useInputFieldLinearViewConfig';
import { useInputFieldTemplateTitle } from 'features/nodes/hooks/useInputFieldTemplateTitle';
import { memo } from 'react';
@@ -16,24 +13,17 @@ type Props = {
export const InputFieldViewMode = memo(({ nodeId, fieldName }: Props) => {
const label = useInputFieldLabel(nodeId, fieldName);
const fieldTemplateTitle = useInputFieldTemplateTitle(nodeId, fieldName);
const linearViewConfig = useInputFieldLinearViewConfig(nodeId, fieldName);
return (
<FormControl w="full" gap={2} flexDir="column">
<FormLabel fontSize="sm" display="flex" w="full" m={0} gap={2} px={1}>
{label || fieldTemplateTitle}
<Spacer />
{linearViewConfig?.notesDisplay === 'icon-with-popover' && (
<InputFieldNotesIconButtonReadonly nodeId={nodeId} fieldName={fieldName} />
)}
<InputFieldResetToInitialValueIconButton nodeId={nodeId} fieldName={fieldName} />
</FormLabel>
<Box w="full" h="full">
<InputFieldRenderer nodeId={nodeId} fieldName={fieldName} />
</Box>
{linearViewConfig?.notesDisplay === 'helper-text' && (
<InputFieldNotesHelperText nodeId={nodeId} fieldName={fieldName} />
)}
</FormControl>
);
});

View File

@@ -1,22 +0,0 @@
import { createSelector } from '@reduxjs/toolkit';
import { useAppSelector } from 'app/store/storeHooks';
import { selectNodesSlice } from 'features/nodes/store/selectors';
import { isInvocationNode } from 'features/nodes/types/invocation';
import { useMemo } from 'react';
export const useInputFieldLinearViewConfig = (nodeId: string, fieldName: string) => {
const selector = useMemo(
() =>
createSelector(selectNodesSlice, (nodes) => {
const node = nodes.nodes.find((node) => node.id === nodeId);
if (!isInvocationNode(node)) {
return;
}
return node?.data.inputs[fieldName]?.linearViewConfig;
}),
[fieldName, nodeId]
);
const linearViewConfig = useAppSelector(selector);
return linearViewConfig;
};

View File

@@ -14,7 +14,6 @@ import type {
ControlLoRAModelFieldValue,
ControlNetModelFieldValue,
EnumFieldValue,
FieldInputInstance,
FieldValue,
FloatFieldValue,
FloatGeneratorFieldValue,
@@ -431,21 +430,6 @@ export const nodesSlice = createSlice({
}
field.notes = val;
},
fieldLinearViewConfigChanged: (
state,
action: PayloadAction<{
nodeId: string;
fieldName: string;
linearViewConfig?: FieldInputInstance['linearViewConfig'];
}>
) => {
const { nodeId, fieldName, linearViewConfig } = action.payload;
const field = getField(nodeId, fieldName, state);
if (!field) {
return;
}
field.linearViewConfig = linearViewConfig;
},
notesNodeValueChanged: (state, action: PayloadAction<{ nodeId: string; value: string }>) => {
const { nodeId, value } = action.payload;
const nodeIndex = state.nodes.findIndex((n) => n.id === nodeId);
@@ -516,7 +500,6 @@ export const {
fieldIntegerGeneratorValueChanged,
fieldStringGeneratorValueChanged,
fieldNotesChanged,
fieldLinearViewConfigChanged,
nodeEditorReset,
nodeIsIntermediateChanged,
nodeIsOpenChanged,

View File

@@ -35,14 +35,10 @@ import { zBoardField, zColorField, zImageField, zModelIdentifierField, zSchedule
// #region Base schemas & misc
const zFieldInput = z.enum(['connection', 'direct', 'any']);
const zFieldUIComponent = z.enum(['none', 'textarea', 'slider']);
const zFieldInputInstanceLinearViewConfigBase = z.object({
notesDisplay: z.enum(['none', 'helper-text', 'icon-with-popover']).nullish(),
});
const zFieldInputInstanceBase = z.object({
name: z.string().trim().min(1),
label: z.string().nullish(),
notes: z.string().nullish(),
linearViewConfig: zFieldInputInstanceLinearViewConfigBase.nullish(),
});
const zFieldTemplateBase = z.object({
name: z.string().min(1),