From a6425e64ea13ec3059d901ce6d526c430398c718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:40:52 +0200 Subject: [PATCH] Cast string values to arrays --- packages/block-editor/src/store/selectors.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/block-editor/src/store/selectors.js b/packages/block-editor/src/store/selectors.js index df138f566a466b..e537c43651ea4a 100644 --- a/packages/block-editor/src/store/selectors.js +++ b/packages/block-editor/src/store/selectors.js @@ -1595,8 +1595,18 @@ const isBlockVisibleInTheInserter = ( checkedBlocks.add( blockName ); // If parent blocks are not visible, child blocks should be hidden too. - if ( Array.isArray( blockType?.parent ) ) { - return blockType.parent.some( + // + // In some scenarios, blockType.parent may be a string. + // A better approach would be sanitize parent in all the places that can be modified: + // block registration, processBlockType, filters, etc. + // In the meantime, this is a hotfix to prevent the editor from crashing. + const parent = + typeof blockType.parent === 'string' || + blockType.parent instanceof String + ? [ blockType.parent ] + : blockType.parent; + if ( Array.isArray( parent ) ) { + return parent.some( ( name ) => ( blockName !== name && isBlockVisibleInTheInserter( @@ -1610,6 +1620,7 @@ const isBlockVisibleInTheInserter = ( name === 'core/post-content' ); } + return true; };