From ab3fb388bc24c33acd2a7a619815a0fcdad7f911 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 9 Jul 2020 12:42:18 +0100 Subject: [PATCH] Small performance tweaks --- .../src/components/block-draggable/index.js | 12 ++---- .../components/spacing-panel-control/index.js | 2 +- .../components/use-block-drop-zone/index.js | 43 +++++++++++-------- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/packages/block-editor/src/components/block-draggable/index.js b/packages/block-editor/src/components/block-draggable/index.js index 7be361bb048b1..3eb99d6ac437b 100644 --- a/packages/block-editor/src/components/block-draggable/index.js +++ b/packages/block-editor/src/components/block-draggable/index.js @@ -18,20 +18,17 @@ const BlockDraggable = ( { onDragStart, onDragEnd, } ) => { - const { srcRootClientId, index, isDraggable } = useSelect( + const { srcRootClientId, isDraggable } = useSelect( ( select ) => { - const { - getBlockIndex, - getBlockRootClientId, - getTemplateLock, - } = select( 'core/block-editor' ); + const { getBlockRootClientId, getTemplateLock } = select( + 'core/block-editor' + ); const rootClientId = getBlockRootClientId( clientIds[ 0 ] ); const templateLock = rootClientId ? getTemplateLock( rootClientId ) : null; return { - index: getBlockIndex( clientIds[ 0 ], rootClientId ), srcRootClientId: rootClientId, isDraggable: 'all' !== templateLock, }; @@ -64,7 +61,6 @@ const BlockDraggable = ( { const transferData = { type: 'block', - srcIndex: index, srcClientIds: clientIds, srcRootClientId, }; diff --git a/packages/block-editor/src/components/spacing-panel-control/index.js b/packages/block-editor/src/components/spacing-panel-control/index.js index 866e31e0ed9fd..972c80deadd16 100644 --- a/packages/block-editor/src/components/spacing-panel-control/index.js +++ b/packages/block-editor/src/components/spacing-panel-control/index.js @@ -19,7 +19,7 @@ export default function SpacingPanelControl( { children, ...props } ) { const isSpacingEnabled = useSelect( ( select ) => { const { getSettings } = select( 'core/block-editor' ); return get( getSettings(), '__experimentalEnableCustomSpacing' ); - } ); + }, [] ); if ( ! isSpacingEnabled ) return null; diff --git a/packages/block-editor/src/components/use-block-drop-zone/index.js b/packages/block-editor/src/components/use-block-drop-zone/index.js index 6f0f36550196f..de3e130df3edf 100644 --- a/packages/block-editor/src/components/use-block-drop-zone/index.js +++ b/packages/block-editor/src/components/use-block-drop-zone/index.js @@ -137,7 +137,6 @@ function parseDropEvent( event ) { let result = { srcRootClientId: null, srcClientIds: null, - srcIndex: null, type: null, }; @@ -176,28 +175,32 @@ export default function useBlockDropZone( { } ) { const [ targetBlockIndex, setTargetBlockIndex ] = useState( null ); - function selector( select ) { - const { - getBlockListSettings, - getClientIdsOfDescendants, - getSettings, - getTemplateLock, - } = select( 'core/block-editor' ); - return { - orientation: getBlockListSettings( targetRootClientId ) - ?.orientation, - getClientIdsOfDescendants, - hasUploadPermissions: !! getSettings().mediaUpload, - isLockedAll: getTemplateLock( targetRootClientId ) === 'all', - }; - } - const { getClientIdsOfDescendants, + getBlockIndex, hasUploadPermissions, isLockedAll, orientation, - } = useSelect( selector, [ targetRootClientId ] ); + } = useSelect( + ( select ) => { + const { + getBlockListSettings, + getClientIdsOfDescendants: _getClientIdsOfDescendants, + getBlockIndex: _getBlockIndex, + getSettings, + getTemplateLock, + } = select( 'core/block-editor' ); + return { + orientation: getBlockListSettings( targetRootClientId ) + ?.orientation, + getClientIdsOfDescendants: _getClientIdsOfDescendants, + getBlockIndex: _getBlockIndex, + hasUploadPermissions: !! getSettings().mediaUpload, + isLockedAll: getTemplateLock( targetRootClientId ) === 'all', + }; + }, + [ targetRootClientId ] + ); const { insertBlocks, updateBlockAttributes, @@ -249,7 +252,6 @@ export default function useBlockDropZone( { const { srcRootClientId: sourceRootClientId, srcClientIds: sourceClientIds, - srcIndex: sourceBlockIndex, type: dropType, } = parseDropEvent( event ); @@ -258,6 +260,8 @@ export default function useBlockDropZone( { return; } + const sourceBlockIndex = getBlockIndex( sourceClientIds[ 0 ] ); + // If the user is dropping to the same position, return early. if ( sourceRootClientId === targetRootClientId && @@ -299,6 +303,7 @@ export default function useBlockDropZone( { }, [ getClientIdsOfDescendants, + getBlockIndex, targetBlockIndex, moveBlocksToPosition, targetRootClientId,