@wordpress/block-editor
Version:
93 lines (90 loc) • 3.15 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Appender = void 0;
var _compose = require("@wordpress/compose");
var _a11y = require("@wordpress/a11y");
var _data = require("@wordpress/data");
var _element = require("@wordpress/element");
var _i18n = require("@wordpress/i18n");
var _store = require("../../store");
var _useBlockDisplayTitle = _interopRequireDefault(require("../block-title/use-block-display-title"));
var _context = require("./context");
var _inserter = _interopRequireDefault(require("../inserter"));
var _ariaReferencedText = _interopRequireDefault(require("./aria-referenced-text"));
var _lockUnlock = require("../../lock-unlock");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const Appender = exports.Appender = (0, _element.forwardRef)(({
nestingLevel,
blockCount,
clientId,
...props
}, ref) => {
const {
insertedBlock,
setInsertedBlock
} = (0, _context.useListViewContext)();
const instanceId = (0, _compose.useInstanceId)(Appender);
const hideInserter = (0, _data.useSelect)(select => {
const {
getTemplateLock,
isZoomOut
} = (0, _lockUnlock.unlock)(select(_store.store));
return !!getTemplateLock(clientId) || isZoomOut();
}, [clientId]);
const blockTitle = (0, _useBlockDisplayTitle.default)({
clientId,
context: 'list-view'
});
const insertedBlockTitle = (0, _useBlockDisplayTitle.default)({
clientId: insertedBlock?.clientId,
context: 'list-view'
});
(0, _element.useEffect)(() => {
if (!insertedBlockTitle?.length) {
return;
}
(0, _a11y.speak)((0, _i18n.sprintf)(
// translators: %s: name of block being inserted (i.e. Paragraph, Image, Group etc)
(0, _i18n.__)('%s block inserted'), insertedBlockTitle), 'assertive');
}, [insertedBlockTitle]);
if (hideInserter) {
return null;
}
const descriptionId = `list-view-appender__${instanceId}`;
const description = (0, _i18n.sprintf)(/* translators: 1: The name of the block. 2: The numerical position of the block. 3: The level of nesting for the block. */
(0, _i18n.__)('Append to %1$s block at position %2$d, Level %3$d'), blockTitle, blockCount + 1, nestingLevel);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: "list-view-appender",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_inserter.default, {
ref: ref,
rootClientId: clientId,
position: "bottom right",
isAppender: true,
selectBlockOnInsert: false,
shouldDirectInsert: false,
__experimentalIsQuick: true,
...props,
toggleProps: {
'aria-describedby': descriptionId
},
onSelectOrClose: maybeInsertedBlock => {
if (maybeInsertedBlock?.clientId) {
setInsertedBlock(maybeInsertedBlock);
}
}
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ariaReferencedText.default, {
id: descriptionId,
children: description
})]
});
});
//# sourceMappingURL=appender.js.map
;