(newFiber, lastPlacedIndex, newIndex)
| 9009 | } |
| 9010 | |
| 9011 | function placeChild(newFiber, lastPlacedIndex, newIndex) { |
| 9012 | newFiber.index = newIndex; |
| 9013 | if (!shouldTrackSideEffects) { |
| 9014 | // Noop. |
| 9015 | return lastPlacedIndex; |
| 9016 | } |
| 9017 | var current = newFiber.alternate; |
| 9018 | if (current !== null) { |
| 9019 | var oldIndex = current.index; |
| 9020 | if (oldIndex < lastPlacedIndex) { |
| 9021 | // This is a move. |
| 9022 | newFiber.effectTag = Placement; |
| 9023 | return lastPlacedIndex; |
| 9024 | } else { |
| 9025 | // This item can stay in place. |
| 9026 | return oldIndex; |
| 9027 | } |
| 9028 | } else { |
| 9029 | // This is an insertion. |
| 9030 | newFiber.effectTag = Placement; |
| 9031 | return lastPlacedIndex; |
| 9032 | } |
| 9033 | } |
| 9034 | |
| 9035 | function placeSingleChild(newFiber) { |
| 9036 | // This is simpler for the single child case. We only need to do a |
no outgoing calls
no test coverage detected