summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/extensions/reducers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/extensions/reducers/moz.build9
-rw-r--r--devtools/client/inspector/extensions/reducers/sidebar.js67
2 files changed, 76 insertions, 0 deletions
diff --git a/devtools/client/inspector/extensions/reducers/moz.build b/devtools/client/inspector/extensions/reducers/moz.build
new file mode 100644
index 0000000000..0f8a5757c8
--- /dev/null
+++ b/devtools/client/inspector/extensions/reducers/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+DevToolsModules(
+ "sidebar.js",
+)
diff --git a/devtools/client/inspector/extensions/reducers/sidebar.js b/devtools/client/inspector/extensions/reducers/sidebar.js
new file mode 100644
index 0000000000..c7566f3b67
--- /dev/null
+++ b/devtools/client/inspector/extensions/reducers/sidebar.js
@@ -0,0 +1,67 @@
+/* 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 {
+ EXTENSION_SIDEBAR_OBJECT_TREEVIEW_UPDATE,
+ EXTENSION_SIDEBAR_EXPRESSION_RESULT_VIEW_UPDATE,
+ EXTENSION_SIDEBAR_PAGE_UPDATE,
+ EXTENSION_SIDEBAR_REMOVE,
+} = require("resource://devtools/client/inspector/extensions/actions/index.js");
+
+const INITIAL_SIDEBAR = {};
+
+const reducers = {
+ [EXTENSION_SIDEBAR_OBJECT_TREEVIEW_UPDATE](sidebar, { sidebarId, object }) {
+ // Update the sidebar to a "object-treeview" which shows
+ // the passed object.
+ return Object.assign({}, sidebar, {
+ [sidebarId]: {
+ viewMode: "object-treeview",
+ object,
+ },
+ });
+ },
+
+ [EXTENSION_SIDEBAR_EXPRESSION_RESULT_VIEW_UPDATE](
+ sidebar,
+ { sidebarId, expressionResult, rootTitle }
+ ) {
+ // Update the sidebar to a "object-treeview" which shows
+ // the passed object.
+ return Object.assign({}, sidebar, {
+ [sidebarId]: {
+ viewMode: "object-value-grip-view",
+ expressionResult,
+ rootTitle,
+ },
+ });
+ },
+
+ [EXTENSION_SIDEBAR_PAGE_UPDATE](sidebar, { sidebarId, iframeURL }) {
+ // Update the sidebar to a "object-treeview" which shows
+ // the passed object.
+ return Object.assign({}, sidebar, {
+ [sidebarId]: {
+ viewMode: "extension-page",
+ iframeURL,
+ },
+ });
+ },
+
+ [EXTENSION_SIDEBAR_REMOVE](sidebar, { sidebarId }) {
+ // Remove the sidebar from the Redux store.
+ delete sidebar[sidebarId];
+ return Object.assign({}, sidebar);
+ },
+};
+
+module.exports = function (sidebar = INITIAL_SIDEBAR, action) {
+ const reducer = reducers[action.type];
+ if (!reducer) {
+ return sidebar;
+ }
+ return reducer(sidebar, action);
+};