@wordpress/edit-post
Version:
Edit Post module for WordPress.
111 lines (95 loc) • 3.41 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _lodash = require("lodash");
var _blocks = require("@wordpress/blocks");
var _data = require("@wordpress/data");
var _compose = require("@wordpress/compose");
var _components = require("@wordpress/components");
var _i18n = require("@wordpress/i18n");
var _category = _interopRequireDefault(require("./category"));
var _store = require("../../store");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function BlockManager({
search,
setState,
blockTypes,
categories,
hasBlockSupport,
isMatchingSearchTerm,
numberOfHiddenBlocks
}) {
// Filtering occurs here (as opposed to `withSelect`) to avoid
// wasted renders by consequence of `Array#filter` producing
// a new value reference on each call.
blockTypes = blockTypes.filter(blockType => hasBlockSupport(blockType, 'inserter', true) && (!search || isMatchingSearchTerm(blockType, search)) && (!blockType.parent || (0, _lodash.includes)(blockType.parent, 'core/post-content')));
return (0, _element.createElement)("div", {
className: "edit-post-manage-blocks-modal__content"
}, (0, _element.createElement)(_components.TextControl, {
type: "search",
label: (0, _i18n.__)('Search for a block'),
value: search,
onChange: nextSearch => setState({
search: nextSearch
}),
className: "edit-post-manage-blocks-modal__search"
}), !!numberOfHiddenBlocks && (0, _element.createElement)("div", {
className: "edit-post-manage-blocks-modal__disabled-blocks-count"
}, (0, _i18n.sprintf)(
/* translators: %d: number of blocks. */
(0, _i18n._n)('%d block is disabled.', '%d blocks are disabled.', numberOfHiddenBlocks), numberOfHiddenBlocks)), (0, _element.createElement)("div", {
tabIndex: "0",
role: "region",
"aria-label": (0, _i18n.__)('Available block types'),
className: "edit-post-manage-blocks-modal__results"
}, blockTypes.length === 0 && (0, _element.createElement)("p", {
className: "edit-post-manage-blocks-modal__no-results"
}, (0, _i18n.__)('No blocks found.')), categories.map(category => (0, _element.createElement)(_category.default, {
key: category.slug,
title: category.title,
blockTypes: (0, _lodash.filter)(blockTypes, {
category: category.slug
})
})), (0, _element.createElement)(_category.default, {
title: (0, _i18n.__)('Uncategorized'),
blockTypes: (0, _lodash.filter)(blockTypes, ({
category
}) => !category)
})));
}
var _default = (0, _compose.compose)([(0, _compose.withState)({
search: ''
}), (0, _data.withSelect)(select => {
const {
getBlockTypes,
getCategories,
hasBlockSupport,
isMatchingSearchTerm
} = select(_blocks.store);
const {
getPreference
} = select(_store.store);
const hiddenBlockTypes = getPreference('hiddenBlockTypes');
const numberOfHiddenBlocks = (0, _lodash.isArray)(hiddenBlockTypes) && hiddenBlockTypes.length;
return {
blockTypes: getBlockTypes(),
categories: getCategories(),
hasBlockSupport,
isMatchingSearchTerm,
numberOfHiddenBlocks
};
})])(BlockManager);
exports.default = _default;
//# sourceMappingURL=manager.js.map