(returnFiber, newChild, expirationTime)
| 9063 | } |
| 9064 | |
| 9065 | function createChild(returnFiber, newChild, expirationTime) { |
| 9066 | if (typeof newChild === 'string' || typeof newChild === 'number') { |
| 9067 | // Text nodes don't have keys. If the previous node is implicitly keyed |
| 9068 | // we can continue to replace it without aborting even if it is not a text |
| 9069 | // node. |
| 9070 | var created = createFiberFromText('' + newChild, returnFiber.mode, expirationTime); |
| 9071 | created['return'] = returnFiber; |
| 9072 | return created; |
| 9073 | } |
| 9074 | |
| 9075 | if (typeof newChild === 'object' && newChild !== null) { |
| 9076 | switch (newChild.$$typeof) { |
| 9077 | case REACT_ELEMENT_TYPE: |
| 9078 | { |
| 9079 | var _created = createFiberFromElement(newChild, returnFiber.mode, expirationTime); |
| 9080 | _created.ref = coerceRef(returnFiber, null, newChild); |
| 9081 | _created['return'] = returnFiber; |
| 9082 | return _created; |
| 9083 | } |
| 9084 | case REACT_PORTAL_TYPE: |
| 9085 | { |
| 9086 | var _created2 = createFiberFromPortal(newChild, returnFiber.mode, expirationTime); |
| 9087 | _created2['return'] = returnFiber; |
| 9088 | return _created2; |
| 9089 | } |
| 9090 | } |
| 9091 | |
| 9092 | if (isArray$1(newChild) || getIteratorFn(newChild)) { |
| 9093 | var _created3 = createFiberFromFragment(newChild, returnFiber.mode, expirationTime, null); |
| 9094 | _created3['return'] = returnFiber; |
| 9095 | return _created3; |
| 9096 | } |
| 9097 | |
| 9098 | throwOnInvalidObjectType(returnFiber, newChild); |
| 9099 | } |
| 9100 | |
| 9101 | { |
| 9102 | if (typeof newChild === 'function') { |
| 9103 | warnOnFunctionType(); |
| 9104 | } |
| 9105 | } |
| 9106 | |
| 9107 | return null; |
| 9108 | } |
| 9109 | |
| 9110 | function updateSlot(returnFiber, oldFiber, newChild, expirationTime) { |
| 9111 | // Update the fiber if the keys match, otherwise return null. |
no test coverage detected