@@ -123,18 +123,29 @@ export const canvasSlice = createSlice({
123
123
id : string ;
124
124
overrides ?: Partial < CanvasRasterLayerState > ;
125
125
isSelected ?: boolean ;
126
+ mergedEntitiesToDelete ?: string [ ] ;
126
127
} >
127
128
) => {
128
- const { id, overrides, isSelected } = action . payload ;
129
+ const { id, overrides, isSelected, mergedEntitiesToDelete = [ ] } = action . payload ;
129
130
const entityState = getRasterLayerState ( id , overrides ) ;
130
131
131
132
state . rasterLayers . entities . push ( entityState ) ;
132
133
133
- if ( isSelected ) {
134
+ if ( mergedEntitiesToDelete . length > 0 ) {
135
+ state . rasterLayers . entities = state . rasterLayers . entities . filter (
136
+ ( entity ) => ! mergedEntitiesToDelete . includes ( entity . id )
137
+ ) ;
138
+ }
139
+
140
+ if ( isSelected || mergedEntitiesToDelete . length > 0 ) {
134
141
state . selectedEntityIdentifier = getEntityIdentifier ( entityState ) ;
135
142
}
136
143
} ,
137
- prepare : ( payload : { overrides ?: Partial < CanvasRasterLayerState > ; isSelected ?: boolean } ) => ( {
144
+ prepare : ( payload : {
145
+ overrides ?: Partial < CanvasRasterLayerState > ;
146
+ isSelected ?: boolean ;
147
+ mergedEntitiesToDelete ?: string [ ] ;
148
+ } ) => ( {
138
149
payload : { ...payload , id : getPrefixedId ( 'raster_layer' ) } ,
139
150
} ) ,
140
151
} ,
@@ -261,19 +272,34 @@ export const canvasSlice = createSlice({
261
272
controlLayerAdded : {
262
273
reducer : (
263
274
state ,
264
- action : PayloadAction < { id : string ; overrides ?: Partial < CanvasControlLayerState > ; isSelected ?: boolean } >
275
+ action : PayloadAction < {
276
+ id : string ;
277
+ overrides ?: Partial < CanvasControlLayerState > ;
278
+ isSelected ?: boolean ;
279
+ mergedEntitiesToDelete ?: string [ ] ;
280
+ } >
265
281
) => {
266
- const { id, overrides, isSelected } = action . payload ;
282
+ const { id, overrides, isSelected, mergedEntitiesToDelete = [ ] } = action . payload ;
267
283
268
284
const entityState = getControlLayerState ( id , overrides ) ;
269
285
270
286
state . controlLayers . entities . push ( entityState ) ;
271
287
272
- if ( isSelected ) {
288
+ if ( mergedEntitiesToDelete . length > 0 ) {
289
+ state . controlLayers . entities = state . controlLayers . entities . filter (
290
+ ( entity ) => ! mergedEntitiesToDelete . includes ( entity . id )
291
+ ) ;
292
+ }
293
+
294
+ if ( isSelected || mergedEntitiesToDelete . length > 0 ) {
273
295
state . selectedEntityIdentifier = getEntityIdentifier ( entityState ) ;
274
296
}
275
297
} ,
276
- prepare : ( payload : { overrides ?: Partial < CanvasControlLayerState > ; isSelected ?: boolean } ) => ( {
298
+ prepare : ( payload : {
299
+ overrides ?: Partial < CanvasControlLayerState > ;
300
+ isSelected ?: boolean ;
301
+ mergedEntitiesToDelete ?: string [ ] ;
302
+ } ) => ( {
277
303
payload : { ...payload , id : getPrefixedId ( 'control_layer' ) } ,
278
304
} ) ,
279
305
} ,
@@ -585,19 +611,34 @@ export const canvasSlice = createSlice({
585
611
rgAdded : {
586
612
reducer : (
587
613
state ,
588
- action : PayloadAction < { id : string ; overrides ?: Partial < CanvasRegionalGuidanceState > ; isSelected ?: boolean } >
614
+ action : PayloadAction < {
615
+ id : string ;
616
+ overrides ?: Partial < CanvasRegionalGuidanceState > ;
617
+ isSelected ?: boolean ;
618
+ mergedEntitiesToDelete ?: string [ ] ;
619
+ } >
589
620
) => {
590
- const { id, overrides, isSelected } = action . payload ;
621
+ const { id, overrides, isSelected, mergedEntitiesToDelete = [ ] } = action . payload ;
591
622
592
623
const entityState = getRegionalGuidanceState ( id , overrides ) ;
593
624
594
625
state . regionalGuidance . entities . push ( entityState ) ;
595
626
596
- if ( isSelected ) {
627
+ if ( mergedEntitiesToDelete . length > 0 ) {
628
+ state . regionalGuidance . entities = state . regionalGuidance . entities . filter (
629
+ ( entity ) => ! mergedEntitiesToDelete . includes ( entity . id )
630
+ ) ;
631
+ }
632
+
633
+ if ( isSelected || mergedEntitiesToDelete . length > 0 ) {
597
634
state . selectedEntityIdentifier = getEntityIdentifier ( entityState ) ;
598
635
}
599
636
} ,
600
- prepare : ( payload ?: { overrides ?: Partial < CanvasRegionalGuidanceState > ; isSelected ?: boolean } ) => ( {
637
+ prepare : ( payload ?: {
638
+ overrides ?: Partial < CanvasRegionalGuidanceState > ;
639
+ isSelected ?: boolean ;
640
+ mergedEntitiesToDelete ?: string [ ] ;
641
+ } ) => ( {
601
642
payload : { ...payload , id : getPrefixedId ( 'regional_guidance' ) } ,
602
643
} ) ,
603
644
} ,
@@ -812,19 +853,30 @@ export const canvasSlice = createSlice({
812
853
id : string ;
813
854
overrides ?: Partial < CanvasInpaintMaskState > ;
814
855
isSelected ?: boolean ;
856
+ mergedEntitiesToDelete ?: string [ ] ;
815
857
} >
816
858
) => {
817
- const { id, overrides, isSelected } = action . payload ;
859
+ const { id, overrides, isSelected, mergedEntitiesToDelete = [ ] } = action . payload ;
818
860
819
861
const entityState = getInpaintMaskState ( id , overrides ) ;
820
862
821
863
state . inpaintMasks . entities . push ( entityState ) ;
822
864
823
- if ( isSelected ) {
865
+ if ( mergedEntitiesToDelete . length > 0 ) {
866
+ state . inpaintMasks . entities = state . inpaintMasks . entities . filter (
867
+ ( entity ) => ! mergedEntitiesToDelete . includes ( entity . id )
868
+ ) ;
869
+ }
870
+
871
+ if ( isSelected || mergedEntitiesToDelete . length > 0 ) {
824
872
state . selectedEntityIdentifier = getEntityIdentifier ( entityState ) ;
825
873
}
826
874
} ,
827
- prepare : ( payload ?: { overrides ?: Partial < CanvasInpaintMaskState > ; isSelected ?: boolean } ) => ( {
875
+ prepare : ( payload ?: {
876
+ overrides ?: Partial < CanvasInpaintMaskState > ;
877
+ isSelected ?: boolean ;
878
+ mergedEntitiesToDelete ?: string [ ] ;
879
+ } ) => ( {
828
880
payload : { ...payload , id : getPrefixedId ( 'inpaint_mask' ) } ,
829
881
} ) ,
830
882
} ,
0 commit comments