diff --git a/packages/editor/src/components/block-list/block-invalid-warning.js b/packages/editor/src/components/block-list/block-invalid-warning.js index bc4555b1a3f0b0..265e36c78a2e89 100644 --- a/packages/editor/src/components/block-list/block-invalid-warning.js +++ b/packages/editor/src/components/block-list/block-invalid-warning.js @@ -36,11 +36,12 @@ export class BlockInvalidWarning extends Component { } render() { - const { convertToHTML, convertToBlocks, convertToClassic, block } = this.props; + const { convertToHTML, convertToBlocks, convertToClassic, attemptBlockRecovery, block } = this.props; const hasHTMLBlock = !! getBlockType( 'core/html' ); const { compare } = this.state; const hiddenActions = [ { title: __( 'Convert to Classic Block' ), onClick: convertToClassic }, + { title: __( 'Attempt Block Recovery' ), onClick: attemptBlockRecovery }, ]; if ( compare ) { @@ -96,6 +97,7 @@ const blockToHTML = ( block ) => createBlock( 'core/html', { const blockToBlocks = ( block ) => rawHandler( { HTML: block.originalContent, } ); +const recoverBlock = ( { name, attributes, innerBlocks } ) => createBlock( name, attributes, innerBlocks ); export default compose( [ withSelect( ( select, { clientId } ) => ( { @@ -114,6 +116,9 @@ export default compose( [ convertToBlocks() { replaceBlock( block.clientId, blockToBlocks( block ) ); }, + attemptBlockRecovery() { + replaceBlock( block.clientId, recoverBlock( block ) ); + }, }; } ), ] )( BlockInvalidWarning );