@wordpress/block-library
Version:
Block library for the WordPress editor.
105 lines (102 loc) • 2.69 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _blocks = require("@wordpress/blocks");
var _shared = require("./shared");
var _getTransformedMetadata = require("../utils/get-transformed-metadata");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const transforms = {
from: [{
type: 'block',
isMultiBlock: true,
blocks: ['core/paragraph'],
transform: attributes => attributes.map(({
content,
anchor,
align: textAlign,
metadata
}) => (0, _blocks.createBlock)('core/heading', {
content,
anchor,
textAlign,
metadata: (0, _getTransformedMetadata.getTransformedMetadata)(metadata, 'core/heading', ({
content: contentBinding
}) => ({
content: contentBinding
}))
}))
}, {
type: 'raw',
selector: 'h1,h2,h3,h4,h5,h6',
schema: ({
phrasingContentSchema,
isPaste
}) => {
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 = (0, _blocks.getBlockAttributes)('core/heading', node.outerHTML);
const {
textAlign
} = node.style || {};
attributes.level = (0, _shared.getLevelFromHeadingNodeName)(node.nodeName);
if (textAlign === 'left' || textAlign === 'center' || textAlign === 'right') {
attributes.align = textAlign;
}
return (0, _blocks.createBlock)('core/heading', attributes);
}
}, ...[1, 2, 3, 4, 5, 6].map(level => ({
type: 'prefix',
prefix: Array(level + 1).join('#'),
transform(content) {
return (0, _blocks.createBlock)('core/heading', {
level,
content
});
}
})), ...[1, 2, 3, 4, 5, 6].map(level => ({
type: 'enter',
regExp: new RegExp(`^/(h|H)${level}$`),
transform: () => (0, _blocks.createBlock)('core/heading', {
level
})
}))],
to: [{
type: 'block',
isMultiBlock: true,
blocks: ['core/paragraph'],
transform: attributes => attributes.map(({
content,
textAlign: align,
metadata
}) => (0, _blocks.createBlock)('core/paragraph', {
content,
align,
metadata: (0, _getTransformedMetadata.getTransformedMetadata)(metadata, 'core/paragraph', ({
content: contentBinding
}) => ({
content: contentBinding
}))
}))
}]
};
var _default = exports.default = transforms;
//# sourceMappingURL=transforms.js.map
;