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

Function ReactFiberNewContext

code/styling/public/app.js:12504–12553  ·  view source on GitHub ↗
(stack)

Source from the content-addressed store, hash-verified

12502};
12503
12504var ReactFiberNewContext = function (stack) {
12505 var createCursor = stack.createCursor,
12506 push = stack.push,
12507 pop = stack.pop;
12508
12509
12510 var providerCursor = createCursor(null);
12511 var valueCursor = createCursor(null);
12512 var changedBitsCursor = createCursor(0);
12513
12514 var rendererSigil = void 0;
12515 {
12516 // Use this to detect multiple renderers using the same context
12517 rendererSigil = {};
12518 }
12519
12520 function pushProvider(providerFiber) {
12521 var context = providerFiber.type.context;
12522
12523 push(changedBitsCursor, context._changedBits, providerFiber);
12524 push(valueCursor, context._currentValue, providerFiber);
12525 push(providerCursor, providerFiber, providerFiber);
12526
12527 context._currentValue = providerFiber.pendingProps.value;
12528 context._changedBits = providerFiber.stateNode;
12529
12530 {
12531 warning(context._currentRenderer === null || context._currentRenderer === rendererSigil, 'Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
12532 context._currentRenderer = rendererSigil;
12533 }
12534 }
12535
12536 function popProvider(providerFiber) {
12537 var changedBits = changedBitsCursor.current;
12538 var currentValue = valueCursor.current;
12539
12540 pop(providerCursor, providerFiber);
12541 pop(valueCursor, providerFiber);
12542 pop(changedBitsCursor, providerFiber);
12543
12544 var context = providerFiber.type.context;
12545 context._currentValue = currentValue;
12546 context._changedBits = changedBits;
12547 }
12548
12549 return {
12550 pushProvider: pushProvider,
12551 popProvider: popProvider
12552 };
12553};
12554
12555var ReactFiberStack = function () {
12556 var valueStack = [];

Callers 1

ReactFiberSchedulerFunction · 0.70

Calls 1

createCursorFunction · 0.70

Tested by

no test coverage detected