@@ -16,10 +16,8 @@ import { SelectObject } from 'features/controlLayers/components/SelectObject/Sel
1616import { StagingAreaContextProvider } from 'features/controlLayers/components/StagingArea/context' ;
1717import { CanvasToolbar } from 'features/controlLayers/components/Toolbar/CanvasToolbar' ;
1818import { Transform } from 'features/controlLayers/components/Transform/Transform' ;
19- import { CanvasInstanceContextProvider } from 'features/controlLayers/contexts/CanvasInstanceContextProvider' ;
2019import { CanvasManagerProviderGate } from 'features/controlLayers/contexts/CanvasManagerProviderGate' ;
2120import { selectDynamicGrid , selectShowHUD } from 'features/controlLayers/store/canvasSettingsSlice' ;
22- import { selectActiveCanvasId } from 'features/controlLayers/store/selectors' ;
2321import { memo , useCallback } from 'react' ;
2422import { PiDotsThreeOutlineVerticalFill } from 'react-icons/pi' ;
2523
@@ -50,11 +48,7 @@ const canvasBgSx = {
5048 } ,
5149} ;
5250
53- interface CanvasProps {
54- canvasId : string ;
55- }
56-
57- const Canvas = memo ( ( { canvasId } : CanvasProps ) => {
51+ const ActiveCanvas = memo ( ( ) => {
5852 const dynamicGrid = useAppSelector ( ( state ) => selectDynamicGrid ( state ) ) ;
5953 const showHUD = useAppSelector ( ( state ) => selectShowHUD ( state ) ) ;
6054
@@ -64,63 +58,59 @@ const Canvas = memo(({ canvasId }: CanvasProps) => {
6458
6559 return (
6660 < Flex w = "full" h = "full" >
67- < CanvasInstanceContextProvider canvasId = { canvasId } >
68- < StagingAreaContextProvider canvasId = { canvasId } >
69- < ContextMenu < HTMLDivElement > renderMenu = { renderMenu } withLongPress = { false } >
70- { ( ref ) => (
71- < Flex ref = { ref } sx = { canvasBgSx } data-dynamic-grid = { dynamicGrid } >
72- < InvokeCanvasComponent canvasId = { canvasId } />
73- < CanvasManagerProviderGate >
74- < Flex
75- position = "absolute"
76- flexDir = "column"
77- top = { 1 }
78- insetInlineStart = { 1 }
79- pointerEvents = "none"
80- gap = { 2 }
81- alignItems = "flex-start"
82- >
83- { showHUD && < CanvasHUD /> }
84- < CanvasAlertsSaveAllImagesToGallery />
85- < CanvasAlertsSelectedEntityStatus />
86- < CanvasAlertsPreserveMask />
87- < CanvasAlertsInvocationProgress />
88- < CanvasAlertsBboxVisibility />
89- </ Flex >
90- < Flex position = "absolute" top = { 1 } insetInlineEnd = { 1 } >
91- < Menu >
92- < MenuButton as = { IconButton } icon = { < PiDotsThreeOutlineVerticalFill /> } colorScheme = "base" />
93- < MenuContent />
94- </ Menu >
95- </ Flex >
96- < CanvasBusySpinner position = "absolute" insetInlineEnd = { 2 } bottom = { 2 } />
97- </ CanvasManagerProviderGate >
98- </ Flex >
99- ) }
100- </ ContextMenu >
101- < CanvasManagerProviderGate >
102- < StagingArea />
103- </ CanvasManagerProviderGate >
104- < Flex position = "absolute" bottom = { 4 } >
105- < CanvasManagerProviderGate >
106- < Filter />
107- < Transform />
108- < SelectObject />
109- </ CanvasManagerProviderGate >
110- </ Flex >
61+ < StagingAreaContextProvider >
62+ < ContextMenu < HTMLDivElement > renderMenu = { renderMenu } withLongPress = { false } >
63+ { ( ref ) => (
64+ < Flex ref = { ref } sx = { canvasBgSx } data-dynamic-grid = { dynamicGrid } >
65+ < InvokeCanvasComponent />
66+ < CanvasManagerProviderGate >
67+ < Flex
68+ position = "absolute"
69+ flexDir = "column"
70+ top = { 1 }
71+ insetInlineStart = { 1 }
72+ pointerEvents = "none"
73+ gap = { 2 }
74+ alignItems = "flex-start"
75+ >
76+ { showHUD && < CanvasHUD /> }
77+ < CanvasAlertsSaveAllImagesToGallery />
78+ < CanvasAlertsSelectedEntityStatus />
79+ < CanvasAlertsPreserveMask />
80+ < CanvasAlertsInvocationProgress />
81+ < CanvasAlertsBboxVisibility />
82+ </ Flex >
83+ < Flex position = "absolute" top = { 1 } insetInlineEnd = { 1 } >
84+ < Menu >
85+ < MenuButton as = { IconButton } icon = { < PiDotsThreeOutlineVerticalFill /> } colorScheme = "base" />
86+ < MenuContent />
87+ </ Menu >
88+ </ Flex >
89+ < CanvasBusySpinner position = "absolute" insetInlineEnd = { 2 } bottom = { 2 } />
90+ </ CanvasManagerProviderGate >
91+ </ Flex >
92+ ) }
93+ </ ContextMenu >
94+ < CanvasManagerProviderGate >
95+ < StagingArea />
96+ </ CanvasManagerProviderGate >
97+ < Flex position = "absolute" bottom = { 4 } >
11198 < CanvasManagerProviderGate >
112- < CanvasDropArea />
99+ < Filter />
100+ < Transform />
101+ < SelectObject />
113102 </ CanvasManagerProviderGate >
114- </ StagingAreaContextProvider >
115- </ CanvasInstanceContextProvider >
103+ </ Flex >
104+ < CanvasManagerProviderGate >
105+ < CanvasDropArea />
106+ </ CanvasManagerProviderGate >
107+ </ StagingAreaContextProvider >
116108 </ Flex >
117109 ) ;
118110} ) ;
119- Canvas . displayName = 'Canvas ' ;
111+ ActiveCanvas . displayName = 'ActiveCanvas ' ;
120112
121113export const CanvasWorkspacePanel = memo ( ( ) => {
122- const canvasId = useAppSelector ( selectActiveCanvasId ) ;
123-
124114 return (
125115 < Flex
126116 borderRadius = "base"
@@ -138,7 +128,7 @@ export const CanvasWorkspacePanel = memo(() => {
138128 </ CanvasManagerProviderGate >
139129 < Divider />
140130 < CanvasTabs />
141- < Canvas canvasId = { canvasId } />
131+ < ActiveCanvas />
142132 </ Flex >
143133 ) ;
144134} ) ;
0 commit comments