UNPKG

@wordpress/block-library

Version:
95 lines (91 loc) 2.73 kB
/** * 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