@wordpress/block-library
Version:
Block library for the WordPress editor.
144 lines (142 loc) • 3.48 kB
JavaScript
/**
* WordPress dependencies
*/
import { heading as icon } from '@wordpress/icons';
import { __, sprintf } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import initBlock from '../utils/init-block';
import deprecated from './deprecated';
import edit from './edit';
const metadata = {
$schema: "https://schemas.wp.org/trunk/block.json",
apiVersion: 3,
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: "rich-text",
source: "rich-text",
selector: "h1,h2,h3,h4,h5,h6",
role: "content"
},
level: {
type: "number",
"default": 2
},
levelOptions: {
type: "array"
},
placeholder: {
type: "string"
}
},
supports: {
align: ["wide", "full"],
anchor: true,
className: true,
splitting: true,
__experimentalBorder: {
color: true,
radius: true,
style: true,
width: true
},
color: {
gradients: true,
link: true,
__experimentalDefaultControls: {
background: true,
text: true
}
},
spacing: {
margin: true,
padding: true,
__experimentalDefaultControls: {
margin: false,
padding: false
}
},
typography: {
fontSize: true,
lineHeight: true,
__experimentalFontFamily: true,
__experimentalFontStyle: true,
__experimentalFontWeight: true,
__experimentalLetterSpacing: true,
__experimentalTextTransform: true,
__experimentalTextDecoration: true,
__experimentalWritingMode: true,
__experimentalDefaultControls: {
fontSize: true
}
},
__unstablePasteTextInline: true,
__experimentalSlashInserter: true,
interactivity: {
clientNavigation: true
}
},
editorStyle: "wp-block-heading-editor",
style: "wp-block-heading"
};
import save from './save';
import transforms from './transforms';
const {
name
} = metadata;
export { metadata, name };
export const settings = {
icon,
example: {
attributes: {
content: __('Code is Poetry'),
level: 2,
textAlign: 'center'
}
},
__experimentalLabel(attributes, {
context
}) {
const {
content,
level
} = attributes;
const customName = attributes?.metadata?.name;
const hasContent = content?.trim().length > 0;
// In the list view, use the block's content as the label.
// If the content is empty, fall back to the default label.
if (context === 'list-view' && (customName || hasContent)) {
return customName || content;
}
if (context === 'accessibility') {
return !hasContent ? sprintf(/* translators: accessibility text. %s: heading level. */
__('Level %s. Empty.'), level) : sprintf(/* translators: accessibility text. 1: heading level. 2: heading content. */
__('Level %1$s. %2$s'), level, content);
}
},
transforms,
deprecated,
merge(attributes, attributesToMerge) {
return {
content: (attributes.content || '') + (attributesToMerge.content || '')
};
},
edit,
save
};
export const init = () => initBlock({
name,
metadata,
settings
});
//# sourceMappingURL=index.js.map