message: Tracked progress and only reset if end changed
diff: @@ -28,16 +28,28 @@ class Motion extends React.Component {
  return items
  .map(item => {
  const end = !dataByKey[item.key] ? leave(item.data) : update(item.data);
  - return {...item, end, interpolators: this.getInterpolators(item.style, end)};
  + const interpolators = this.getInterpolators(item.style, end);
  + const progress = areEqual(item.style, end) ? progress : 0;
  + return {...item, end, interpolators, progress};
  })
  .concat(data
  .filter(dataItem => !itemsByKey[dataItem.key])
  .map(dataItem => {
  const end = update(dataItem);
  - return {...dataItem, end, interpolators: this.getInterpolators(enter(dataItem), end)};
  + const interpolators = this.getInterpolators(enter(dataItem), end);
  + return {...dataItem, end, interpolators, progress: 0};
  })
  );
  }
  + areEqual(from, to) {
  + if (Object.keys(from).length !== Object.keys(to).length)
  + return false;
  + for(var key in from) {
  + if (from[key] !== to[key])
  + return false;
  + }
  + return true;
  + }
  getInterpolators(start, end) {
  const interpolators = {};
  for(var key in start) {
  