/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; const { BATCH_ACTIONS, } = require("resource://devtools/client/shared/redux/middleware/debounce.js"); /** * A enhancer for the store to handle batched actions. */ function enableBatching() { return next => (reducer, initialState, enhancer) => { function batchingReducer(state, action) { switch (action.type) { case BATCH_ACTIONS: return action.actions.reduce(batchingReducer, state); default: return reducer(state, action); } } if (typeof initialState === "function" && typeof enhancer === "undefined") { enhancer = initialState; initialState = undefined; } return next(batchingReducer, initialState, enhancer); }; } module.exports = enableBatching;