@wordpress/block-library
Version:
Block library for the WordPress editor.
95 lines (91 loc) • 2.73 kB
JavaScript
/**
* WordPress dependencies
*/
import { createBlock } from '@wordpress/blocks';
import { __unstableCreateElement as createElement } from '@wordpress/rich-text';
/**
* Internal dependencies
*/
const {
name: name
} = {
$schema: "https://schemas.wp.org/trunk/block.json",
apiVersion: 2,
name: "core/buttons",
title: "Buttons",
category: "design",
description: "Prompt visitors to take action with a group of button-style links.",
keywords: ["link"],
textdomain: "default",
supports: {
anchor: true,
align: ["wide", "full"],
__experimentalExposeControlsToChildren: true,
spacing: {
blockGap: true,
margin: ["top", "bottom"],
__experimentalDefaultControls: {
blockGap: true
}
},
typography: {
fontSize: true,
lineHeight: true,
__experimentalFontFamily: true,
__experimentalFontWeight: true,
__experimentalFontStyle: true,
__experimentalTextTransform: true,
__experimentalTextDecoration: true,
__experimentalLetterSpacing: true,
__experimentalDefaultControls: {
fontSize: true
}
},
__experimentalLayout: {
allowSwitching: false,
allowInheriting: false,
"default": {
type: "flex"
}
}
},
editorStyle: "wp-block-buttons-editor",
style: "wp-block-buttons"
};
const transforms = {
from: [{
type: 'block',
isMultiBlock: true,
blocks: ['core/button'],
transform: buttons => // Creates the buttons block.
createBlock(name, {}, // Loop the selected buttons.
buttons.map(attributes => // Create singular button in the buttons block.
createBlock('core/button', attributes)))
}, {
type: 'block',
isMultiBlock: true,
blocks: ['core/paragraph'],
transform: buttons => // Creates the buttons block.
createBlock(name, {}, // Loop the selected buttons.
buttons.map(attributes => {
const element = createElement(document, attributes.content); // Remove any HTML tags.
const text = element.innerText || ''; // Get first url.
const link = element.querySelector('a');
const url = link === null || link === void 0 ? void 0 : link.getAttribute('href'); // Create singular button in the buttons block.
return createBlock('core/button', {
text,
url
});
})),
isMatch: paragraphs => {
return paragraphs.every(attributes => {
const element = createElement(document, attributes.content);
const text = element.innerText || '';
const links = element.querySelectorAll('a');
return text.length <= 30 && links.length <= 1;
});
}
}]
};
export default transforms;
//# sourceMappingURL=transforms.js.map