(newFiber, lastPlacedIndex, newIndex)
| 8335 | } |
| 8336 | |
| 8337 | function placeChild(newFiber, lastPlacedIndex, newIndex) { |
| 8338 | newFiber.index = newIndex; |
| 8339 | if (!shouldTrackSideEffects) { |
| 8340 | // Noop. |
| 8341 | return lastPlacedIndex; |
| 8342 | } |
| 8343 | var current = newFiber.alternate; |
| 8344 | if (current !== null) { |
| 8345 | var oldIndex = current.index; |
| 8346 | if (oldIndex < lastPlacedIndex) { |
| 8347 | // This is a move. |
| 8348 | newFiber.effectTag = Placement; |
| 8349 | return lastPlacedIndex; |
| 8350 | } else { |
| 8351 | // This item can stay in place. |
| 8352 | return oldIndex; |
| 8353 | } |
| 8354 | } else { |
| 8355 | // This is an insertion. |
| 8356 | newFiber.effectTag = Placement; |
| 8357 | return lastPlacedIndex; |
| 8358 | } |
| 8359 | } |
| 8360 | |
| 8361 | function placeSingleChild(newFiber) { |
| 8362 | // This is simpler for the single child case. We only need to do a |
no outgoing calls
no test coverage detected