mirror of
				https://github.com/Redocly/redoc.git
				synced 2025-10-31 15:57:30 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as React from 'react';
 | |
| import { render } from 'react-dom';
 | |
| // tslint:disable-next-line
 | |
| import { AppContainer } from 'react-hot-loader';
 | |
| // import DevTools from 'mobx-react-devtools';
 | |
| 
 | |
| import { Redoc, RedocProps } from '../../src/components/Redoc/Redoc';
 | |
| import { AppStore } from '../../src/services/AppStore';
 | |
| import { RedocRawOptions } from '../../src/services/RedocNormalizedOptions';
 | |
| import { loadAndBundleSpec } from '../../src/utils/loadAndBundleSpec';
 | |
| 
 | |
| const renderRoot = (props: RedocProps) =>
 | |
|   render(
 | |
|     <AppContainer>
 | |
|       <Redoc {...props} />
 | |
|     </AppContainer>,
 | |
|     document.getElementById('example'),
 | |
|   );
 | |
| 
 | |
| const big = window.location.search.indexOf('big') > -1;
 | |
| const swagger = window.location.search.indexOf('swagger') > -1;
 | |
| 
 | |
| const userUrl = window.location.search.match(/url=(.*)$/);
 | |
| 
 | |
| const specUrl =
 | |
|   (userUrl && userUrl[1]) || (swagger ? 'swagger.yaml' : big ? 'big-openapi.json' : 'openapi.yaml');
 | |
| 
 | |
| let store;
 | |
| const options: RedocRawOptions = { nativeScrollbars: false, maxDisplayedEnumValues: 3 };
 | |
| 
 | |
| async function init() {
 | |
|   const spec = await loadAndBundleSpec(specUrl);
 | |
|   store = new AppStore(spec, specUrl, options);
 | |
|   renderRoot({ store });
 | |
| }
 | |
| 
 | |
| init();
 | |
| 
 | |
| if (module.hot) {
 | |
|   const reload = (reloadStore = false) => async () => {
 | |
|     if (reloadStore) {
 | |
|       // create a new Store
 | |
|       store.dispose();
 | |
| 
 | |
|       const state = await store.toJS();
 | |
|       store = AppStore.fromJS(state);
 | |
|     }
 | |
| 
 | |
|     renderRoot({ store });
 | |
|   };
 | |
| 
 | |
|   module.hot.accept(['../../src/components/Redoc/Redoc'], reload());
 | |
|   module.hot.accept(['../../src/services/AppStore'], reload(true));
 | |
| }
 |