packages/victory-core/src/victory-util/domain.js
function getDomainWithZero(props, axis) {
  const propsDomain = getDomainFromProps(props, axis);
  if (propsDomain) {
    return propsDomain;
  }

  const dataset = Data.getData(props);
  const y0Min = dataset.reduce((min, datum) => (datum._y0 < min ? datum._y0 : min), Infinity);

  const ensureZero = (domain) => {
    if (axis === "x") {
      return domain;
    }

    const defaultMin = y0Min !== Infinity ? y0Min : 0;
    const maxDomainProp = getMaxFromProps(props, axis);
    const minDomainProp = getMinFromProps(props, axis);
    const max =
      maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);
    const min =
      minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);

    return getDomainFromMinMax(min, max);
  };

  const getDomainFunction = () => {
    return getDomainFromData(props, axis, dataset);
  };

  const formatDomainFunction = (domain) => {
    return formatDomain(ensureZero(domain), props, axis);
  };

  return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);
}
function getDomainWithZero(props, axis) {
  const propsDomain = getDomainFromProps(props, axis);
  if (propsDomain) {
    return propsDomain;
  }

  const dataset = Data.getData(props);
  const y0Min = dataset.reduce((min, datum) => (datum._y0 < min ? datum._y0 : min), Infinity);

  const ensureZero = (domain) => {
    if (axis === "x") {
      return domain;
    }

    const defaultMin = y0Min !== Infinity ? y0Min : 0;
    const maxDomainProp = getMaxFromProps(props, axis);
    const minDomainProp = getMinFromProps(props, axis);
    const max =
      maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);
    const min =
      minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);

    return getDomainFromMinMax(min, max);
  };

  const getDomainFunction = () => {
    return getDomainFromData(props, axis, dataset);
  };

  const formatDomainFunction = (domain) => {
    return formatDomain(ensureZero(domain), props, axis);
  };

  return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);
}
function getDomainWithZero ( props , axis ) { const propsDomain = getDomainFromProps ( props , axis ) ; if ( propsDomain ) { return propsDomain ; } const dataset = Data . getData ( props ) ; const y0Min = dataset . reduce ( ( min , datum ) => ( datum . _y0 < min ? datum . _y0 : min ) , Infinity ) ; const ensureZero = ( domain ) => { if ( axis === "x" ) { return domain ; } const defaultMin = y0Min !== Infinity ? y0Min : 0 ; const maxDomainProp = getMaxFromProps ( props , axis ) ; const minDomainProp = getMinFromProps ( props , axis ) ; const max = maxDomainProp !== undefined ? maxDomainProp : Collection . getMaxValue ( domain , defaultMin ) ; const min = minDomainProp !== undefined ? minDomainProp : Collection . getMinValue ( domain , defaultMin ) ; return getDomainFromMinMax ( min , max ) ; } ; const getDomainFunction = ( ) => { return getDomainFromData ( props , axis , dataset ) ; } ; const formatDomainFunction = ( domain ) => { return formatDomain ( ensureZero ( domain ) , props , axis ) ; } ; return createDomainFunction ( getDomainFunction , formatDomainFunction ) ( props , axis ) ; }
Returns a domain for a given axis. This method forces the domain to include
zero unless the domain is explicitly specified in props.
@param {Object} props: the props object
@param {String} axis: the current axis
@returns {Array} the domain for the given axis
Returns a domain for a given axis . This method forces the domain to include zero unless the domain is explicitly specified in props .