Source code
Revision control
Copy as Markdown
Other Tools
/* 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
"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);
};