summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/reducers/filters.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webconsole/reducers/filters.js')
-rw-r--r--devtools/client/webconsole/reducers/filters.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/devtools/client/webconsole/reducers/filters.js b/devtools/client/webconsole/reducers/filters.js
new file mode 100644
index 0000000000..61b993ada8
--- /dev/null
+++ b/devtools/client/webconsole/reducers/filters.js
@@ -0,0 +1,32 @@
+/* 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 constants = require("resource://devtools/client/webconsole/constants.js");
+
+const FilterState = overrides =>
+ Object.freeze(cloneState(constants.DEFAULT_FILTERS_VALUES, overrides));
+
+function filters(state = FilterState(), action) {
+ switch (action.type) {
+ case constants.FILTER_TOGGLE:
+ const { filter } = action;
+ const active = !state[filter];
+ return cloneState(state, { [filter]: active });
+ case constants.FILTERS_CLEAR:
+ return FilterState();
+ case constants.FILTER_TEXT_SET:
+ const { text } = action;
+ return cloneState(state, { [constants.FILTERS.TEXT]: text });
+ }
+
+ return state;
+}
+
+function cloneState(state, overrides) {
+ return Object.assign({}, state, overrides);
+}
+
+exports.FilterState = FilterState;
+exports.filters = filters;