mirror of
				https://github.com/Redocly/redoc.git
				synced 2025-11-04 01:37:32 +03:00 
			
		
		
		
	chore: refactor, rename StoreProvider to StoreBuilder
This commit is contained in:
		
							parent
							
								
									dba3995e89
								
							
						
					
					
						commit
						d731518c8c
					
				| 
						 | 
					@ -13,6 +13,7 @@ import { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSideba
 | 
				
			||||||
import { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements';
 | 
					import { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { SearchBox } from '../SearchBox/SearchBox';
 | 
					import { SearchBox } from '../SearchBox/SearchBox';
 | 
				
			||||||
 | 
					import { StoreProvider } from '../StoreBuilder';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface RedocProps {
 | 
					export interface RedocProps {
 | 
				
			||||||
  store: AppStore;
 | 
					  store: AppStore;
 | 
				
			||||||
| 
						 | 
					@ -38,6 +39,7 @@ export class Redoc extends React.Component<RedocProps> {
 | 
				
			||||||
    const store = this.props.store;
 | 
					    const store = this.props.store;
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <ThemeProvider theme={options.theme}>
 | 
					      <ThemeProvider theme={options.theme}>
 | 
				
			||||||
 | 
					        <StoreProvider value={this.props.store}>
 | 
				
			||||||
          <OptionsProvider value={options}>
 | 
					          <OptionsProvider value={options}>
 | 
				
			||||||
            <RedocWrap className="redoc-wrap">
 | 
					            <RedocWrap className="redoc-wrap">
 | 
				
			||||||
              <StickyResponsiveSidebar menu={menu} className="menu-content">
 | 
					              <StickyResponsiveSidebar menu={menu} className="menu-content">
 | 
				
			||||||
| 
						 | 
					@ -55,12 +57,13 @@ export class Redoc extends React.Component<RedocProps> {
 | 
				
			||||||
              </StickyResponsiveSidebar>
 | 
					              </StickyResponsiveSidebar>
 | 
				
			||||||
              <ApiContentWrap className="api-content">
 | 
					              <ApiContentWrap className="api-content">
 | 
				
			||||||
                <ApiInfo store={store} />
 | 
					                <ApiInfo store={store} />
 | 
				
			||||||
              <ApiDescription store={store} />
 | 
					                <ApiDescription description={store.spec.info.description} />
 | 
				
			||||||
                <ContentItems items={menu.items as any} />
 | 
					                <ContentItems items={menu.items as any} />
 | 
				
			||||||
              </ApiContentWrap>
 | 
					              </ApiContentWrap>
 | 
				
			||||||
              <BackgroundStub />
 | 
					              <BackgroundStub />
 | 
				
			||||||
            </RedocWrap>
 | 
					            </RedocWrap>
 | 
				
			||||||
          </OptionsProvider>
 | 
					          </OptionsProvider>
 | 
				
			||||||
 | 
					        </StoreProvider>
 | 
				
			||||||
      </ThemeProvider>
 | 
					      </ThemeProvider>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ import { RedocNormalizedOptions, RedocRawOptions } from '../services/RedocNormal
 | 
				
			||||||
import { ErrorBoundary } from './ErrorBoundary';
 | 
					import { ErrorBoundary } from './ErrorBoundary';
 | 
				
			||||||
import { Loading } from './Loading/Loading';
 | 
					import { Loading } from './Loading/Loading';
 | 
				
			||||||
import { Redoc } from './Redoc/Redoc';
 | 
					import { Redoc } from './Redoc/Redoc';
 | 
				
			||||||
import { StoreProvider } from './StoreProvider';
 | 
					import { StoreBuilder } from './StoreBuilder';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface RedocStandaloneProps {
 | 
					export interface RedocStandaloneProps {
 | 
				
			||||||
  spec?: object;
 | 
					  spec?: object;
 | 
				
			||||||
| 
						 | 
					@ -44,7 +44,7 @@ export class RedocStandalone extends React.PureComponent<RedocStandaloneProps> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <ErrorBoundary>
 | 
					      <ErrorBoundary>
 | 
				
			||||||
        <StoreProvider spec={spec} specUrl={specUrl} options={options} onLoaded={onLoaded}>
 | 
					        <StoreBuilder spec={spec} specUrl={specUrl} options={options} onLoaded={onLoaded}>
 | 
				
			||||||
          {({ loading, store }) =>
 | 
					          {({ loading, store }) =>
 | 
				
			||||||
            !loading ? (
 | 
					            !loading ? (
 | 
				
			||||||
              <Redoc store={store!} />
 | 
					              <Redoc store={store!} />
 | 
				
			||||||
| 
						 | 
					@ -52,7 +52,7 @@ export class RedocStandalone extends React.PureComponent<RedocStandaloneProps> {
 | 
				
			||||||
              <Loading color={normalizedOpts.theme.colors.primary.main} />
 | 
					              <Loading color={normalizedOpts.theme.colors.primary.main} />
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        </StoreProvider>
 | 
					        </StoreBuilder>
 | 
				
			||||||
      </ErrorBoundary>
 | 
					      </ErrorBoundary>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,11 @@
 | 
				
			||||||
import memoize from 'memoize-one';
 | 
					import memoize from 'memoize-one';
 | 
				
			||||||
import { Component } from 'react';
 | 
					import { Component, createContext } from 'react';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { AppStore } from '../services/';
 | 
					import { AppStore } from '../services/';
 | 
				
			||||||
import { RedocRawOptions } from '../services/RedocNormalizedOptions';
 | 
					import { RedocRawOptions } from '../services/RedocNormalizedOptions';
 | 
				
			||||||
import { loadAndBundleSpec } from '../utils';
 | 
					import { loadAndBundleSpec } from '../utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface StoreProviderProps {
 | 
					export interface StoreBuilderProps {
 | 
				
			||||||
  specUrl?: string;
 | 
					  specUrl?: string;
 | 
				
			||||||
  spec?: object;
 | 
					  spec?: object;
 | 
				
			||||||
  store?: AppStore;
 | 
					  store?: AppStore;
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ export interface StoreProviderProps {
 | 
				
			||||||
  children: (props: { loading: boolean; store?: AppStore }) => any;
 | 
					  children: (props: { loading: boolean; store?: AppStore }) => any;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface StoreProviderState {
 | 
					export interface StoreBuilderState {
 | 
				
			||||||
  error?: Error;
 | 
					  error?: Error;
 | 
				
			||||||
  loading: boolean;
 | 
					  loading: boolean;
 | 
				
			||||||
  resolvedSpec?: any;
 | 
					  resolvedSpec?: any;
 | 
				
			||||||
| 
						 | 
					@ -25,8 +25,11 @@ export interface StoreProviderState {
 | 
				
			||||||
  prevSpecUrl?: string;
 | 
					  prevSpecUrl?: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class StoreProvider extends Component<StoreProviderProps, StoreProviderState> {
 | 
					const { Provider, Consumer } = createContext<AppStore | undefined>(undefined);
 | 
				
			||||||
  static getDerivedStateFromProps(nextProps: StoreProviderProps, prevState: StoreProviderState) {
 | 
					export { Provider as StoreProvider, Consumer as StoreConsumer };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class StoreBuilder extends Component<StoreBuilderProps, StoreBuilderState> {
 | 
				
			||||||
 | 
					  static getDerivedStateFromProps(nextProps: StoreBuilderProps, prevState: StoreBuilderState) {
 | 
				
			||||||
    if (nextProps.specUrl !== prevState.prevSpecUrl || nextProps.spec !== prevState.prevSpec) {
 | 
					    if (nextProps.specUrl !== prevState.prevSpecUrl || nextProps.spec !== prevState.prevSpec) {
 | 
				
			||||||
      return {
 | 
					      return {
 | 
				
			||||||
        loading: true,
 | 
					        loading: true,
 | 
				
			||||||
| 
						 | 
					@ -39,7 +42,7 @@ export class StoreProvider extends Component<StoreProviderProps, StoreProviderSt
 | 
				
			||||||
    return null;
 | 
					    return null;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  state: StoreProviderState = {
 | 
					  state: StoreBuilderState = {
 | 
				
			||||||
    loading: true,
 | 
					    loading: true,
 | 
				
			||||||
    resolvedSpec: null,
 | 
					    resolvedSpec: null,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ export * from './PayloadSamples/PayloadSamples';
 | 
				
			||||||
export * from './MediaTypeSwitch/MediaTypesSwitch';
 | 
					export * from './MediaTypeSwitch/MediaTypesSwitch';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export * from './ErrorBoundary';
 | 
					export * from './ErrorBoundary';
 | 
				
			||||||
export * from './StoreProvider';
 | 
					export * from './StoreBuilder';
 | 
				
			||||||
export * from './OptionsProvider';
 | 
					export * from './OptionsProvider';
 | 
				
			||||||
export * from './SideMenu/';
 | 
					export * from './SideMenu/';
 | 
				
			||||||
export * from './StickySidebar/StickyResponsiveSidebar';
 | 
					export * from './StickySidebar/StickyResponsiveSidebar';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user