summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-core/src/models/Plugin.js
blob: 07b1976b01fe7611f7c9f8988e508a18325ad85b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const { Record } = require('immutable');

const DEFAULTS = {
    activate:   ((dispatch, getState) => {}),
    deactivate: ((dispatch, getState) => {}),
    reduce:     ((state, action) => state),
    actions:    {}
};

class Plugin extends Record(DEFAULTS) {
    constructor(plugin) {
        super({
            activate:   plugin.activate || DEFAULTS.activate,
            deactivate: plugin.deactivate || DEFAULTS.deactivate,
            reduce:     plugin.reduce || DEFAULTS.reduce,
            actions:    plugin.actions || DEFAULTS.actions
        });
    }
}

module.exports = Plugin;