UNPKG

@gechiui/block-editor

Version:
79 lines (66 loc) 1.88 kB
/** * GeChiUI dependencies */ import { regexp } from '@gechiui/shortcode'; import deprecated from '@gechiui/deprecated'; import { renderToString } from '@gechiui/element'; import { createBlock } from '@gechiui/blocks'; export function addActiveFormats( value, activeFormats ) { if ( activeFormats?.length ) { let index = value.formats.length; while ( index-- ) { value.formats[ index ] = [ ...activeFormats, ...( value.formats[ index ] || [] ), ]; } } } /** * Get the multiline tag based on the multiline prop. * * @param {?(string|boolean)} multiline The multiline prop. * * @return {?string} The multiline tag. */ export function getMultilineTag( multiline ) { if ( multiline !== true && multiline !== 'p' && multiline !== 'li' ) { return; } return multiline === true ? 'p' : multiline; } export function getAllowedFormats( { allowedFormats, formattingControls, disableFormats, } ) { if ( disableFormats ) { return getAllowedFormats.EMPTY_ARRAY; } if ( ! allowedFormats && ! formattingControls ) { return; } if ( allowedFormats ) { return allowedFormats; } deprecated( 'gc.blockEditor.RichText formattingControls prop', { since: '5.4', alternative: 'allowedFormats', } ); return formattingControls.map( ( name ) => `core/${ name }` ); } getAllowedFormats.EMPTY_ARRAY = []; export const isShortcode = ( text ) => regexp( '.*' ).test( text ); /** * Creates a link from pasted URL. * Creates a paragraph block containing a link to the URL, and calls `onReplace`. * * @param {string} url The URL that could not be embedded. * @param {Function} onReplace Function to call with the created fallback block. */ export function createLinkInParagraph( url, onReplace ) { const link = <a href={ url }>{ url }</a>; onReplace( createBlock( 'core/paragraph', { content: renderToString( link ) } ) ); }