67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
/* 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);
|
|
};
|