(element, mode, expirationTime)
| 6283 | } |
| 6284 | |
| 6285 | function createFiberFromElement(element, mode, expirationTime) { |
| 6286 | var owner = null; |
| 6287 | { |
| 6288 | owner = element._owner; |
| 6289 | } |
| 6290 | |
| 6291 | var fiber = void 0; |
| 6292 | var type = element.type; |
| 6293 | var key = element.key; |
| 6294 | var pendingProps = element.props; |
| 6295 | |
| 6296 | var fiberTag = void 0; |
| 6297 | if (typeof type === 'function') { |
| 6298 | fiberTag = shouldConstruct(type) ? ClassComponent : IndeterminateComponent; |
| 6299 | } else if (typeof type === 'string') { |
| 6300 | fiberTag = HostComponent; |
| 6301 | } else { |
| 6302 | switch (type) { |
| 6303 | case REACT_FRAGMENT_TYPE: |
| 6304 | return createFiberFromFragment(pendingProps.children, mode, expirationTime, key); |
| 6305 | case REACT_ASYNC_MODE_TYPE: |
| 6306 | fiberTag = Mode; |
| 6307 | mode |= AsyncMode | StrictMode; |
| 6308 | break; |
| 6309 | case REACT_STRICT_MODE_TYPE: |
| 6310 | fiberTag = Mode; |
| 6311 | mode |= StrictMode; |
| 6312 | break; |
| 6313 | case REACT_CALL_TYPE: |
| 6314 | fiberTag = CallComponent; |
| 6315 | break; |
| 6316 | case REACT_RETURN_TYPE: |
| 6317 | fiberTag = ReturnComponent; |
| 6318 | break; |
| 6319 | default: |
| 6320 | { |
| 6321 | if (typeof type === 'object' && type !== null) { |
| 6322 | switch (type.$$typeof) { |
| 6323 | case REACT_PROVIDER_TYPE: |
| 6324 | fiberTag = ContextProvider; |
| 6325 | break; |
| 6326 | case REACT_CONTEXT_TYPE: |
| 6327 | // This is a consumer |
| 6328 | fiberTag = ContextConsumer; |
| 6329 | break; |
| 6330 | case REACT_FORWARD_REF_TYPE: |
| 6331 | fiberTag = ForwardRef; |
| 6332 | break; |
| 6333 | default: |
| 6334 | if (typeof type.tag === 'number') { |
| 6335 | // Currently assumed to be a continuation and therefore is a |
| 6336 | // fiber already. |
| 6337 | // TODO: The yield system is currently broken for updates in |
| 6338 | // some cases. The reified yield stores a fiber, but we don't |
| 6339 | // know which fiber that is; the current or a workInProgress? |
| 6340 | // When the continuation gets rendered here we don't know if we |
| 6341 | // can reuse that fiber or if we need to clone it. There is |
| 6342 | // probably a clever way to restructure this. |
no test coverage detected