diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoadRequested.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoadRequested.ts index 8d39448ad2..cde399e666 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoadRequested.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoadRequested.ts @@ -1,6 +1,6 @@ import { logger } from 'app/logging/logger'; import type { AppStartListening } from 'app/store/middleware/listenerMiddleware'; -import { $nodeExecutionStates } from 'features/nodes/hooks/useExecutionState'; +import { $nodeExecutionStates } from 'features/nodes/hooks/useNodeExecutionState'; import { workflowLoaded, workflowLoadRequested } from 'features/nodes/store/actions'; import { $templates } from 'features/nodes/store/nodesSlice'; import { $needsFit } from 'features/nodes/store/reactFlowInstance'; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/Flow.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/Flow.tsx index aaeea376a1..aef01fbdff 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/Flow.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/Flow.tsx @@ -3,9 +3,9 @@ import { useStore } from '@nanostores/react'; import { useAppDispatch, useAppSelector, useAppStore } from 'app/store/storeHooks'; import { useFocusRegion, useIsRegionFocused } from 'common/hooks/focus'; import { useConnection } from 'features/nodes/hooks/useConnection'; -import { useCopyPaste } from 'features/nodes/hooks/useCopyPaste'; -import { useSyncExecutionState } from 'features/nodes/hooks/useExecutionState'; import { useIsValidConnection } from 'features/nodes/hooks/useIsValidConnection'; +import { useNodeCopyPaste } from 'features/nodes/hooks/useNodeCopyPaste'; +import { useSyncExecutionState } from 'features/nodes/hooks/useNodeExecutionState'; import { useWorkflowWatcher } from 'features/nodes/hooks/useWorkflowWatcher'; import { $addNodeCmdk, @@ -208,7 +208,7 @@ export const Flow = memo(() => { // #endregion - const { copySelection, pasteSelection, pasteSelectionWithEdges } = useCopyPaste(); + const { copySelection, pasteSelection, pasteSelectionWithEdges } = useNodeCopyPaste(); useRegisteredHotkeys({ id: 'copySelection', diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx index ef98639050..fe3c292ad7 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNode.tsx @@ -3,12 +3,12 @@ import NodeWrapper from 'features/nodes/components/flow/nodes/common/NodeWrapper import { InputFieldGate } from 'features/nodes/components/flow/nodes/Invocation/fields/InputFieldGate'; import { OutputFieldGate } from 'features/nodes/components/flow/nodes/Invocation/fields/OutputFieldGate'; import { OutputFieldNodesEditorView } from 'features/nodes/components/flow/nodes/Invocation/fields/OutputFieldNodesEditorView'; -import { useFieldNames } from 'features/nodes/hooks/useFieldNames'; +import { useInputFieldNamesByStatus } from 'features/nodes/hooks/useInputFieldNamesByStatus'; import { useOutputFieldNames } from 'features/nodes/hooks/useOutputFieldNames'; import { useWithFooter } from 'features/nodes/hooks/useWithFooter'; import { memo } from 'react'; -import { InputFieldViewNodes } from './fields/InputFieldViewNodes'; +import { InputFieldEditModeNodes } from './fields/InputFieldEditModeNodes'; import InvocationNodeFooter from './InvocationNodeFooter'; import InvocationNodeHeader from './InvocationNodeHeader'; @@ -21,7 +21,7 @@ type Props = { }; const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { - const fieldNames = useFieldNames(nodeId); + const fieldNames = useInputFieldNamesByStatus(nodeId); const withFooter = useWithFooter(nodeId); const outputFieldNames = useOutputFieldNames(nodeId); @@ -44,7 +44,7 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { {fieldNames.connectionFields.map((fieldName, i) => ( - + ))} @@ -58,12 +58,12 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { {fieldNames.anyOrDirectFields.map((fieldName) => ( - + ))} {fieldNames.missingFields.map((fieldName) => ( - + ))} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx index c1ff625d25..467e2b1bb6 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx @@ -1,6 +1,6 @@ import type { ChakraProps } from '@invoke-ai/ui-library'; import { Flex, FormControlGroup } from '@invoke-ai/ui-library'; -import { useHasImageOutput } from 'features/nodes/hooks/useHasImageOutput'; +import { useNodeHasImageOutput } from 'features/nodes/hooks/useNodeHasImageOutput'; import { DRAG_HANDLE_CLASSNAME } from 'features/nodes/types/constants'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { memo } from 'react'; @@ -15,7 +15,7 @@ type Props = { const props: ChakraProps = { w: 'unset' }; const InvocationNodeFooter = ({ nodeId }: Props) => { - const hasImageOutput = useHasImageOutput(nodeId); + const hasImageOutput = useNodeHasImageOutput(nodeId); const isCacheEnabled = useFeatureStatus('invocationCache'); return ( { +type Props = { + nodeId: string; +}; + +export const InvocationNodeNotesTextarea = memo(({ nodeId }: Props) => { const dispatch = useAppDispatch(); - const node = useNode(nodeId); const { t } = useTranslation(); + const notes = useInvocationNodeNotes(nodeId); const handleNotesChanged = useCallback( (e: ChangeEvent) => { dispatch(nodeNotesChanged({ nodeId, notes: e.target.value })); }, [dispatch, nodeId] ); - if (!isInvocationNode(node)) { - return null; - } return ( {t('nodes.notes')} -