summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook-core')
-rw-r--r--packages/gitbook-core/.babelrc3
-rw-r--r--packages/gitbook-core/package.json9
-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
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;