diff options
Diffstat (limited to 'packages/gitbook-core')
-rw-r--r-- | packages/gitbook-core/.babelrc | 3 | ||||
-rw-r--r-- | packages/gitbook-core/package.json | 9 | ||||
-rw-r--r-- | packages/gitbook-core/src/components/Application.js | 10 | ||||
-rw-r--r-- | packages/gitbook-core/src/components/InjectedComponent.js | 6 | ||||
-rw-r--r-- | packages/gitbook-core/src/index.js | 2 | ||||
-rw-r--r-- | packages/gitbook-core/src/renderComponent.js | 25 |
6 files changed, 41 insertions, 14 deletions
diff --git a/packages/gitbook-core/.babelrc b/packages/gitbook-core/.babelrc new file mode 100644 index 0000000..5f27bda --- /dev/null +++ b/packages/gitbook-core/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015", "react", "stage-2"] +} diff --git a/packages/gitbook-core/package.json b/packages/gitbook-core/package.json index 16de7c6..6e6c2e7 100644 --- a/packages/gitbook-core/package.json +++ b/packages/gitbook-core/package.json @@ -7,8 +7,15 @@ "immutable": "^3.8.1", "react": "^15.3.1", "react-dom": "^15.3.1", + "react-helmet": "^3.1.0", "react-redux": "^4.4.5", - "redux": "^3.5.2" + "redux": "^3.5.2", + "redux-thunk": "^2.1.0" + }, + "devDependencies": { + "babel-preset-es2015": "^6.14.0", + "babel-preset-react": "^6.11.1", + "babel-preset-stage-2": "^6.13.0" }, "repository": { "type": "git", diff --git a/packages/gitbook-core/src/components/Application.js b/packages/gitbook-core/src/components/Application.js deleted file mode 100644 index 3414a37..0000000 --- a/packages/gitbook-core/src/components/Application.js +++ /dev/null @@ -1,10 +0,0 @@ -const React = require('react'); -const { InjectedComponent } = require('./components/InjectedComponent'); - -const Application = React.createClass({ - render() { - return <InjectedComponent matching={{ role: 'Body' }} /> - } -}); - -module.exports = Application; diff --git a/packages/gitbook-core/src/components/InjectedComponent.js b/packages/gitbook-core/src/components/InjectedComponent.js index f8e5b04..39b48b2 100644 --- a/packages/gitbook-core/src/components/InjectedComponent.js +++ b/packages/gitbook-core/src/components/InjectedComponent.js @@ -1,5 +1,5 @@ const React = require('react'); -const connect = require('./connect'); +const ReactRedux = require('react-redux'); const UnsafeComponent = require('./UnsafeComponent'); const { findMatchingComponents } = require('../actions/components'); @@ -65,11 +65,11 @@ function mapStateToProps(state, props) { } module.exports = { - InjectedComponent: connect(InjectedComponentSet, (state, props) => { + InjectedComponent: ReactRedux.connect(InjectedComponentSet, (state, props) => { const result = mapStateToProps(state, props); result.components = result.components.slice(0, 1); result.withContainer = false; return result; }), - InjectedComponentSet: connect(InjectedComponentSet, mapStateToProps) + InjectedComponentSet: ReactRedux.connect(InjectedComponentSet, mapStateToProps) }; diff --git a/packages/gitbook-core/src/index.js b/packages/gitbook-core/src/index.js index dcd7580..4a2f21f 100644 --- a/packages/gitbook-core/src/index.js +++ b/packages/gitbook-core/src/index.js @@ -5,6 +5,7 @@ const connect = require('./connect'); const createPlugin = require('./createPlugin'); const createReducer = require('./createReducer'); const createStore = require('./createStore'); +const renderComponent = require('./renderComponent'); module.exports = { ACTIONS, @@ -12,6 +13,7 @@ module.exports = { createPlugin, createReducer, createStore, + renderComponent, registerComponent, InjectedComponent, InjectedComponentSet diff --git a/packages/gitbook-core/src/renderComponent.js b/packages/gitbook-core/src/renderComponent.js new file mode 100644 index 0000000..365a037 --- /dev/null +++ b/packages/gitbook-core/src/renderComponent.js @@ -0,0 +1,25 @@ +const React = require('react'); +const Helmet = require('react-helmet'); +const ReactRedux = require('react-redux'); +const { InjectedComponent } = require('./components/InjectedComponent'); + +/** + * Render a registered component from a store. + * This method is intended for server-side use in "gitbook". + * + * @param {ReduxStore} store + * @param {Descriptor} matching + * @return {Object} { el, meta } + */ +function renderComponent(store, matching) { + const el = ( + <ReactRedux.Provider store={store}> + <InjectedComponent matching={matching} /> + </ReactRedux.Provider> + ); + const head = Helmet.rewind(); + + return { el, head }; +} + +module.exports = renderComponent; |