@wordpress/block-editor
Version:
79 lines (75 loc) • 2.27 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = BlockInvalidWarning;
var _reactNative = require("react-native");
var _i18n = require("@wordpress/i18n");
var _data = require("@wordpress/data");
var _blocks = require("@wordpress/blocks");
var _warning = _interopRequireDefault(require("../warning"));
var _store = require("../../store");
var _jsxRuntime = require("react/jsx-runtime");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function BlockInvalidWarning({
clientId
}) {
const selector = select => {
const {
getBlock
} = select(_store.store);
const block = getBlock(clientId);
const {
name
} = block || {};
const blockType = (0, _blocks.getBlockType)(name || 'core/missing');
const title = blockType?.title;
const blockIcon = blockType?.icon;
return {
block,
blockTitle: title,
icon: blockIcon
};
};
const {
block,
blockTitle,
icon
} = (0, _data.useSelect)(selector, [clientId]);
const accessibilityLabel = (0, _i18n.sprintf)(/* translators: accessibility text for blocks with invalid content. %d: localized block title */
(0, _i18n.__)('%s block. This block has invalid content'), blockTitle);
const {
replaceBlock
} = (0, _data.useDispatch)(_store.store);
const recoverBlock = ({
name,
attributes,
innerBlocks
}) => (0, _blocks.createBlock)(name, attributes, innerBlocks);
const attemptBlockRecovery = () => {
replaceBlock(block.clientId, recoverBlock(block));
};
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
onPress: attemptBlockRecovery,
accessible: true,
accessibilityRole: "button",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_warning.default, {
title: blockTitle
// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
,
message: (0, _i18n.__)('Problem displaying block. \nTap to attempt block recovery.'),
icon: icon,
accessibilityLabel: accessibilityLabel
})
});
}
//# sourceMappingURL=block-invalid-warning.native.js.map
;