@@ -149,9 +149,11 @@ export const InteractiveGraphics = ({
149149 const filterAndLimit = < T , > (
150150 objects : T [ ] | undefined ,
151151 filterFn : ( obj : T ) => boolean ,
152- ) : T [ ] => {
152+ ) : ( T & { originalIndex : number } ) [ ] => {
153153 if ( ! objects ) return [ ]
154- const filtered = objects . filter ( filterFn )
154+ const filtered = objects
155+ . map ( ( obj , index ) => ( { ...obj , originalIndex : index } ) )
156+ . filter ( filterFn )
155157 return objectLimit ? filtered . slice ( - objectLimit ) : filtered
156158 }
157159
@@ -248,35 +250,35 @@ export const InteractiveGraphics = ({
248250 } }
249251 >
250252 < DimensionOverlay transform = { realToScreen } >
251- { filteredLines . map ( ( line , index ) => (
253+ { filteredLines . map ( ( line ) => (
252254 < Line
253- key = { index }
255+ key = { line . originalIndex }
254256 line = { line }
255- index = { index }
257+ index = { line . originalIndex }
256258 interactiveState = { interactiveState }
257259 />
258260 ) ) }
259- { filteredRects . map ( ( rect , index ) => (
261+ { filteredRects . map ( ( rect ) => (
260262 < Rect
261- key = { index }
263+ key = { rect . originalIndex }
262264 rect = { rect }
263- index = { index }
265+ index = { rect . originalIndex }
264266 interactiveState = { interactiveState }
265267 />
266268 ) ) }
267- { filteredPoints . map ( ( point , index ) => (
269+ { filteredPoints . map ( ( point ) => (
268270 < Point
269- key = { index }
271+ key = { point . originalIndex }
270272 point = { point }
271- index = { index }
273+ index = { point . originalIndex }
272274 interactiveState = { interactiveState }
273275 />
274276 ) ) }
275- { filteredCircles . map ( ( circle , index ) => (
277+ { filteredCircles . map ( ( circle ) => (
276278 < Circle
277- key = { index }
279+ key = { circle . originalIndex }
278280 circle = { circle }
279- index = { index }
281+ index = { circle . originalIndex }
280282 interactiveState = { interactiveState }
281283 />
282284 ) ) }
0 commit comments