message: fix(anim): clone from source after the previous animator is stopped.
  The property may be modified in stopTracks
diff: @@ -1680,6 +1680,26 @@ function animateToShallow<T>(
  const keyLen = animatableKeys.length;
  if (keyLen > 0 || cfg.force) {
  + // Find last animator animating same prop.
  + const existsAnimators = animatable.animators;
  + let lastAnimator;
  + for (let i = 0; i < existsAnimators.length; i++) {
  + // Use key string instead object reference because ref may be changed.
  + if (existsAnimators[i].targetName === topKey) {
  + lastAnimator = existsAnimators[i];
  + }
  + }
  +
  + if (!additive && lastAnimator) {
  + // Stop exists animation on specific tracks. Only one animator available for each property.
  + // TODO Should invoke previous animation callback?
  + const allAborted = lastAnimator.stopTracks(animatableKeys);
  + if (allAborted) { // This animator can't be used.
  + const idx = indexOf(existsAnimators, lastAnimator);
  + existsAnimators.splice(idx, 1);
  + }
  + }
  +
  let revertedSource: Dictionary<any>;
  let reversedTarget: Dictionary<any>;
  let sourceClone: Dictionary<any>;
  @@ -1697,6 +1717,7 @@ function animateToShallow<T>(
  sourceClone = {};
  for (let i = 0; i < keyLen; i++) {
  const innerKey = animatableKeys[i];
  + // NOTE: Must clone source after the stopTracks. The property may be modified in stopTracks.
  sourceClone[innerKey] = cloneValue(source[innerKey]);
  // Use copy, not change the original reference
  // Copy from target to source.
  @@ -1704,26 +1725,6 @@ function animateToShallow<T>(
  }
  }
  - // Find last animator animating same prop.
  - const existsAnimators = animatable.animators;
  - let lastAnimator;
  - for (let i = 0; i < existsAnimators.length; i++) {
  - // Use key string instead object reference because ref may be changed.
  - if (existsAnimators[i].targetName === topKey) {
  - lastAnimator = existsAnimators[i];
  - }
  - }
  -
  - if (!additive && lastAnimator) {
  - // Stop exists animation on specific tracks. Only one animator available for each property.
  - // TODO Should invoke previous animation callback?
  - const allAborted = lastAnimator.stopTracks(animatableKeys);
  - if (allAborted) { // This animator can't be used.
  - const idx = indexOf(existsAnimators, lastAnimator);
  - existsAnimators.splice(idx, 1);
  - }
  - }
  -
  const animator = new Animator(source, false, additive ? lastAnimator : null);
  animator.targetName = topKey;
  