@wordpress/edit-post
Version:
Edit Post module for WordPress.
305 lines (250 loc) • 8.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removedPanels = removedPanels;
exports.activeGeneralSidebar = activeGeneralSidebar;
exports.activeModal = activeModal;
exports.publishSidebarActive = publishSidebarActive;
exports.isSavingMetaBoxes = isSavingMetaBoxes;
exports.metaBoxLocations = metaBoxLocations;
exports.default = exports.preferences = exports.DEFAULT_ACTIVE_GENERAL_SIDEBAR = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread6 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _lodash = require("lodash");
var _data = require("@wordpress/data");
var _defaults = require("./defaults");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* The default active general sidebar: The "Document" tab.
*
* @type {string}
*/
var DEFAULT_ACTIVE_GENERAL_SIDEBAR = 'edit-post/document';
/**
* Higher-order reducer creator which provides the given initial state for the
* original reducer.
*
* @param {*} initialState Initial state to provide to reducer.
*
* @return {Function} Higher-order reducer.
*/
exports.DEFAULT_ACTIVE_GENERAL_SIDEBAR = DEFAULT_ACTIVE_GENERAL_SIDEBAR;
var createWithInitialState = function createWithInitialState(initialState) {
return function (reducer) {
return function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments.length > 1 ? arguments[1] : undefined;
return reducer(state, action);
};
};
};
/**
* Reducer returning the user preferences.
*
* @param {Object} state Current state.
* @param {string} state.mode Current editor mode, either
* "visual" or "text".
* @param {boolean} state.isGeneralSidebarDismissed Whether general sidebar is
* dismissed. False by default
* or when closing general
* sidebar, true when opening
* sidebar.
* @param {boolean} state.isSidebarOpened Whether the sidebar is
* opened or closed.
* @param {Object} state.panels The state of the different
* sidebar panels.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
var preferences = (0, _lodash.flow)([_data.combineReducers, createWithInitialState(_defaults.PREFERENCES_DEFAULTS)])({
isGeneralSidebarDismissed: function isGeneralSidebarDismissed(state, action) {
switch (action.type) {
case 'OPEN_GENERAL_SIDEBAR':
case 'CLOSE_GENERAL_SIDEBAR':
return action.type === 'CLOSE_GENERAL_SIDEBAR';
}
return state;
},
panels: function panels(state, action) {
switch (action.type) {
case 'TOGGLE_PANEL_ENABLED':
{
var panelName = action.panelName;
return (0, _objectSpread6.default)({}, state, (0, _defineProperty2.default)({}, panelName, (0, _objectSpread6.default)({}, state[panelName], {
enabled: !(0, _lodash.get)(state, [panelName, 'enabled'], true)
})));
}
case 'TOGGLE_PANEL_OPENED':
{
var _panelName = action.panelName;
var isOpen = state[_panelName] === true || (0, _lodash.get)(state, [_panelName, 'opened'], false);
return (0, _objectSpread6.default)({}, state, (0, _defineProperty2.default)({}, _panelName, (0, _objectSpread6.default)({}, state[_panelName], {
opened: !isOpen
})));
}
}
return state;
},
features: function features(state, action) {
if (action.type === 'TOGGLE_FEATURE') {
return (0, _objectSpread6.default)({}, state, (0, _defineProperty2.default)({}, action.feature, !state[action.feature]));
}
return state;
},
editorMode: function editorMode(state, action) {
if (action.type === 'SWITCH_MODE') {
return action.mode;
}
return state;
},
pinnedPluginItems: function pinnedPluginItems(state, action) {
if (action.type === 'TOGGLE_PINNED_PLUGIN_ITEM') {
return (0, _objectSpread6.default)({}, state, (0, _defineProperty2.default)({}, action.pluginName, !(0, _lodash.get)(state, [action.pluginName], true)));
}
return state;
},
hiddenBlockTypes: function hiddenBlockTypes(state, action) {
switch (action.type) {
case 'SHOW_BLOCK_TYPES':
return _lodash.without.apply(void 0, [state].concat((0, _toConsumableArray2.default)(action.blockNames)));
case 'HIDE_BLOCK_TYPES':
return (0, _lodash.union)(state, action.blockNames);
}
return state;
}
});
/**
* Reducer storing the list of all programmatically removed panels.
*
* @param {Array} state Current state.
* @param {Object} action Action object.
*
* @return {Array} Updated state.
*/
exports.preferences = preferences;
function removedPanels() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'REMOVE_PANEL':
if (!(0, _lodash.includes)(state, action.panelName)) {
return [].concat((0, _toConsumableArray2.default)(state), [action.panelName]);
}
}
return state;
}
/**
* Reducer returning the next active general sidebar state. The active general
* sidebar is a unique name to identify either an editor or plugin sidebar.
*
* @param {?string} state Current state.
* @param {Object} action Action object.
*
* @return {?string} Updated state.
*/
function activeGeneralSidebar() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_ACTIVE_GENERAL_SIDEBAR;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'OPEN_GENERAL_SIDEBAR':
return action.name;
}
return state;
}
/**
* Reducer for storing the name of the open modal, or null if no modal is open.
*
* @param {Object} state Previous state.
* @param {Object} action Action object containing the `name` of the modal
*
* @return {Object} Updated state
*/
function activeModal() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'OPEN_MODAL':
return action.name;
case 'CLOSE_MODAL':
return null;
}
return state;
}
function publishSidebarActive() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'OPEN_PUBLISH_SIDEBAR':
return true;
case 'CLOSE_PUBLISH_SIDEBAR':
return false;
case 'TOGGLE_PUBLISH_SIDEBAR':
return !state;
}
return state;
}
/**
* Reducer keeping track of the meta boxes isSaving state.
* A "true" value means the meta boxes saving request is in-flight.
*
*
* @param {boolean} state Previous state.
* @param {Object} action Action Object.
*
* @return {Object} Updated state.
*/
function isSavingMetaBoxes() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'REQUEST_META_BOX_UPDATES':
return true;
case 'META_BOX_UPDATES_SUCCESS':
return false;
default:
return state;
}
}
/**
* Reducer keeping track of the meta boxes per location.
*
* @param {boolean} state Previous state.
* @param {Object} action Action Object.
*
* @return {Object} Updated state.
*/
function metaBoxLocations() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'SET_META_BOXES_PER_LOCATIONS':
return action.metaBoxesPerLocation;
}
return state;
}
var metaBoxes = (0, _data.combineReducers)({
isSaving: isSavingMetaBoxes,
locations: metaBoxLocations
});
var _default = (0, _data.combineReducers)({
activeGeneralSidebar: activeGeneralSidebar,
activeModal: activeModal,
metaBoxes: metaBoxes,
preferences: preferences,
publishSidebarActive: publishSidebarActive,
removedPanels: removedPanels
});
exports.default = _default;
//# sourceMappingURL=reducer.js.map