Skip to content

Commit c08f7ff

Browse files
Mary HippMary Hipp
authored andcommitted
fix circ dep
1 parent 4d30a03 commit c08f7ff

File tree

2 files changed

+71
-77
lines changed

2 files changed

+71
-77
lines changed

invokeai/frontend/web/src/features/controlLayers/components/CanvasWorkflowContainerElement.tsx

Lines changed: 0 additions & 76 deletions
This file was deleted.

invokeai/frontend/web/src/features/controlLayers/components/CanvasWorkflowFormElementComponent.tsx

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1+
import type { SystemStyleObject } from '@invoke-ai/ui-library';
2+
import { Flex } from '@invoke-ai/ui-library';
13
import { useAppSelector } from 'app/store/storeHooks';
24
import { selectCanvasWorkflowNodesSlice } from 'features/controlLayers/store/canvasWorkflowNodesSlice';
5+
import {
6+
ContainerContextProvider,
7+
DepthContextProvider,
8+
useContainerContext,
9+
useDepthContext,
10+
} from 'features/nodes/components/sidePanel/builder/contexts';
311
import { DividerElement } from 'features/nodes/components/sidePanel/builder/DividerElement';
412
import { HeadingElement } from 'features/nodes/components/sidePanel/builder/HeadingElement';
513
import { NodeFieldElementViewMode } from 'features/nodes/components/sidePanel/builder/NodeFieldElementViewMode';
614
import { TextElement } from 'features/nodes/components/sidePanel/builder/TextElement';
15+
import { CONTAINER_CLASS_NAME } from 'features/nodes/types/workflow';
716
import {
817
isContainerElement,
918
isDividerElement,
@@ -15,9 +24,70 @@ import { memo } from 'react';
1524
import type { Equals } from 'tsafe';
1625
import { assert } from 'tsafe';
1726

18-
import { CanvasWorkflowContainerElement } from './CanvasWorkflowContainerElement';
1927
import { CanvasWorkflowInvocationNodeContextProvider } from './CanvasWorkflowInvocationContext';
2028

29+
const containerViewModeSx: SystemStyleObject = {
30+
gap: 2,
31+
'&[data-self-layout="column"]': {
32+
flexDir: 'column',
33+
alignItems: 'stretch',
34+
},
35+
'&[data-self-layout="row"]': {
36+
flexDir: 'row',
37+
alignItems: 'flex-start',
38+
overflowX: 'auto',
39+
overflowY: 'visible',
40+
h: 'min-content',
41+
flexShrink: 0,
42+
},
43+
'&[data-parent-layout="column"]': {
44+
w: 'full',
45+
h: 'min-content',
46+
},
47+
'&[data-parent-layout="row"]': {
48+
flex: '1 1 0',
49+
minW: 32,
50+
},
51+
};
52+
53+
/**
54+
* Container element for canvas workflow fields.
55+
* This reads from the canvas workflow nodes slice.
56+
*/
57+
const CanvasWorkflowContainerElement = memo(({ id }: { id: string }) => {
58+
const nodesState = useAppSelector(selectCanvasWorkflowNodesSlice);
59+
const el = nodesState.form.elements[id];
60+
const depth = useDepthContext();
61+
const containerCtx = useContainerContext();
62+
63+
if (!el || !isContainerElement(el)) {
64+
return null;
65+
}
66+
67+
const { data } = el;
68+
const { children, layout } = data;
69+
70+
return (
71+
<DepthContextProvider depth={depth + 1}>
72+
<ContainerContextProvider id={id} layout={layout}>
73+
<Flex
74+
id={id}
75+
className={CONTAINER_CLASS_NAME}
76+
sx={containerViewModeSx}
77+
data-self-layout={layout}
78+
data-depth={depth}
79+
data-parent-layout={containerCtx.layout}
80+
>
81+
{children.map((childId) => (
82+
<CanvasWorkflowFormElementComponent key={childId} id={childId} />
83+
))}
84+
</Flex>
85+
</ContainerContextProvider>
86+
</DepthContextProvider>
87+
);
88+
});
89+
CanvasWorkflowContainerElement.displayName = 'CanvasWorkflowContainerElement';
90+
2191
/**
2292
* Renders a form element from canvas workflow nodes.
2393
* Recursively handles all element types.

0 commit comments

Comments
 (0)