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

Function ReactFiberNewContext

code/new-context-api/public/app.js:11865–11914  ·  view source on GitHub ↗
(stack)

Source from the content-addressed store, hash-verified

11863};
11864
11865var ReactFiberNewContext = function (stack) {
11866 var createCursor = stack.createCursor,
11867 push = stack.push,
11868 pop = stack.pop;
11869
11870
11871 var providerCursor = createCursor(null);
11872 var valueCursor = createCursor(null);
11873 var changedBitsCursor = createCursor(0);
11874
11875 var rendererSigil = void 0;
11876 {
11877 // Use this to detect multiple renderers using the same context
11878 rendererSigil = {};
11879 }
11880
11881 function pushProvider(providerFiber) {
11882 var context = providerFiber.type.context;
11883
11884 push(changedBitsCursor, context._changedBits, providerFiber);
11885 push(valueCursor, context._currentValue, providerFiber);
11886 push(providerCursor, providerFiber, providerFiber);
11887
11888 context._currentValue = providerFiber.pendingProps.value;
11889 context._changedBits = providerFiber.stateNode;
11890
11891 {
11892 warning(context._currentRenderer === null || context._currentRenderer === rendererSigil, 'Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
11893 context._currentRenderer = rendererSigil;
11894 }
11895 }
11896
11897 function popProvider(providerFiber) {
11898 var changedBits = changedBitsCursor.current;
11899 var currentValue = valueCursor.current;
11900
11901 pop(providerCursor, providerFiber);
11902 pop(valueCursor, providerFiber);
11903 pop(changedBitsCursor, providerFiber);
11904
11905 var context = providerFiber.type.context;
11906 context._currentValue = currentValue;
11907 context._changedBits = changedBits;
11908 }
11909
11910 return {
11911 pushProvider: pushProvider,
11912 popProvider: popProvider
11913 };
11914};
11915
11916var ReactFiberStack = function () {
11917 var valueStack = [];

Callers 1

ReactFiberSchedulerFunction · 0.70

Calls 1

createCursorFunction · 0.70

Tested by

no test coverage detected