packages/victory-core/src/victory-util/transitions.js
function getNodeTransitions(oldData, nextData) {
  const oldDataKeyed = oldData && getKeyedData(oldData);
  const nextDataKeyed = nextData && getKeyedData(nextData);

  return {
    entering: oldDataKeyed && getKeyedDataDifference(nextDataKeyed, oldDataKeyed),
    exiting: nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed)
  };
}
function getNodeTransitions(oldData, nextData) {
  const oldDataKeyed = oldData && getKeyedData(oldData);
  const nextDataKeyed = nextData && getKeyedData(nextData);

  return {
    entering: oldDataKeyed && getKeyedDataDifference(nextDataKeyed, oldDataKeyed),
    exiting: nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed)
  };
}
Calculate which data-points exist in oldData and not nextData -
these are the `exiting` data-points.  Also calculate which
data-points exist in nextData and not oldData - these are the
`entering` data-points.

@param  {Array} oldData   this.props.data Array
@param  {Array} nextData  this.props.data Array

@return {Object}          Object with `entering` and `exiting` properties.
entering[datum.key] will be true if the data is
entering, and similarly for `exiting`.