diff --git a/packages/block-editor/src/store/selectors.js b/packages/block-editor/src/store/selectors.js index 3fdaadb24fc12..787225f18a0a5 100644 --- a/packages/block-editor/src/store/selectors.js +++ b/packages/block-editor/src/store/selectors.js @@ -1628,8 +1628,18 @@ const isBlockVisibleInTheInserter = ( checkedBlocks.add( blockName ); // If parent blocks are not visible, child blocks should be hidden too. - if ( !! blockType.parent?.length ) { - 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( @@ -1643,6 +1653,7 @@ const isBlockVisibleInTheInserter = ( name === 'core/post-content' ); } + return true; };