@wordpress/block-editor
Version:
125 lines (105 loc) • 3.14 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultBlockAppender = DefaultBlockAppender;
exports.default = exports.ZWNBSP = void 0;
var _element = require("@wordpress/element");
var _classnames = _interopRequireDefault(require("classnames"));
var _i18n = require("@wordpress/i18n");
var _compose = require("@wordpress/compose");
var _htmlEntities = require("@wordpress/html-entities");
var _data = require("@wordpress/data");
var _keycodes = require("@wordpress/keycodes");
var _inserter = _interopRequireDefault(require("../inserter"));
var _store = require("../../store");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Zero width non-breaking space, used as padding for the paragraph when it is
* empty.
*/
const ZWNBSP = '\ufeff';
exports.ZWNBSP = ZWNBSP;
function DefaultBlockAppender({
isLocked,
onAppend,
showPrompt,
placeholder,
rootClientId
}) {
if (isLocked) {
return null;
}
const value = (0, _htmlEntities.decodeEntities)(placeholder) || (0, _i18n.__)('Type / to choose a block');
return (0, _element.createElement)("div", {
"data-root-client-id": rootClientId || '',
className: (0, _classnames.default)('block-editor-default-block-appender', {
'has-visible-prompt': showPrompt
})
}, (0, _element.createElement)("p", {
tabIndex: "0" // We want this element to be styled as a paragraph by themes.
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role
,
role: "button",
"aria-label": (0, _i18n.__)('Add default block') // A wrapping container for this one already has the wp-block className.
,
className: "block-editor-default-block-appender__content",
onKeyDown: event => {
if (_keycodes.ENTER === event.keyCode || _keycodes.SPACE === event.keyCode) {
onAppend();
}
},
onClick: () => onAppend(),
onFocus: () => {
if (showPrompt) {
onAppend();
}
}
}, showPrompt ? value : ZWNBSP), (0, _element.createElement)(_inserter.default, {
rootClientId: rootClientId,
position: "bottom right",
isAppender: true,
__experimentalIsQuick: true
}));
}
var _default = (0, _compose.compose)((0, _data.withSelect)((select, ownProps) => {
const {
getBlockCount,
getSettings,
getTemplateLock
} = select(_store.store);
const isEmpty = !getBlockCount(ownProps.rootClientId);
const {
bodyPlaceholder
} = getSettings();
return {
showPrompt: isEmpty,
isLocked: !!getTemplateLock(ownProps.rootClientId),
placeholder: bodyPlaceholder
};
}), (0, _data.withDispatch)((dispatch, ownProps) => {
const {
insertDefaultBlock,
startTyping
} = dispatch(_store.store);
return {
onAppend() {
const {
rootClientId
} = ownProps;
insertDefaultBlock(undefined, rootClientId);
startTyping();
}
};
}))(DefaultBlockAppender);
exports.default = _default;
//# sourceMappingURL=index.js.map