From df846747049499dea62cdcfc1b9fe26f1ffee466 Mon Sep 17 00:00:00 2001 From: David Aguilera Date: Tue, 27 Dec 2022 22:32:50 +0100 Subject: [PATCH] rich-text: Fix bug where bare tag name format types could not be registered (#46798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add “core/unknown” format in test to properly flag bug. * Allow registration of a bare tag name format when said tag is handled by “core/unknown”. Co-authored-by: David Aguilera --- packages/rich-text/src/register-format-type.js | 5 ++++- packages/rich-text/src/test/register-format-type.js | 13 ++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/rich-text/src/register-format-type.js b/packages/rich-text/src/register-format-type.js index b271091cbe6a..8ea19a97f595 100644 --- a/packages/rich-text/src/register-format-type.js +++ b/packages/rich-text/src/register-format-type.js @@ -82,7 +82,10 @@ export function registerFormatType( name, settings ) { richTextStore ).getFormatTypeForBareElement( settings.tagName ); - if ( formatTypeForBareElement ) { + if ( + formatTypeForBareElement && + formatTypeForBareElement.name !== 'core/unknown' + ) { window.console.error( `Format "${ formatTypeForBareElement.name }" is already registered to handle bare tag name "${ settings.tagName }".` ); diff --git a/packages/rich-text/src/test/register-format-type.js b/packages/rich-text/src/test/register-format-type.js index 0d044d28facf..0f5c16eabf23 100644 --- a/packages/rich-text/src/test/register-format-type.js +++ b/packages/rich-text/src/test/register-format-type.js @@ -1,7 +1,7 @@ /** * WordPress dependencies */ -import { select } from '@wordpress/data'; +import { dispatch, select } from '@wordpress/data'; /** * Internal dependencies @@ -11,10 +11,21 @@ import { unregisterFormatType } from '../unregister-format-type'; import { getFormatType } from '../get-format-type'; import { store as richTextStore } from '../store'; +const UNKNOWN_FORMAT = { + name: 'core/unknown', + title: 'Clear Unknown Formatting', + tagName: '*', + className: null, + edit: () => null, +}; + describe( 'registerFormatType', () => { beforeAll( () => { // Initialize the rich-text store. require( '../store' ); + + // Register "core/unknown" format + dispatch( richTextStore ).addFormatTypes( UNKNOWN_FORMAT ); } ); afterEach( () => {