UNPKG

@wordpress/block-library

Version:
156 lines (135 loc) 4.22 kB
"use strict"; 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