packages/victory-core/src/victory-util/transitions.js
function getChildPropsOnExit(animate, child, data, exitingNodes, cb) {
  // Whether or not _this_ child has exiting nodes, we want the exit-
  // transition for all children to have the same duration, delay, etc.
  const onExit = animate && animate.onExit;
  animate = assign({}, animate, onExit);

  if (exitingNodes) {
    // After the exit transition occurs, trigger the animations for
    // nodes that are neither exiting or entering.
    animate.onEnd = cb;
    const before = animate.onExit && animate.onExit.before ? animate.onExit.before : identity;
    // If nodes need to exit, transform them with the provided onExit.before function.
    data = data.map((datum, idx) => {
      const key = (datum.key || idx).toString();
      return exitingNodes[key] ? assign({}, datum, before(datum, idx, data)) : datum;
    });
  }

  return { animate, data };
}
function getChildPropsOnExit(animate, child, data, exitingNodes, cb) {
  // Whether or not _this_ child has exiting nodes, we want the exit-
  // transition for all children to have the same duration, delay, etc.
  const onExit = animate && animate.onExit;
  animate = assign({}, animate, onExit);

  if (exitingNodes) {
    // After the exit transition occurs, trigger the animations for
    // nodes that are neither exiting or entering.
    animate.onEnd = cb;
    const before = animate.onExit && animate.onExit.before ? animate.onExit.before : identity;
    // If nodes need to exit, transform them with the provided onExit.before function.
    data = data.map((datum, idx) => {
      const key = (datum.key || idx).toString();
      return exitingNodes[key] ? assign({}, datum, before(datum, idx, data)) : datum;
    });
  }

  return { animate, data };
}
eslint-disable-next-line max-params, max-len