Unified · Split
| @@ -303,26 +303,25 @@ function ChartLegendContent({ · 302 unmodified lines | ||
| 303 | 303 | } |
| 304 | 304 | |
| 305 | 305 | // Helper to extract item config from a payload. |
| 306 | +const isRecord = (value: unknown): value is Record<string, unknown> => | |
| 307 | + typeof value === "object" && value !== null && !Array.isArray(value); | |
| 308 | + | |
| 306 | 309 | function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) { |
| 307 | − if (typeof payload !== "object" || payload === null) { | |
| 310 | + if (!isRecord(payload)) { | |
| 308 | 311 | return undefined; |
| 309 | 312 | } |
| 310 | 313 | |
| 311 | − const payloadPayload = | |
| 312 | − "payload" in payload && typeof payload.payload === "object" && payload.payload !== null | |
| 313 | − ? payload.payload | |
| 314 | − : undefined; | |
| 314 | + const payloadPayload = isRecord(payload.payload) ? payload.payload : undefined; | |
| 315 | 315 | |
| 316 | 316 | let configLabelKey: string = key; |
| 317 | 317 | |
| 318 | − if (key in payload && typeof payload[key as keyof typeof payload] === "string") { | |
| 319 | − configLabelKey = payload[key as keyof typeof payload] as string; | |
| 318 | + if (typeof payload[key] === "string") { | |
| 319 | + configLabelKey = payload[key]; | |
| 320 | 320 | } else if ( |
| 321 | 321 | payloadPayload && |
| 322 | − key in payloadPayload && | |
| 323 | − typeof payloadPayload[key as keyof typeof payloadPayload] === "string" | |
| 322 | + typeof payloadPayload[key] === "string" | |
| 324 | 323 | ) { |
| 325 | − configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string; | |
| 324 | + configLabelKey = payloadPayload[key]; | |
| 326 | 325 | } |
| 327 | 326 | |
| 328 | 327 | return configLabelKey in config ? config[configLabelKey] : config[key]; |