diff options
Diffstat (limited to 'packages/gitbook-core/src/lib/createContext.js')
-rw-r--r-- | packages/gitbook-core/src/lib/createContext.js | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/packages/gitbook-core/src/lib/createContext.js b/packages/gitbook-core/src/lib/createContext.js index fdc0e0c..1b834e4 100644 --- a/packages/gitbook-core/src/lib/createContext.js +++ b/packages/gitbook-core/src/lib/createContext.js @@ -1,15 +1,22 @@ /* eslint-disable no-console */ -const { Record } = require('immutable'); const Redux = require('redux'); const ReduxThunk = require('redux-thunk').default; +const Plugin = require('./models/Plugin'); +const Context = require('./models/Context'); const coreReducers = require('../reducers'); const composeReducer = require('./composeReducer'); -const GitBookContext = Record({ - store: null, - actions: {} -}, 'GitBookContext'); +const Components = require('./actions/components'); +const I18n = require('./actions/i18n'); +const Navigation = require('./actions/navigation'); + +const corePlugin = Plugin({ + reduce: coreReducers, + actions: { + Components, I18n, Navigation + } +}); /** * Create a new context containing redux store from an initial state and a list of plugins. @@ -17,12 +24,14 @@ const GitBookContext = Record({ * * @param {Array<Plugin>} plugins * @param {Object} initialState - * @return {GitBookContext} context + * @return {Context} context */ function createContext(plugins, initialState) { + plugins = [corePlugin].concat(plugins); + // Compose the reducer from core with plugins const pluginReducers = plugins.map(plugin => plugin.reduce); - const reducer = composeReducer(...[coreReducers].concat(pluginReducers)); + const reducer = composeReducer(pluginReducers); // Get actions from all plugins const actions = plugins.reduce((accu, plugin) => { @@ -43,7 +52,7 @@ function createContext(plugins, initialState) { plugin.init(store.dispatch, store.getState, actions); }); - return GitBookContext({ + return Context({ store, actions }); |