Skip to content

Commit 00615b2

Browse files
committed
fix: area px clamping
1 parent c539d61 commit 00615b2

File tree

3 files changed

+1841
-1823
lines changed

3 files changed

+1841
-1823
lines changed

src/seriesTypes/Area.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import React from 'react'
33

44
import { Axis, Series, Datum } from '../types'
55
import {
6+
clampPxToAxis,
67
getPrimary,
78
getSecondary,
89
getSecondaryStart,
@@ -60,8 +61,16 @@ export default function AreaComponent<TDatum>({
6061
const areaPath =
6162
area<Datum<TDatum>>(
6263
datum => getPrimary(datum, primaryAxis) ?? NaN,
63-
datum => getSecondaryStart(datum, secondaryAxis) ?? NaN,
64-
datum => getSecondary(datum, secondaryAxis) ?? NaN
64+
datum =>
65+
clampPxToAxis(
66+
getSecondaryStart(datum, secondaryAxis) ?? NaN,
67+
secondaryAxis
68+
),
69+
datum =>
70+
clampPxToAxis(
71+
getSecondary(datum, secondaryAxis) ?? NaN,
72+
secondaryAxis
73+
)
6574
).curve(curve)(series.datums) ?? undefined
6675

6776
const linePath =

src/utils/Utils.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,15 @@ export function getHeight<TDatum>(
247247
: getSecondaryLength(datum, secondaryAxis)
248248
}
249249

250+
export function clampPxToAxis<TDatum>(px: number, axis: Axis<TDatum>) {
251+
const range = axis.scale.range()
252+
if (axis.isVertical) {
253+
range.reverse()
254+
}
255+
256+
return Math.max(range[0], Math.min(px, range[1]))
257+
}
258+
250259
export function getTickPx<TDatum>(scale: Axis<TDatum>['scale'], value: any) {
251260
let px = scale(value) ?? NaN
252261

0 commit comments

Comments
 (0)