recharts
Version:
React charts
52 lines (45 loc) • 1.98 kB
JavaScript
import { ReferenceDot } from '../cartesian/ReferenceDot';
import { ReferenceLine } from '../cartesian/ReferenceLine';
import { ReferenceArea } from '../cartesian/ReferenceArea';
import { ifOverflowMatches } from './IfOverflowMatches';
import { findAllByType } from './ReactUtils';
import { isNumber } from './DataUtils';
export var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {
var lines = findAllByType(children, ReferenceLine.displayName);
var dots = findAllByType(children, ReferenceDot.displayName);
var elements = lines.concat(dots);
var areas = findAllByType(children, ReferenceArea.displayName);
var idKey = "".concat(axisType, "Id");
var valueKey = axisType[0];
var finalDomain = domain;
if (elements.length) {
finalDomain = elements.reduce(function (result, el) {
if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {
var value = el.props[valueKey];
return [Math.min(result[0], value), Math.max(result[1], value)];
}
return result;
}, finalDomain);
}
if (areas.length) {
var key1 = "".concat(valueKey, "1");
var key2 = "".concat(valueKey, "2");
finalDomain = areas.reduce(function (result, el) {
if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {
var value1 = el.props[key1];
var value2 = el.props[key2];
return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];
}
return result;
}, finalDomain);
}
if (specifiedTicks && specifiedTicks.length) {
finalDomain = specifiedTicks.reduce(function (result, tick) {
if (isNumber(tick)) {
return [Math.min(result[0], tick), Math.max(result[1], tick)];
}
return result;
}, finalDomain);
}
return finalDomain;
};