diff --git a/packages/block-editor/src/store/test/selectors.js b/packages/block-editor/src/store/test/selectors.js index fc4db2c41f8a3f..9140248391cf8e 100644 --- a/packages/block-editor/src/store/test/selectors.js +++ b/packages/block-editor/src/store/test/selectors.js @@ -121,7 +121,7 @@ describe( 'selectors', () => { parent: [ 'core/test-block-b' ], } ); - registerBlockType( 'core/test-freeform', { + registerBlockType( 'core/freeform', { save: ( props ) => { props.attributes.content }, category: 'text', title: 'Test Freeform Content Handler', @@ -177,7 +177,7 @@ describe( 'selectors', () => { ancestor: [ 'core/test-block-ancestor' ], } ); - setFreeformContentHandlerName( 'core/test-freeform' ); + setFreeformContentHandlerName( 'core/freeform' ); cachedSelectors.forEach( ( { clear } ) => clear() ); } ); @@ -187,7 +187,7 @@ describe( 'selectors', () => { unregisterBlockType( 'core/test-block-a' ); unregisterBlockType( 'core/test-block-b' ); unregisterBlockType( 'core/test-block-c' ); - unregisterBlockType( 'core/test-freeform' ); + unregisterBlockType( 'core/freeform' ); unregisterBlockType( 'core/post-content-child' ); unregisterBlockType( 'core/test-block-ancestor' ); unregisterBlockType( 'core/test-block-parent' ); @@ -3450,7 +3450,7 @@ describe( 'selectors', () => { expect( firstBlockFirstCall.map( ( item ) => item.id ) ).toEqual( [ 'core/test-block-a', 'core/test-block-b', - 'core/test-freeform', + 'core/freeform', 'core/test-block-ancestor', 'core/test-block-parent', 'core/block/1', @@ -3466,7 +3466,7 @@ describe( 'selectors', () => { expect( secondBlockFirstCall.map( ( item ) => item.id ) ).toEqual( [ 'core/test-block-a', 'core/test-block-b', - 'core/test-freeform', + 'core/freeform', 'core/test-block-ancestor', 'core/test-block-parent', 'core/block/1', diff --git a/packages/blocks/src/api/parser/index.js b/packages/blocks/src/api/parser/index.js index 52facfb212c8c4..f8ff0c68964dc3 100644 --- a/packages/blocks/src/api/parser/index.js +++ b/packages/blocks/src/api/parser/index.js @@ -101,6 +101,7 @@ export function normalizeRawBlock( rawBlock, options ) { // meaning there are no negative consequences to repeated autop calls. if ( rawBlockName === fallbackBlockName && + rawBlockName === 'core/freeform' && ! options?.__unstableSkipAutop ) { rawInnerHTML = autop( rawInnerHTML ).trim(); diff --git a/packages/blocks/src/api/parser/test/index.js b/packages/blocks/src/api/parser/test/index.js index 589d6b81be5536..85e51e9d0af025 100644 --- a/packages/blocks/src/api/parser/test/index.js +++ b/packages/blocks/src/api/parser/test/index.js @@ -90,19 +90,30 @@ describe( 'block parser', () => { } ); it( 'should fall back to the freeform content handler if block type not specified', () => { - registerBlockType( 'core/freeform-block', unknownBlockSettings ); - setFreeformContentHandlerName( 'core/freeform-block' ); + registerBlockType( 'core/freeform', unknownBlockSettings ); + setFreeformContentHandlerName( 'core/freeform' ); const block = parseRawBlock( { innerHTML: 'content', } ); - expect( block.name ).toEqual( 'core/freeform-block' ); + expect( block.name ).toEqual( 'core/freeform' ); expect( block.attributes ).toEqual( { content: '

content

' } ); } ); + it( 'skips adding paragraph tags if freeform block is set to core/html', () => { + registerBlockType( 'core/html', unknownBlockSettings ); + setFreeformContentHandlerName( 'core/html' ); + + const block = parseRawBlock( { + innerHTML: 'content', + } ); + expect( block.name ).toEqual( 'core/html' ); + expect( block.attributes ).toEqual( { content: 'content' } ); + } ); + it( 'skips adding paragraph tags if __unstableSkipAutop is passed as an option', () => { - registerBlockType( 'core/freeform-block', unknownBlockSettings ); - setFreeformContentHandlerName( 'core/freeform-block' ); + registerBlockType( 'core/freeform', unknownBlockSettings ); + setFreeformContentHandlerName( 'core/freeform' ); const block = parseRawBlock( { @@ -112,7 +123,7 @@ describe( 'block parser', () => { __unstableSkipAutop: true, } ); - expect( block.name ).toEqual( 'core/freeform-block' ); + expect( block.name ).toEqual( 'core/freeform' ); expect( block.attributes ).toEqual( { content: 'content' } ); } ); diff --git a/packages/blocks/src/api/serializer.js b/packages/blocks/src/api/serializer.js index fff687767b7fa8..92559b1a0e7173 100644 --- a/packages/blocks/src/api/serializer.js +++ b/packages/blocks/src/api/serializer.js @@ -390,7 +390,8 @@ export function __unstableSerializeAndClean( blocks ) { // pre-block-editor removep'd content formatting. if ( blocks.length === 1 && - blocks[ 0 ].name === getFreeformContentHandlerName() + blocks[ 0 ].name === getFreeformContentHandlerName() && + blocks[ 0 ].name === 'core/freeform' ) { content = removep( content ); } diff --git a/packages/blocks/src/api/test/serializer.js b/packages/blocks/src/api/test/serializer.js index 22fa5bc7b6dc6a..6cb21470f9e1fa 100644 --- a/packages/blocks/src/api/test/serializer.js +++ b/packages/blocks/src/api/test/serializer.js @@ -244,7 +244,7 @@ describe( 'block serializer', () => { describe( 'serializeBlock()', () => { it( 'serializes the freeform content fallback block without comment delimiters', () => { - registerBlockType( 'core/freeform-block', { + registerBlockType( 'core/freeform', { category: 'text', title: 'freeform block', attributes: { @@ -254,8 +254,8 @@ describe( 'block serializer', () => { }, save: ( { attributes } ) => attributes.fruit, } ); - setFreeformContentHandlerName( 'core/freeform-block' ); - const block = createBlock( 'core/freeform-block', { + setFreeformContentHandlerName( 'core/freeform' ); + const block = createBlock( 'core/freeform', { fruit: 'Bananas', } ); @@ -264,7 +264,7 @@ describe( 'block serializer', () => { expect( content ).toBe( 'Bananas' ); } ); it( 'serializes the freeform content fallback block with comment delimiters in nested context', () => { - registerBlockType( 'core/freeform-block', { + registerBlockType( 'core/freeform', { category: 'text', title: 'freeform block', attributes: { @@ -274,17 +274,17 @@ describe( 'block serializer', () => { }, save: ( { attributes } ) => attributes.fruit, } ); - setFreeformContentHandlerName( 'core/freeform-block' ); - const block = createBlock( 'core/freeform-block', { + setFreeformContentHandlerName( 'core/freeform' ); + const block = createBlock( 'core/freeform', { fruit: 'Bananas', } ); const content = serializeBlock( block, { isInnerBlocks: true } ); expect( content ).toBe( - '\n' + + '\n' + 'Bananas\n' + - '' + '' ); } ); it( 'serializes the unregistered fallback block without comment delimiters', () => { diff --git a/packages/editor/src/store/test/selectors.js b/packages/editor/src/store/test/selectors.js index 2a22b4523444ba..8b36e789614537 100644 --- a/packages/editor/src/store/test/selectors.js +++ b/packages/editor/src/store/test/selectors.js @@ -260,7 +260,7 @@ describe( 'selectors', () => { parent: [ 'core/test-block-b' ], } ); - registerBlockType( 'core/test-freeform', { + registerBlockType( 'core/freeform', { save: ( props ) => { props.attributes.content }, category: 'text', title: 'Test Freeform Content Handler', @@ -287,7 +287,7 @@ describe( 'selectors', () => { save: () => null, } ); - setFreeformContentHandlerName( 'core/test-freeform' ); + setFreeformContentHandlerName( 'core/freeform' ); setDefaultBlockName( 'core/test-default' ); cachedSelectors.forEach( ( { clear } ) => clear() ); @@ -298,7 +298,7 @@ describe( 'selectors', () => { unregisterBlockType( 'core/test-block-a' ); unregisterBlockType( 'core/test-block-b' ); unregisterBlockType( 'core/test-block-c' ); - unregisterBlockType( 'core/test-freeform' ); + unregisterBlockType( 'core/freeform' ); unregisterBlockType( 'core/test-default' ); setFreeformContentHandlerName( undefined ); @@ -1335,7 +1335,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -1362,7 +1362,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -1736,7 +1736,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -1762,7 +1762,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -1790,7 +1790,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: 'Test Data', @@ -1818,7 +1818,7 @@ describe( 'selectors', () => { value: [ { clientId: 123, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -1826,7 +1826,7 @@ describe( 'selectors', () => { }, { clientId: 456, - name: 'core/test-freeform', + name: 'core/freeform', isValid: true, attributes: { content: '', @@ -2409,7 +2409,7 @@ describe( 'selectors', () => { } ); it( "returns removep'd serialization of blocks for single unknown", () => { - const unknownBlock = createBlock( 'core/test-freeform', { + const unknownBlock = createBlock( 'core/freeform', { content: '

foo

', } ); const state = { @@ -2431,10 +2431,10 @@ describe( 'selectors', () => { } ); it( "returns non-removep'd serialization of blocks for multiple unknown", () => { - const firstUnknown = createBlock( 'core/test-freeform', { + const firstUnknown = createBlock( 'core/freeform', { content: '

foo

', } ); - const secondUnknown = createBlock( 'core/test-freeform', { + const secondUnknown = createBlock( 'core/freeform', { content: '

bar

', } ); const state = {