@wordpress/block-library
Version:
Block library for the WordPress editor.
156 lines (135 loc) • 4.22 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classnames = _interopRequireDefault(require("classnames"));
var _i18n = require("@wordpress/i18n");
var _components = require("@wordpress/components");
var _blockEditor = require("@wordpress/block-editor");
var _blocks = require("@wordpress/blocks");
var _icons = require("@wordpress/icons");
var _useEnter = require("./use-enter");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const name = 'core/paragraph';
function ParagraphRTLControl(_ref) {
let {
direction,
setDirection
} = _ref;
return (0, _i18n.isRTL)() && (0, _element.createElement)(_components.ToolbarButton, {
icon: _icons.formatLtr,
title: (0, _i18n._x)('Left to right', 'editor button'),
isActive: direction === 'ltr',
onClick: () => {
setDirection(direction === 'ltr' ? undefined : 'ltr');
}
});
}
function ParagraphBlock(_ref2) {
let {
attributes,
mergeBlocks,
onReplace,
onRemove,
setAttributes,
clientId
} = _ref2;
const {
align,
content,
direction,
dropCap,
placeholder
} = attributes;
const isDropCapFeatureEnabled = (0, _blockEditor.useSetting)('typography.dropCap');
const blockProps = (0, _blockEditor.useBlockProps)({
ref: (0, _useEnter.useOnEnter)({
clientId,
content
}),
className: (0, _classnames.default)({
'has-drop-cap': dropCap,
[`has-text-align-${align}`]: align
}),
style: {
direction
}
});
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.BlockControls, {
group: "block"
}, (0, _element.createElement)(_blockEditor.AlignmentControl, {
value: align,
onChange: newAlign => setAttributes({
align: newAlign
})
}), (0, _element.createElement)(ParagraphRTLControl, {
direction: direction,
setDirection: newDirection => setAttributes({
direction: newDirection
})
})), isDropCapFeatureEnabled && (0, _element.createElement)(_blockEditor.InspectorControls, {
__experimentalGroup: "typography"
}, (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
hasValue: () => !!dropCap,
label: (0, _i18n.__)('Drop cap'),
onDeselect: () => setAttributes({
dropCap: undefined
}),
resetAllFilter: () => ({
dropCap: undefined
}),
panelId: clientId
}, (0, _element.createElement)(_components.ToggleControl, {
label: (0, _i18n.__)('Drop cap'),
checked: !!dropCap,
onChange: () => setAttributes({
dropCap: !dropCap
}),
help: dropCap ? (0, _i18n.__)('Showing large initial letter.') : (0, _i18n.__)('Toggle to show a large initial letter.')
}))), (0, _element.createElement)(_blockEditor.RichText, (0, _extends2.default)({
identifier: "content",
tagName: "p"
}, blockProps, {
value: content,
onChange: newContent => setAttributes({
content: newContent
}),
onSplit: (value, isOriginal) => {
let newAttributes;
if (isOriginal || value) {
newAttributes = { ...attributes,
content: value
};
}
const block = (0, _blocks.createBlock)(name, newAttributes);
if (isOriginal) {
block.clientId = clientId;
}
return block;
},
onMerge: mergeBlocks,
onReplace: onReplace,
onRemove: onRemove,
"aria-label": content ? (0, _i18n.__)('Paragraph block') : (0, _i18n.__)('Empty block; start writing or type forward slash to choose a block'),
"data-empty": content ? false : true,
placeholder: placeholder || (0, _i18n.__)('Type / to choose a block'),
"data-custom-placeholder": placeholder ? true : undefined,
__unstableEmbedURLOnPaste: true,
__unstableAllowPrefixTransformations: true
})));
}
var _default = ParagraphBlock;
exports.default = _default;
//# sourceMappingURL=edit.js.map
;