MCPcopy Index your code
hub / github.com/ChartGPU/ChartGPU / computeBaselineDomainAndPx

Function computeBaselineDomainAndPx

src/interaction/findNearestPoint.ts:371–407  ·  view source on GitHub ↗
(
  seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>,
  yScale: LinearScale,
  plotHeightPx: number,
)

Source from the content-addressed store, hash-verified

369}
370
371export function computeBaselineDomainAndPx(
372 seriesConfigs: ReadonlyArray<ResolvedBarSeriesConfig>,
373 yScale: LinearScale,
374 plotHeightPx: number,
375): Readonly<{ baselineDomain: number; baselinePx: number }> {
376 // Axis-aware baseline logic (mirrors `createBarRenderer.ts`, but in px-space):
377 // Determine visible y-domain from yScale via invert(bottom/top) where top=0 and bottom=plotHeightPx.
378 const yDomainA = yScale.invert(plotHeightPx);
379 const yDomainB = yScale.invert(0);
380 const yMin = Math.min(yDomainA, yDomainB);
381 const yMax = Math.max(yDomainA, yDomainB);
382
383 let baselineDomain: number;
384 if (!Number.isFinite(yMin) || !Number.isFinite(yMax)) {
385 baselineDomain = computeBaselineForBarsFromData(seriesConfigs);
386 } else if (yMin <= 0 && 0 <= yMax) {
387 baselineDomain = 0;
388 } else if (yMin > 0) {
389 baselineDomain = yMin;
390 } else if (yMax < 0) {
391 baselineDomain = yMax;
392 } else {
393 baselineDomain = computeBaselineForBarsFromData(seriesConfigs);
394 }
395
396 let baselinePx = yScale.scale(baselineDomain);
397 if (!Number.isFinite(baselinePx)) {
398 baselineDomain = computeBaselineForBarsFromData(seriesConfigs);
399 baselinePx = yScale.scale(baselineDomain);
400 }
401 if (!Number.isFinite(baselinePx)) {
402 baselineDomain = 0;
403 baselinePx = yScale.scale(0);
404 }
405
406 return { baselineDomain, baselinePx };
407}
408
409export function bucketStackedXKey(
410 xCenterPx: number,

Callers 1

findNearestPointFunction · 0.85

Calls 3

invertMethod · 0.80
scaleMethod · 0.65

Tested by

no test coverage detected