@wordpress/block-editor
Version:
89 lines (70 loc) • 2.39 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = BlockNavigation;
var _element = require("@wordpress/element");
var _lodash = require("lodash");
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _tree = _interopRequireDefault(require("./tree"));
var _utils = require("./utils");
var _store = require("../../store");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function BlockNavigation({
onSelect = _lodash.noop,
__experimentalFeatures
}) {
const {
rootBlock,
rootBlocks,
selectedBlockClientId
} = (0, _data.useSelect)(select => {
const {
getBlockHierarchyRootClientId,
getSelectedBlockClientId,
__unstableGetClientIdsTree,
__unstableGetClientIdWithClientIdsTree
} = select(_store.store);
const _selectedBlockClientId = getSelectedBlockClientId();
const _rootBlocks = __unstableGetClientIdsTree();
const _rootBlock = _selectedBlockClientId && !(0, _lodash.isArray)(_selectedBlockClientId) ? __unstableGetClientIdWithClientIdsTree(getBlockHierarchyRootClientId(_selectedBlockClientId)) : null;
return {
rootBlock: _rootBlock,
rootBlocks: _rootBlocks,
selectedBlockClientId: _selectedBlockClientId
};
});
const {
selectBlock
} = (0, _data.useDispatch)(_store.store);
function selectEditorBlock(clientId) {
selectBlock(clientId);
onSelect(clientId);
}
if (!rootBlocks || rootBlocks.length === 0) {
return null;
}
const hasHierarchy = rootBlock && (!(0, _utils.isClientIdSelected)(rootBlock.clientId, selectedBlockClientId) || rootBlock.innerBlocks && rootBlock.innerBlocks.length !== 0);
return (0, _element.createElement)("div", {
className: "block-editor-block-navigation__container"
}, (0, _element.createElement)("p", {
className: "block-editor-block-navigation__label"
}, (0, _i18n.__)('List view')), (0, _element.createElement)(_tree.default, {
blocks: hasHierarchy ? [rootBlock] : rootBlocks,
selectedBlockClientIds: [selectedBlockClientId],
selectBlock: selectEditorBlock,
__experimentalFeatures: __experimentalFeatures,
showNestedBlocks: true
}));
}
//# sourceMappingURL=index.js.map