diff --git a/packages/block-editor/src/components/block-actions/index.js b/packages/block-editor/src/components/block-actions/index.js index 2f4a5a9ae399bf..c062f582d6ad77 100644 --- a/packages/block-editor/src/components/block-actions/index.js +++ b/packages/block-editor/src/components/block-actions/index.js @@ -36,8 +36,6 @@ export default function BlockActions( { const rootClientId = getBlockRootClientId( clientIds[ 0 ] ); return { - blocks, - rootClientId, canMove: canMoveBlocks( clientIds, rootClientId ), canRemove: canRemoveBlocks( clientIds, rootClientId ), canInsertDefaultBlock: canInsertBlockType( @@ -62,10 +60,9 @@ export default function BlockActions( { }, [ clientIds, getDefaultBlockName ] ); + const { getBlocksByClientId, getBlocks } = useSelect( blockEditorStore ); const { - blocks, - rootClientId, canMove, canRemove, canInsertDefaultBlock, @@ -94,8 +91,6 @@ export default function BlockActions( { canInsertDefaultBlock, canMove, canRemove, - rootClientId, - blocks, onDuplicate() { return duplicateBlocks( clientIds, updateSelection ); }, @@ -120,14 +115,17 @@ export default function BlockActions( { setBlockMovingClientId( clientIds[ 0 ] ); }, onGroup() { - if ( ! blocks.length ) { + if ( ! clientIds.length ) { return; } const groupingBlockName = getGroupingBlockName(); // Activate the `transform` on `core/group` which does the conversion. - const newBlocks = switchToBlockType( blocks, groupingBlockName ); + const newBlocks = switchToBlockType( + getBlocksByClientId( clientIds ), + groupingBlockName + ); if ( ! newBlocks ) { return; @@ -135,12 +133,11 @@ export default function BlockActions( { replaceBlocks( clientIds, newBlocks ); }, onUngroup() { - if ( ! blocks.length ) { + if ( ! clientIds.length ) { return; } - const innerBlocks = blocks[ 0 ].innerBlocks; - + const innerBlocks = getBlocks( clientIds[ 0 ] ); if ( ! innerBlocks.length ) { return; } @@ -148,16 +145,13 @@ export default function BlockActions( { replaceBlocks( clientIds, innerBlocks ); }, onCopy() { - const selectedBlockClientIds = blocks.map( - ( { clientId } ) => clientId - ); - if ( blocks.length === 1 ) { - flashBlock( selectedBlockClientIds[ 0 ] ); + if ( clientIds.length === 1 ) { + flashBlock( clientIds[ 0 ] ); } - notifyCopy( 'copy', selectedBlockClientIds ); + notifyCopy( 'copy', clientIds ); }, async onPasteStyles() { - await pasteStyles( blocks ); + await pasteStyles( getBlocksByClientId( clientIds ) ); }, } ); } diff --git a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js index ae28ca6e5bad97..0b13970c5d570c 100644 --- a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js +++ b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js @@ -33,8 +33,12 @@ const POPOVER_PROPS = { placement: 'bottom-start', }; -function CopyMenuItem( { blocks, onCopy, label } ) { - const ref = useCopyToClipboard( () => serialize( blocks ), onCopy ); +function CopyMenuItem( { clientIds, onCopy, label } ) { + const { getBlocksByClientId } = useSelect( blockEditorStore ); + const ref = useCopyToClipboard( + () => serialize( getBlocksByClientId( clientIds ) ), + onCopy + ); const copyMenuItemLabel = label ? label : __( 'Copy' ); return { copyMenuItemLabel }; } @@ -208,7 +212,6 @@ export function BlockSettingsDropdown( { onCopy, onPasteStyles, onMoveTo, - blocks, } ) => ( ) } { canDuplicate && ( @@ -327,7 +330,7 @@ export function BlockSettingsDropdown( { { canCopyStyles && (