MCPcopy Create free account
hub / github.com/krasimir/react-in-patterns / createFiberFromElement

Function createFiberFromElement

code/event-handlers/public/app.js:6285–6369  ·  view source on GitHub ↗
(element, mode, expirationTime)

Source from the content-addressed store, hash-verified

6283}
6284
6285function 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.

Callers 3

updateElementFunction · 0.70
createChildFunction · 0.70
reconcileSingleElementFunction · 0.70

Calls 4

shouldConstructFunction · 0.70
createFiberFromFragmentFunction · 0.70
createFiberFunction · 0.70

Tested by

no test coverage detected