UNPKG

@wordpress/block-library

Version:
171 lines (162 loc) 3.82 kB
/** * WordPress dependencies */ import { createBlock, getBlockAttributes } from '@wordpress/blocks'; /** * Internal dependencies */ import { getLevelFromHeadingNodeName } from './shared'; const { name: name } = { $schema: "https://schemas.wp.org/trunk/block.json", apiVersion: 2, name: "core/heading", title: "Heading", category: "text", description: "Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.", keywords: ["title", "subtitle"], textdomain: "default", attributes: { textAlign: { type: "string" }, content: { type: "string", source: "html", selector: "h1,h2,h3,h4,h5,h6", "default": "", __experimentalRole: "content" }, level: { type: "number", "default": 2 }, placeholder: { type: "string" } }, supports: { align: ["wide", "full"], anchor: true, className: false, color: { gradients: true, link: true, __experimentalDefaultControls: { background: true, text: true } }, spacing: { margin: true, padding: true }, typography: { fontSize: true, lineHeight: true, __experimentalFontFamily: true, __experimentalFontStyle: true, __experimentalFontWeight: true, __experimentalLetterSpacing: true, __experimentalTextTransform: true, __experimentalTextDecoration: true, __experimentalDefaultControls: { fontSize: true, fontAppearance: true, textTransform: true } }, __experimentalSelector: "h1,h2,h3,h4,h5,h6", __unstablePasteTextInline: true, __experimentalSlashInserter: true }, editorStyle: "wp-block-heading-editor", style: "wp-block-heading" }; const transforms = { from: [{ type: 'block', isMultiBlock: true, blocks: ['core/paragraph'], transform: attributes => attributes.map(_ref => { let { content, anchor, align: textAlign } = _ref; return createBlock(name, { content, anchor, textAlign }); }) }, { type: 'raw', selector: 'h1,h2,h3,h4,h5,h6', schema: _ref2 => { let { phrasingContentSchema, isPaste } = _ref2; const schema = { children: phrasingContentSchema, attributes: isPaste ? [] : ['style', 'id'] }; return { h1: schema, h2: schema, h3: schema, h4: schema, h5: schema, h6: schema }; }, transform(node) { const attributes = getBlockAttributes(name, node.outerHTML); const { textAlign } = node.style || {}; attributes.level = getLevelFromHeadingNodeName(node.nodeName); if (textAlign === 'left' || textAlign === 'center' || textAlign === 'right') { attributes.align = textAlign; } return createBlock(name, attributes); } }, ...[1, 2, 3, 4, 5, 6].map(level => ({ type: 'prefix', prefix: Array(level + 1).join('#'), transform(content) { return createBlock(name, { level, content }); } })), ...[1, 2, 3, 4, 5, 6].map(level => ({ type: 'enter', regExp: new RegExp(`^/(h|H)${level}$`), transform(content) { return createBlock(name, { level, content }); } }))], to: [{ type: 'block', isMultiBlock: true, blocks: ['core/paragraph'], transform: attributes => attributes.map(_ref3 => { let { content, textAlign: align } = _ref3; return createBlock('core/paragraph', { content, align }); }) }] }; export default transforms; //# sourceMappingURL=transforms.js.map