From 2b02e30ffc5f085eca69e39d785f85a86b86b725 Mon Sep 17 00:00:00 2001 From: Jerry Jones Date: Wed, 1 May 2024 13:46:34 -0500 Subject: [PATCH 1/3] Refactor InserterTabs to use children and remove re-memoizing --- .../src/components/inserter/menu.js | 179 +++++++++--------- .../src/components/inserter/tabs.js | 4 +- 2 files changed, 89 insertions(+), 94 deletions(-) diff --git a/packages/block-editor/src/components/inserter/menu.js b/packages/block-editor/src/components/inserter/menu.js index 672f625465117f..2832a80a219918 100644 --- a/packages/block-editor/src/components/inserter/menu.js +++ b/packages/block-editor/src/components/inserter/menu.js @@ -126,6 +126,7 @@ function InserterMenu( if ( selectedTab === 'media' ) { return null; } + return ( <> ( + const blocksTab = useMemo( () => { + if ( selectedTab !== 'blocks' ) { + return null; + } + + return ( <> - { inserterSearch } - { ! delayedFilterValue && ( - <> -
- -
- { showInserterHelpPanel && ( -
- - { __( 'A tip for using the block editor' ) } - - -
- ) } - +
+ +
+ { showInserterHelpPanel && ( +
+ + { __( 'A tip for using the block editor' ) } + + +
) } - ), - [ - destinationRootClientId, - onInsert, - onHover, - showMostUsedBlocks, - showInserterHelpPanel, - inserterSearch, - delayedFilterValue, - ] - ); + ); + }, [ + destinationRootClientId, + onInsert, + onHover, + showMostUsedBlocks, + showInserterHelpPanel, + selectedTab, + ] ); - const patternsTab = useMemo( - () => ( - <> - { inserterSearch } - { ! delayedFilterValue && ( - { + if ( selectedTab !== 'patterns' ) { + return null; + } + + return ( + + { showPatternPanel && ( + - { showPatternPanel && ( - - ) } - + onHover={ onHoverPattern } + category={ selectedPatternCategory } + patternFilter={ patternFilter } + showTitlesAsTooltip + /> ) } - - ), - [ - destinationRootClientId, - onHoverPattern, - onInsertPattern, - onClickPatternCategory, - patternFilter, - selectedPatternCategory, - showPatternPanel, - inserterSearch, - delayedFilterValue, - ] - ); + + ); + }, [ + destinationRootClientId, + onHoverPattern, + onInsertPattern, + onClickPatternCategory, + patternFilter, + selectedPatternCategory, + showPatternPanel, + selectedTab, + ] ); - const mediaTab = useMemo( - () => ( + const mediaTab = useMemo( () => { + if ( selectedTab !== 'media' ) { + return null; + } + + return ( ) } - ), - [ - destinationRootClientId, - onInsert, - selectedMediaCategory, - setSelectedMediaCategory, - showMediaPanel, - ] - ); - - const inserterTabsContents = useMemo( - () => ( { - blocks: blocksTab, - patterns: patternsTab, - media: mediaTab, - } ), - [ blocksTab, mediaTab, patternsTab ] - ); + ); + }, [ + destinationRootClientId, + onInsert, + selectedMediaCategory, + setSelectedMediaCategory, + showMediaPanel, + selectedTab, + ] ); // When the pattern panel is showing, we want to use zoom out mode useZoomOut( showPatternPanel ); @@ -318,11 +308,16 @@ function InserterMenu( ref={ ref } >
- + + { inserterSearch } + { selectedTab === 'blocks' && + ! delayedFilterValue && + blocksTab } + { selectedTab === 'patterns' && + ! delayedFilterValue && + patternsTab } + { selectedTab === 'media' && mediaTab } +
{ showInserterHelpPanel && hoveredItem && ( - { tabsContents[ tab.name ] } + { children } ) ) } From 4483d6a8220470546ed76d7e6cf7908aed2f2cc4 Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Thu, 2 May 2024 11:27:55 +0100 Subject: [PATCH 2/3] don't make selectedTab a dependency of each tab --- .../block-editor/src/components/inserter/menu.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/block-editor/src/components/inserter/menu.js b/packages/block-editor/src/components/inserter/menu.js index 2832a80a219918..5ae8f2cb88e7a0 100644 --- a/packages/block-editor/src/components/inserter/menu.js +++ b/packages/block-editor/src/components/inserter/menu.js @@ -179,10 +179,6 @@ function InserterMenu( ] ); const blocksTab = useMemo( () => { - if ( selectedTab !== 'blocks' ) { - return null; - } - return ( <>
@@ -209,14 +205,9 @@ function InserterMenu( onHover, showMostUsedBlocks, showInserterHelpPanel, - selectedTab, ] ); const patternsTab = useMemo( () => { - if ( selectedTab !== 'patterns' ) { - return null; - } - return ( { - if ( selectedTab !== 'media' ) { - return null; - } - return ( Date: Thu, 2 May 2024 17:54:12 +0100 Subject: [PATCH 3/3] cast the categories to a bool --- packages/block-editor/src/components/inserter/menu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/block-editor/src/components/inserter/menu.js b/packages/block-editor/src/components/inserter/menu.js index 5ae8f2cb88e7a0..b79a44f6ea9428 100644 --- a/packages/block-editor/src/components/inserter/menu.js +++ b/packages/block-editor/src/components/inserter/menu.js @@ -118,9 +118,9 @@ function InserterMenu( const showPatternPanel = selectedTab === 'patterns' && ! delayedFilterValue && - selectedPatternCategory; + !! selectedPatternCategory; - const showMediaPanel = selectedTab === 'media' && selectedMediaCategory; + const showMediaPanel = selectedTab === 'media' && !! selectedMediaCategory; const inserterSearch = useMemo( () => { if ( selectedTab === 'media' ) {