UNPKG

@wordpress/block-library

Version:
83 lines (69 loc) 3.15 kB
"use strict"; 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