UNPKG

@wordpress/block-editor

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