(element, mode, expirationTime)
| 7204 | } |
| 7205 | |
| 7206 | function createFiberFromElement(element, mode, expirationTime) { |
| 7207 | var owner = null; |
| 7208 | { |
| 7209 | owner = element._owner; |
| 7210 | } |
| 7211 | |
| 7212 | var fiber = void 0; |
| 7213 | var type = element.type; |
| 7214 | var key = element.key; |
| 7215 | var pendingProps = element.props; |
| 7216 | |
| 7217 | var fiberTag = void 0; |
| 7218 | if (typeof type === 'function') { |
| 7219 | fiberTag = shouldConstruct(type) ? ClassComponent : IndeterminateComponent; |
| 7220 | } else if (typeof type === 'string') { |
| 7221 | fiberTag = HostComponent; |
| 7222 | } else { |
| 7223 | switch (type) { |
| 7224 | case REACT_FRAGMENT_TYPE: |
| 7225 | return createFiberFromFragment(pendingProps.children, mode, expirationTime, key); |
| 7226 | case REACT_ASYNC_MODE_TYPE: |
| 7227 | fiberTag = Mode; |
| 7228 | mode |= AsyncMode | StrictMode; |
| 7229 | break; |
| 7230 | case REACT_STRICT_MODE_TYPE: |
| 7231 | fiberTag = Mode; |
| 7232 | mode |= StrictMode; |
| 7233 | break; |
| 7234 | case REACT_CALL_TYPE: |
| 7235 | fiberTag = CallComponent; |
| 7236 | break; |
| 7237 | case REACT_RETURN_TYPE: |
| 7238 | fiberTag = ReturnComponent; |
| 7239 | break; |
| 7240 | default: |
| 7241 | { |
| 7242 | if (typeof type === 'object' && type !== null) { |
| 7243 | switch (type.$$typeof) { |
| 7244 | case REACT_PROVIDER_TYPE: |
| 7245 | fiberTag = ContextProvider; |
| 7246 | break; |
| 7247 | case REACT_CONTEXT_TYPE: |
| 7248 | // This is a consumer |
| 7249 | fiberTag = ContextConsumer; |
| 7250 | break; |
| 7251 | case REACT_FORWARD_REF_TYPE: |
| 7252 | fiberTag = ForwardRef; |
| 7253 | break; |
| 7254 | default: |
| 7255 | if (typeof type.tag === 'number') { |
| 7256 | // Currently assumed to be a continuation and therefore is a |
| 7257 | // fiber already. |
| 7258 | // TODO: The yield system is currently broken for updates in |
| 7259 | // some cases. The reified yield stores a fiber, but we don't |
| 7260 | // know which fiber that is; the current or a workInProgress? |
| 7261 | // When the continuation gets rendered here we don't know if we |
| 7262 | // can reuse that fiber or if we need to clone it. There is |
| 7263 | // probably a clever way to restructure this. |
no test coverage detected