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 ;
}
@@ -208,7 +212,6 @@ export function BlockSettingsDropdown( {
onCopy,
onPasteStyles,
onMoveTo,
- blocks,
} ) => (
) }
{ canDuplicate && (
@@ -327,7 +330,7 @@ export function BlockSettingsDropdown( {
{ canCopyStyles && (