2018-02-28 15:45:16 -05:00
|
|
|
import React from 'react';
|
|
|
|
import { render } from 'react-dom';
|
|
|
|
import { Provider } from 'react-redux';
|
|
|
|
import { Route } from 'react-router-dom';
|
|
|
|
import { ConnectedRouter } from 'react-router-redux';
|
|
|
|
import history from 'Routing/history';
|
|
|
|
import configureStore from 'Redux/configureStore';
|
|
|
|
import { mergeConfig } from 'Actions/config';
|
|
|
|
import { setStore } from 'ValueObjects/AssetProxy';
|
|
|
|
import { ErrorBoundary } from 'UI'
|
|
|
|
import App from 'App/App';
|
|
|
|
import 'EditorWidgets';
|
|
|
|
import 'MarkdownPlugins';
|
|
|
|
import './index.css';
|
|
|
|
|
2018-03-06 17:14:09 -05:00
|
|
|
function bootstrap(opts = {}) {
|
|
|
|
|
|
|
|
const { config } = opts;
|
|
|
|
|
2018-02-28 15:45:16 -05:00
|
|
|
/**
|
|
|
|
* Log the version number.
|
|
|
|
*/
|
|
|
|
console.log(`Netlify CMS version ${NETLIFY_CMS_VERSION}`);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create mount element dynamically.
|
|
|
|
*/
|
|
|
|
const el = document.createElement('div');
|
|
|
|
el.id = 'nc-root';
|
|
|
|
document.body.appendChild(el);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Configure Redux store.
|
|
|
|
*/
|
|
|
|
const store = configureStore();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatch config to store if received. This config will be merged into
|
|
|
|
* config.yml if it exists, and any portion that produces a conflict will be
|
|
|
|
* overwritten.
|
|
|
|
*/
|
|
|
|
if (config) {
|
|
|
|
store.dispatch(mergeConfig(config));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pass initial state into AssetProxy factory.
|
|
|
|
*/
|
|
|
|
setStore(store);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create connected root component.
|
|
|
|
*/
|
|
|
|
const Root = () => (
|
|
|
|
<ErrorBoundary>
|
|
|
|
<Provider store={store}>
|
|
|
|
<ConnectedRouter history={history}>
|
|
|
|
<Route component={App}/>
|
|
|
|
</ConnectedRouter>
|
|
|
|
</Provider>
|
|
|
|
</ErrorBoundary>
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Render application root.
|
|
|
|
*/
|
|
|
|
render(<Root />, el);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default bootstrap;
|