diff options
Diffstat (limited to 'packages/gitbook-plugin-lunr/src/reducer.js')
-rw-r--r-- | packages/gitbook-plugin-lunr/src/reducer.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/gitbook-plugin-lunr/src/reducer.js b/packages/gitbook-plugin-lunr/src/reducer.js new file mode 100644 index 0000000..7e317c4 --- /dev/null +++ b/packages/gitbook-plugin-lunr/src/reducer.js @@ -0,0 +1,31 @@ +const lunr = require('lunr'); +const GitBook = require('gitbook-core'); +const { Record } = GitBook.Immutable; + +const { TYPES } = require('./actions'); + +/* + We store the lunr index an the document index in the store. + */ + +const LunrState = Record({ + idx: null, + store: {} +}); + +module.exports = GitBook.createReducer('lunr', (state, action) => { + state = state || LunrState(); + + switch (action.type) { + + case TYPES.LOAD: + return state + .set('idx', lunr.Index.load(action.json.index)) + .merge({ + store: action.json.store + }); + + default: + return state; + } +}); |