@wordpress/block-library
Version:
Block library for the WordPress editor.
83 lines (69 loc) • 3.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ReusableBlockEdit;
var _element = require("@wordpress/element");
var _data = require("@wordpress/data");
var _coreData = require("@wordpress/core-data");
var _components = require("@wordpress/components");
var _i18n = require("@wordpress/i18n");
var _blockEditor = require("@wordpress/block-editor");
var _reusableBlocks = require("@wordpress/reusable-blocks");
var _icons = require("@wordpress/icons");
/**
* WordPress dependencies
*/
function ReusableBlockEdit(_ref) {
let {
attributes: {
ref
},
clientId
} = _ref;
const hasAlreadyRendered = (0, _blockEditor.__experimentalUseHasRecursion)(ref);
const {
record,
hasResolved
} = (0, _coreData.useEntityRecord)('postType', 'wp_block', ref);
const isMissing = hasResolved && !record;
const canRemove = (0, _data.useSelect)(select => select(_blockEditor.store).canRemoveBlock(clientId), [clientId]);
const {
__experimentalConvertBlockToStatic: convertBlockToStatic
} = (0, _data.useDispatch)(_reusableBlocks.store);
const [blocks, onInput, onChange] = (0, _coreData.useEntityBlockEditor)('postType', 'wp_block', {
id: ref
});
const [title, setTitle] = (0, _coreData.useEntityProp)('postType', 'wp_block', 'title', ref);
const blockProps = (0, _blockEditor.useBlockProps)({
className: 'block-library-block__reusable-block-container'
});
const innerBlocksProps = (0, _blockEditor.useInnerBlocksProps)(blockProps, {
value: blocks,
onInput,
onChange,
renderAppender: blocks !== null && blocks !== void 0 && blocks.length ? undefined : _blockEditor.InnerBlocks.ButtonBlockAppender
});
if (hasAlreadyRendered) {
return (0, _element.createElement)("div", blockProps, (0, _element.createElement)(_blockEditor.Warning, null, (0, _i18n.__)('Block cannot be rendered inside itself.')));
}
if (isMissing) {
return (0, _element.createElement)("div", blockProps, (0, _element.createElement)(_blockEditor.Warning, null, (0, _i18n.__)('Block has been deleted or is unavailable.')));
}
if (!hasResolved) {
return (0, _element.createElement)("div", blockProps, (0, _element.createElement)(_components.Placeholder, null, (0, _element.createElement)(_components.Spinner, null)));
}
return (0, _element.createElement)(_blockEditor.__experimentalRecursionProvider, {
uniqueId: ref
}, canRemove && (0, _element.createElement)(_blockEditor.BlockControls, null, (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_components.ToolbarButton, {
onClick: () => convertBlockToStatic(clientId),
label: (0, _i18n.__)('Convert to regular blocks'),
icon: _icons.ungroup,
showTooltip: true
}))), (0, _element.createElement)(_blockEditor.InspectorControls, null, (0, _element.createElement)(_components.PanelBody, null, (0, _element.createElement)(_components.TextControl, {
label: (0, _i18n.__)('Name'),
value: title,
onChange: setTitle
}))), (0, _element.createElement)("div", innerBlocksProps));
}
//# sourceMappingURL=edit.js.map
;