diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-09-24 23:24:47 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-09-24 23:24:47 +0200 |
commit | fab88bb47e71ad47c928198ddbf7a4d0527e81bb (patch) | |
tree | d218193c775e125e0043d21ee216eed531f01b1b /packages/gitbook-core | |
parent | fa7cf3a65f7a19b2870e6d92c2e110e2356189ae (diff) | |
download | gitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.zip gitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.tar.gz gitbook-fab88bb47e71ad47c928198ddbf7a4d0527e81bb.tar.bz2 |
Add flex box components
Diffstat (limited to 'packages/gitbook-core')
-rw-r--r-- | packages/gitbook-core/package.json | 3 | ||||
-rw-r--r-- | packages/gitbook-core/src/composeReducer.js | 16 | ||||
-rw-r--r-- | packages/gitbook-core/src/createReducer.js | 2 | ||||
-rw-r--r-- | packages/gitbook-core/src/createStore.js | 9 | ||||
-rw-r--r-- | packages/gitbook-core/src/index.js | 5 |
5 files changed, 29 insertions, 6 deletions
diff --git a/packages/gitbook-core/package.json b/packages/gitbook-core/package.json index 1137d32..c00c6cc 100644 --- a/packages/gitbook-core/package.json +++ b/packages/gitbook-core/package.json @@ -13,7 +13,8 @@ "react-redux": "^4.4.5", "react-safe-html": "^0.3.0", "redux": "^3.5.2", - "redux-thunk": "^2.1.0" + "redux-thunk": "^2.1.0", + "reflexbox": "^2.2.2" }, "devDependencies": { "babel-cli": "^6.14.0", diff --git a/packages/gitbook-core/src/composeReducer.js b/packages/gitbook-core/src/composeReducer.js new file mode 100644 index 0000000..fa2a589 --- /dev/null +++ b/packages/gitbook-core/src/composeReducer.js @@ -0,0 +1,16 @@ + +/** + * Compose multiple reducers into one + * @param {Function} reducers + * @return {Function} + */ +function composeReducer(...reducers) { + return (state, action) => { + return reducers.reduce( + (newState, reducer) => reducer(newState, action), + state + ); + }; +} + +module.exports = composeReducer; diff --git a/packages/gitbook-core/src/createReducer.js b/packages/gitbook-core/src/createReducer.js index 4af6373..6860277 100644 --- a/packages/gitbook-core/src/createReducer.js +++ b/packages/gitbook-core/src/createReducer.js @@ -7,7 +7,7 @@ * @return {Function(state, action): state} */ function createReducer(name, reduce) { - return function(state, action) { + return (state, action) => { const value = state[name]; state[name] = reduce(value, action); return state; diff --git a/packages/gitbook-core/src/createStore.js b/packages/gitbook-core/src/createStore.js index 6f90b77..201a647 100644 --- a/packages/gitbook-core/src/createStore.js +++ b/packages/gitbook-core/src/createStore.js @@ -2,6 +2,7 @@ const Redux = require('redux'); const ReduxThunk = require('redux-thunk').default; const coreReducers = require('./reducers'); +const composeReducer = require('./composeReducer'); /** * Create a new redux store from an initial state and a list of plugins. @@ -13,12 +14,12 @@ const coreReducers = require('./reducers'); */ function createStore(plugins, initialState) { const pluginReducers = plugins.map(plugin => plugin.onReduceState); + const reducer = composeReducer(...[coreReducers].concat(pluginReducers)); + const store = Redux.createStore( (state, action) => { - return pluginReducers.reduce( - (newState, reducer) => reducer(newState, action), - coreReducers(state, action) - ); + console.log('[store]', action.type); + return reducer(state, action); }, initialState, Redux.compose(Redux.applyMiddleware(ReduxThunk)) diff --git a/packages/gitbook-core/src/index.js b/packages/gitbook-core/src/index.js index 46892e4..0a5d8c5 100644 --- a/packages/gitbook-core/src/index.js +++ b/packages/gitbook-core/src/index.js @@ -1,5 +1,6 @@ const Head = require('react-helmet'); const { Provider } = require('react-redux'); +const { Flex, Box } = require('reflexbox'); const { InjectedComponent, InjectedComponentSet } = require('./components/InjectedComponent'); const { ImportLink, ImportScript, ImportCSS } = require('./components/Import'); @@ -13,6 +14,7 @@ const connect = require('./connect'); const createPlugin = require('./createPlugin'); const createReducer = require('./createReducer'); const createStore = require('./createStore'); +const composeReducer = require('./composeReducer'); const bootstrap = require('./bootstrap'); const renderWithStore = require('./renderWithStore'); @@ -24,6 +26,7 @@ module.exports = { createPlugin, createReducer, createStore, + composeReducer, registerComponent, // React Components InjectedComponent, @@ -34,6 +37,8 @@ module.exports = { ImportLink, ImportScript, ImportCSS, + FlexLayout: Flex, + FlexBox: Box, // Utilities Shapes }; |