@@ -15,7 +15,7 @@ import {
15
15
layerTranslated ,
16
16
selectRegionalPromptsSlice ,
17
17
} from 'features/regionalPrompts/store/regionalPromptsSlice' ;
18
- import { debouncedRenderers , renderers } from 'features/regionalPrompts/util/renderers' ;
18
+ import { debouncedRenderers , renderers as normalRenderers } from 'features/regionalPrompts/util/renderers' ;
19
19
import Konva from 'konva' ;
20
20
import type { IRect } from 'konva/lib/types' ;
21
21
import type { MutableRefObject } from 'react' ;
@@ -52,20 +52,8 @@ const useStageRenderer = (
52
52
const lastMouseDownPos = useStore ( $lastMouseDownPos ) ;
53
53
const isMouseOver = useStore ( $isMouseOver ) ;
54
54
const selectedLayerIdColor = useAppSelector ( selectSelectedLayerColor ) ;
55
-
56
- const renderLayers = useMemo (
57
- ( ) => ( asPreview ? debouncedRenderers . renderLayers : renderers . renderLayers ) ,
58
- [ asPreview ]
59
- ) ;
60
- const renderToolPreview = useMemo (
61
- ( ) => ( asPreview ? debouncedRenderers . renderToolPreview : renderers . renderToolPreview ) ,
62
- [ asPreview ]
63
- ) ;
64
- const renderBbox = useMemo ( ( ) => ( asPreview ? debouncedRenderers . renderBbox : renderers . renderBbox ) , [ asPreview ] ) ;
65
- const renderBackground = useMemo (
66
- ( ) => ( asPreview ? debouncedRenderers . renderBackground : renderers . renderBackground ) ,
67
- [ asPreview ]
68
- ) ;
55
+ const layerIds = useMemo ( ( ) => state . layers . map ( ( l ) => l . id ) , [ state . layers ] ) ;
56
+ const renderers = useMemo ( ( ) => ( asPreview ? debouncedRenderers : normalRenderers ) , [ asPreview ] ) ;
69
57
70
58
const onLayerPosChanged = useCallback (
71
59
( layerId : string , x : number , y : number ) => {
@@ -152,11 +140,12 @@ const useStageRenderer = (
152
140
} , [ stageRef , width , height , wrapper ] ) ;
153
141
154
142
useLayoutEffect ( ( ) => {
155
- log . trace ( 'Rendering brush preview' ) ;
143
+ log . trace ( 'Rendering tool preview' ) ;
156
144
if ( asPreview ) {
145
+ // Preview should not display tool
157
146
return ;
158
147
}
159
- renderToolPreview (
148
+ renderers . renderToolPreview (
160
149
stageRef . current ,
161
150
tool ,
162
151
selectedLayerIdColor ,
@@ -176,29 +165,36 @@ const useStageRenderer = (
176
165
lastMouseDownPos ,
177
166
isMouseOver ,
178
167
state . brushSize ,
179
- renderToolPreview ,
168
+ renderers ,
180
169
] ) ;
181
170
182
171
useLayoutEffect ( ( ) => {
183
172
log . trace ( 'Rendering layers' ) ;
184
- renderLayers ( stageRef . current , state . layers , state . globalMaskLayerOpacity , tool , onLayerPosChanged ) ;
185
- } , [ stageRef , state . layers , state . globalMaskLayerOpacity , tool , onLayerPosChanged , renderLayers ] ) ;
173
+ renderers . renderLayers ( stageRef . current , state . layers , state . globalMaskLayerOpacity , tool , onLayerPosChanged ) ;
174
+ } , [ stageRef , state . layers , state . globalMaskLayerOpacity , tool , onLayerPosChanged , renderers ] ) ;
186
175
187
176
useLayoutEffect ( ( ) => {
188
177
log . trace ( 'Rendering bbox' ) ;
189
178
if ( asPreview ) {
179
+ // Preview should not display bboxes
190
180
return ;
191
181
}
192
- renderBbox ( stageRef . current , state . layers , state . selectedLayerId , tool , onBboxChanged , onBboxMouseDown ) ;
193
- } , [ stageRef , asPreview , state . layers , state . selectedLayerId , tool , onBboxChanged , onBboxMouseDown , renderBbox ] ) ;
182
+ renderers . renderBbox ( stageRef . current , state . layers , state . selectedLayerId , tool , onBboxChanged , onBboxMouseDown ) ;
183
+ } , [ stageRef , asPreview , state . layers , state . selectedLayerId , tool , onBboxChanged , onBboxMouseDown , renderers ] ) ;
194
184
195
185
useLayoutEffect ( ( ) => {
196
186
log . trace ( 'Rendering background' ) ;
197
187
if ( asPreview ) {
188
+ // The preview should not have a background
198
189
return ;
199
190
}
200
- renderBackground ( stageRef . current , width , height ) ;
201
- } , [ stageRef , asPreview , width , height , renderBackground ] ) ;
191
+ renderers . renderBackground ( stageRef . current , width , height ) ;
192
+ } , [ stageRef , asPreview , width , height , renderers ] ) ;
193
+
194
+ useLayoutEffect ( ( ) => {
195
+ log . trace ( 'Arranging layers' ) ;
196
+ renderers . arrangeLayers ( stageRef . current , layerIds ) ;
197
+ } , [ stageRef , layerIds , renderers ] ) ;
202
198
} ;
203
199
204
200
type Props = {
0 commit comments