(newFiber, lastPlacedIndex, newIndex)
| 9112 | } |
| 9113 | |
| 9114 | function placeChild(newFiber, lastPlacedIndex, newIndex) { |
| 9115 | newFiber.index = newIndex; |
| 9116 | if (!shouldTrackSideEffects) { |
| 9117 | // Noop. |
| 9118 | return lastPlacedIndex; |
| 9119 | } |
| 9120 | var current = newFiber.alternate; |
| 9121 | if (current !== null) { |
| 9122 | var oldIndex = current.index; |
| 9123 | if (oldIndex < lastPlacedIndex) { |
| 9124 | // This is a move. |
| 9125 | newFiber.effectTag = Placement; |
| 9126 | return lastPlacedIndex; |
| 9127 | } else { |
| 9128 | // This item can stay in place. |
| 9129 | return oldIndex; |
| 9130 | } |
| 9131 | } else { |
| 9132 | // This is an insertion. |
| 9133 | newFiber.effectTag = Placement; |
| 9134 | return lastPlacedIndex; |
| 9135 | } |
| 9136 | } |
| 9137 | |
| 9138 | function placeSingleChild(newFiber) { |
| 9139 | // This is simpler for the single child case. We only need to do a |
no outgoing calls
no test coverage detected