summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core/src
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-09-05 14:02:49 +0200
committerSamy Pessé <samypesse@gmail.com>2016-09-05 14:02:49 +0200
commitff31514c669a7c9b04ee69c447dcf9e2da39f3da (patch)
treeb81b9bc9b12356dc1d9f7d8f8208be5631cc3d44 /packages/gitbook-core/src
parent3f1ec310ca0c634e1f63a1e00e485ea93916e810 (diff)
downloadgitbook-ff31514c669a7c9b04ee69c447dcf9e2da39f3da.zip
gitbook-ff31514c669a7c9b04ee69c447dcf9e2da39f3da.tar.gz
gitbook-ff31514c669a7c9b04ee69c447dcf9e2da39f3da.tar.bz2
Start bootstraping rendering with react in GitBook
Diffstat (limited to 'packages/gitbook-core/src')
-rw-r--r--packages/gitbook-core/src/components/Application.js10
-rw-r--r--packages/gitbook-core/src/components/InjectedComponent.js6
-rw-r--r--packages/gitbook-core/src/index.js2
-rw-r--r--packages/gitbook-core/src/renderComponent.js25
4 files changed, 30 insertions, 13 deletions
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;