diff --git a/packages/block-editor/src/components/rich-text/index.js b/packages/block-editor/src/components/rich-text/index.js index 25bbcf9b47955..3b8bd06ca5ee8 100644 --- a/packages/block-editor/src/components/rich-text/index.js +++ b/packages/block-editor/src/components/rich-text/index.js @@ -28,6 +28,7 @@ import { import { withFilters, IsolatedEventContainer } from '@wordpress/components'; import { createBlobURL } from '@wordpress/blob'; import deprecated from '@wordpress/deprecated'; +import { isURL } from '@wordpress/url'; /** * Internal dependencies @@ -129,6 +130,7 @@ class RichTextWrapper extends Component { tagName, canUserUseUnfilteredHTML, multiline, + __unstableEmbedURLOnPaste, } = this.props; if ( image && ! html ) { @@ -138,12 +140,11 @@ class RichTextWrapper extends Component { mode: 'BLOCKS', tagName, } ); - const shouldReplace = onReplace && isEmpty( value ); // Allows us to ask for this information when we get a report. window.console.log( 'Received item:\n\n', file ); - if ( shouldReplace ) { + if ( onReplace && isEmpty( value ) ) { onReplace( content ); } else { this.onSplit( value, content ); @@ -152,15 +153,14 @@ class RichTextWrapper extends Component { return; } - const canReplace = onReplace && isEmpty( value ); - const canSplit = onReplace && onSplit; - - let mode = 'INLINE'; + let mode = onReplace && onSplit ? 'AUTO' : 'INLINE'; - if ( canReplace ) { + if ( + __unstableEmbedURLOnPaste && + isEmpty( value ) && + isURL( plainText.trim() ) + ) { mode = 'BLOCKS'; - } else if ( canSplit ) { - mode = 'AUTO'; } const content = pasteHandler( { @@ -182,7 +182,7 @@ class RichTextWrapper extends Component { onChange( insert( value, valueToInsert ) ); } else if ( content.length > 0 ) { - if ( canReplace ) { + if ( onReplace && isEmpty( value ) ) { onReplace( content ); } else { this.onSplit( value, content ); diff --git a/packages/block-library/src/paragraph/edit.js b/packages/block-library/src/paragraph/edit.js index c40fae904906f..0d41efd5c2683 100644 --- a/packages/block-library/src/paragraph/edit.js +++ b/packages/block-library/src/paragraph/edit.js @@ -195,6 +195,7 @@ class ParagraphBlock extends Component { onRemove={ onReplace ? () => onReplace( [] ) : undefined } aria-label={ content ? __( 'Paragraph block' ) : __( 'Empty block; start writing or type forward slash to choose a block' ) } placeholder={ placeholder || __( 'Start writing or type / to choose a block' ) } + __unstableEmbedURLOnPaste /> );