@@ -158,15 +158,24 @@ export const CustomLayersSelector = () => {
158
158
} ;
159
159
160
160
const [ addingLayer , setAddingLayer ] = useState ( false ) ;
161
- const layersById = useMemo ( ( ) => {
162
- const layersById : Record < string , ParsedWMSLayer | ParsedWMTSLayer > = { } ;
161
+ const getParsedLayer = useMemo ( ( ) => {
162
+ const getKey = ( {
163
+ type,
164
+ id,
165
+ } : WMTSCustomLayer | WMSCustomLayer | ParsedWMSLayer | ParsedWMTSLayer ) => {
166
+ return `${ type } -${ id } ` ;
167
+ } ;
168
+ const layersByKey : Record < string , ParsedWMSLayer | ParsedWMTSLayer > = { } ;
163
169
wmsLayers ?. forEach ( ( layer ) => {
164
- layersById [ layer . id ] = layer ;
170
+ layersByKey [ getKey ( layer ) ] = layer ;
165
171
} ) ;
166
172
wmtsLayers ?. forEach ( ( layer ) => {
167
- layersById [ layer . id ] = layer ;
173
+ layersByKey [ getKey ( layer ) ] = layer ;
168
174
} ) ;
169
- return layersById ;
175
+ return ( configLayer : WMTSCustomLayer | WMSCustomLayer ) => {
176
+ const key = getKey ( configLayer ) ;
177
+ return layersByKey [ key ] ;
178
+ } ;
170
179
} , [ wmsLayers , wmtsLayers ] ) ;
171
180
const sectionTitleClasses = useSectionTitleStyles ( {
172
181
sectionOpen : true ,
@@ -222,12 +231,12 @@ export const CustomLayersSelector = () => {
222
231
< Droppable droppableId = "layers" >
223
232
{ ( provided ) => (
224
233
< div { ...provided . droppableProps } ref = { provided . innerRef } >
225
- { customLayers . map ( ( customLayer , i ) => {
234
+ { customLayers . map ( ( configLayer , i ) => {
226
235
return (
227
236
< DraggableLayer
228
- key = { `${ customLayer . type } -${ customLayer . id } ` }
229
- configLayer = { customLayer }
230
- layersById = { layersById }
237
+ key = { `${ configLayer . type } -${ configLayer . id } ` }
238
+ configLayer = { configLayer }
239
+ parsedLayer = { getParsedLayer ( configLayer ) }
231
240
index = { i }
232
241
/>
233
242
) ;
@@ -262,30 +271,29 @@ export const CustomLayersSelector = () => {
262
271
const DraggableLayer = ( {
263
272
configLayer,
264
273
index,
265
- layersById ,
274
+ parsedLayer ,
266
275
} : {
267
276
configLayer : WMSCustomLayer | WMTSCustomLayer ;
268
277
index : number ;
269
- layersById : Record < string , ParsedWMSLayer | ParsedWMTSLayer > ;
278
+ parsedLayer : ParsedWMSLayer | ParsedWMTSLayer ;
270
279
} ) => {
271
280
const [ _ , dispatch ] = useConfiguratorState ( isConfiguring ) ;
272
281
const value = configLayer . id ;
273
- const layer = layersById [ configLayer . id ] ;
274
282
275
283
const enableTemporalFiltering = useMemo ( ( ) => {
276
284
switch ( configLayer . type ) {
277
285
case "wms" :
278
286
return false ;
279
287
case "wmts" :
280
288
return (
281
- layer ?. availableDimensionValues &&
282
- layer . availableDimensionValues . length > 1
289
+ parsedLayer ?. availableDimensionValues &&
290
+ parsedLayer . availableDimensionValues . length > 1
283
291
) ;
284
292
default :
285
293
const _exhaustiveCheck : never = configLayer ;
286
294
return _exhaustiveCheck ;
287
295
}
288
- } , [ configLayer , layer ?. availableDimensionValues ] ) ;
296
+ } , [ configLayer , parsedLayer ?. availableDimensionValues ] ) ;
289
297
290
298
const handleRemoveClick = ( ) => {
291
299
dispatch ( {
@@ -314,7 +322,7 @@ const DraggableLayer = ({
314
322
} }
315
323
>
316
324
< Typography variant = "body3" sx = { { flexGrow : 1 } } >
317
- { layer ?. title ?? "Unknown layer" }
325
+ { parsedLayer ?. title ?? "Unknown layer" }
318
326
</ Typography >
319
327
< IconButton onClick = { handleRemoveClick } >
320
328
< Icon name = "trash" />
0 commit comments