diff --git a/packages/gitbook-core/src/components/InjectedComponent.js b/packages/gitbook-core/src/components/InjectedComponent.js index f8b1ab833..a4f81fe09 100644 --- a/packages/gitbook-core/src/components/InjectedComponent.js +++ b/packages/gitbook-core/src/components/InjectedComponent.js @@ -29,17 +29,18 @@ const { findMatchingComponents } = require('../actions/components'); const Injection = React.createClass({ propTypes: { component: React.PropTypes.func, - props: React.PropTypes.object + props: React.PropTypes.object, + children: React.PropTypes.node }, render() { const Comp = this.props.component; - const { props } = this.props; + const { props, children } = this.props; if (Comp.sandbox === false) { - return ; + return {children}; } else { - return ; + return {children}; } } }); @@ -82,7 +83,6 @@ const InjectedComponent = React.createClass({ render() { const { components, props, children } = this.props; - const base = children ? React.Children.only(children) : undefined; return components.reduce((inner, Comp) => { return ( @@ -90,7 +90,7 @@ const InjectedComponent = React.createClass({ {inner} ); - }, base); + }, children); } }); diff --git a/packages/gitbook-core/src/components/UnsafeComponent.js b/packages/gitbook-core/src/components/UnsafeComponent.js index 81ec239ef..3534f456a 100644 --- a/packages/gitbook-core/src/components/UnsafeComponent.js +++ b/packages/gitbook-core/src/components/UnsafeComponent.js @@ -22,7 +22,8 @@ const isServerSide = typeof window === 'undefined'; const UnsafeComponent = React.createClass({ propTypes: { Component: React.PropTypes.func.isRequired, - props: React.PropTypes.object + props: React.PropTypes.object, + children: React.PropTypes.node }, contextTypes: { store: React.PropTypes.object @@ -41,12 +42,12 @@ const UnsafeComponent = React.createClass({ }, getInjected() { - const { Component, props } = this.props; + const { Component, props, children } = this.props; const { store } = this.context; return ( - + {children} ); }, diff --git a/packages/gitbook-core/src/index.js b/packages/gitbook-core/src/index.js index 9b29c9188..b4b2abd66 100644 --- a/packages/gitbook-core/src/index.js +++ b/packages/gitbook-core/src/index.js @@ -1,4 +1,5 @@ const Head = require('react-helmet'); +const { Provider } = require('react-redux'); const { InjectedComponent, InjectedComponentSet } = require('./components/InjectedComponent'); const HTMLContent = require('./components/HTMLContent'); @@ -11,7 +12,6 @@ const connect = require('./connect'); const createPlugin = require('./createPlugin'); const createReducer = require('./createReducer'); const createStore = require('./createStore'); -const renderComponent = require('./renderComponent'); module.exports = { ACTIONS, @@ -19,13 +19,13 @@ module.exports = { createPlugin, createReducer, createStore, - renderComponent, registerComponent, // React Components InjectedComponent, InjectedComponentSet, HTMLContent, Head, + Provider, // Utilities Shapes }; diff --git a/packages/gitbook-core/src/renderComponent.js b/packages/gitbook-core/src/renderComponent.js deleted file mode 100644 index 14e7bf887..000000000 --- a/packages/gitbook-core/src/renderComponent.js +++ /dev/null @@ -1,25 +0,0 @@ -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 = ( - - - - ); - const getHead = Helmet.rewind; - - return { el, getHead }; -} - -module.exports = renderComponent; diff --git a/packages/gitbook-plugin-theme-default/src/index.js b/packages/gitbook-plugin-theme-default/src/index.js index 86b2135da..6499d5a09 100644 --- a/packages/gitbook-plugin-theme-default/src/index.js +++ b/packages/gitbook-plugin-theme-default/src/index.js @@ -6,11 +6,12 @@ const Page = require('./Page'); let ThemeBody = React.createClass({ propTypes: { - page: GitBook.Shapes.Page + page: GitBook.Shapes.Page, + children: React.PropTypes.node }, render() { - const { page } = this.props; + const { page, children } = this.props; return (
@@ -21,6 +22,7 @@ let ThemeBody = React.createClass({ + {children}
); } diff --git a/packages/gitbook/src/browser/render.js b/packages/gitbook/src/browser/render.js index e39727969..ee4600aac 100644 --- a/packages/gitbook/src/browser/render.js +++ b/packages/gitbook/src/browser/render.js @@ -2,9 +2,10 @@ const React = require('react'); const ReactDOMServer = require('react-dom/server'); const GitBook = require('gitbook-core'); -function HTML({head, innerHTML, props}) { +const loadPlugins = require('./loadPlugins'); + +function HTML({head, innerHTML}) { const attrs = head.htmlAttributes.toComponent(); - const propsJSON = JSON.stringify(props); return ( @@ -17,40 +18,58 @@ function HTML({head, innerHTML, props}) {
{head.script.toComponent()} -