@@ -123,33 +123,6 @@ if (__DEV__) {
123123 } ;
124124}
125125
126- // Context (new API)
127- let providerStack : Array < ReactProvider < any >> = [ ] ; // Stack of provider objects
128- let index = - 1 ;
129-
130- export function pushProvider < T > ( provider : ReactProvider < T > ) : void {
131- index + = 1 ;
132- providerStack [ index ] = provider ;
133- const context : ReactContext < any > = provider . type . context ;
134- context . currentProvider = provider ;
135- }
136-
137- export function popProvider < T > ( provider : ReactProvider < T > ) : void {
138- if ( __DEV__ ) {
139- warning ( index > - 1 && provider === providerStack [ index ] , 'Unexpected pop.' ) ;
140- }
141- // $FlowFixMe - Intentionally unsound
142- providerStack [ index ] = null ;
143- index -= 1 ;
144- const context : ReactContext < any > = provider . type . context ;
145- if ( index < 0 ) {
146- context . currentProvider = null ;
147- } else {
148- const previousProvider = providerStack [ index ] ;
149- context . currentProvider = previousProvider ;
150- }
151- }
152-
153126let didWarnDefaultInputValue = false ;
154127let didWarnDefaultChecked = false ;
155128let didWarnDefaultSelectValue = false ;
@@ -565,6 +538,9 @@ class ReactDOMServerRenderer {
565538 previousWasTextNode: boolean;
566539 makeStaticMarkup: boolean;
567540
541+ providerStack: Array< ReactProvider < any > > ;
542+ providerIndex: number ;
543+
568544 constructor ( children : mixed , makeStaticMarkup : boolean ) {
569545 const flatChildren = flattenTopLevelChildren ( children ) ;
570546
@@ -586,6 +562,37 @@ class ReactDOMServerRenderer {
586562 this . currentSelectValue = null ;
587563 this . previousWasTextNode = false ;
588564 this . makeStaticMarkup = makeStaticMarkup ;
565+
566+ // Context (new API)
567+ this . providerStack = [ ] ; // Stack of provider objects
568+ this . providerIndex = - 1 ;
569+ }
570+
571+ pushProvider < T > ( provider : ReactProvider < T > ) : void {
572+ this. providerIndex += 1 ;
573+ this . providerStack [ this . providerIndex ] = provider ;
574+ const context : ReactContext < any > = provider.type.context;
575+ context.currentProvider = provider;
576+ }
577+
578+ popProvider < T > (provider: ReactProvider< T > ): void {
579+ if ( __DEV__ ) {
580+ warning (
581+ this . providerIndex > - 1 &&
582+ provider === this . providerStack [ this . providerIndex ] ,
583+ 'Unexpected pop.' ,
584+ ) ;
585+ }
586+ // $FlowFixMe - Intentionally unsound
587+ this.providerStack[this.providerIndex] = null;
588+ this.providerIndex -= 1;
589+ const context: ReactContext< any > = provider.type.context;
590+ if (this.providerIndex < 0 ) {
591+ context . currentProvider = null ;
592+ } else {
593+ const previousProvider = this . providerStack [ this . providerIndex ] ;
594+ context . currentProvider = previousProvider ;
595+ }
589596 }
590597
591598 read ( bytes : number ) : string | null {
@@ -615,7 +622,7 @@ class ReactDOMServerRenderer {
615622 frame . type . type . $$typeof === REACT_PROVIDER_TYPE
616623 ) {
617624 const provider : ReactProvider < any > = ( frame . type : any ) ;
618- popProvider ( provider ) ;
625+ this . popProvider ( provider ) ;
619626 }
620627 continue;
621628 }
@@ -743,7 +750,7 @@ class ReactDOMServerRenderer {
743750 ( ( frame : any ) : FrameDev ) . debugElementStack = [ ] ;
744751 }
745752
746- pushProvider ( provider ) ;
753+ this . pushProvider ( provider ) ;
747754
748755 this . stack . push ( frame ) ;
749756 return '' ;
0 commit comments