(newFiber, lastPlacedIndex, newIndex)
| 9067 | } |
| 9068 | |
| 9069 | function placeChild(newFiber, lastPlacedIndex, newIndex) { |
| 9070 | newFiber.index = newIndex; |
| 9071 | if (!shouldTrackSideEffects) { |
| 9072 | // Noop. |
| 9073 | return lastPlacedIndex; |
| 9074 | } |
| 9075 | var current = newFiber.alternate; |
| 9076 | if (current !== null) { |
| 9077 | var oldIndex = current.index; |
| 9078 | if (oldIndex < lastPlacedIndex) { |
| 9079 | // This is a move. |
| 9080 | newFiber.effectTag = Placement; |
| 9081 | return lastPlacedIndex; |
| 9082 | } else { |
| 9083 | // This item can stay in place. |
| 9084 | return oldIndex; |
| 9085 | } |
| 9086 | } else { |
| 9087 | // This is an insertion. |
| 9088 | newFiber.effectTag = Placement; |
| 9089 | return lastPlacedIndex; |
| 9090 | } |
| 9091 | } |
| 9092 | |
| 9093 | function placeSingleChild(newFiber) { |
| 9094 | // This is simpler for the single child case. We only need to do a |
no outgoing calls
no test coverage detected