diff --git a/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php b/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
index 5c1639d3d2ce6..c4b6935142dc3 100644
--- a/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
+++ b/lib/compat/wordpress-6.1/class-wp-theme-json-6-1.php
@@ -1151,15 +1151,6 @@ protected static function get_property_value( $styles, $path, $theme_json = null
'classes' => array(),
'properties' => array( 'padding', 'margin' ),
),
- array(
- 'path' => array( 'spacing', 'spacingScale' ),
- 'prevent_override' => false,
- 'use_default_names' => true,
- 'value_key' => 'size',
- 'css_vars' => '--wp--preset--spacing--$slug',
- 'classes' => array(),
- 'properties' => array( 'padding', 'margin' ),
- ),
);
/**
diff --git a/packages/block-editor/src/components/block-parent-selector/index.js b/packages/block-editor/src/components/block-parent-selector/index.js
index 8d24ba26794d5..caf488ac06ec6 100644
--- a/packages/block-editor/src/components/block-parent-selector/index.js
+++ b/packages/block-editor/src/components/block-parent-selector/index.js
@@ -83,10 +83,10 @@ export default function BlockParentSelector() {
label={ sprintf(
/* translators: %s: Name of the block's parent. */
__( 'Select %s' ),
- blockInformation.title
+ blockInformation?.title
) }
showTooltip
- icon={ }
+ icon={ }
/>
);
diff --git a/packages/block-editor/src/components/block-popover/inbetween.js b/packages/block-editor/src/components/block-popover/inbetween.js
index e7e207cb733f1..ae8a3b3203800 100644
--- a/packages/block-editor/src/components/block-popover/inbetween.js
+++ b/packages/block-editor/src/components/block-popover/inbetween.js
@@ -226,7 +226,7 @@ function BlockPopoverInbetween( {
forcePopoverRecompute
);
return () => {
- previousElement.ownerDocument.defaultView.removeEventListener(
+ previousElement.ownerDocument.defaultView?.removeEventListener(
'resize',
forcePopoverRecompute
);
diff --git a/packages/block-editor/src/components/block-popover/index.js b/packages/block-editor/src/components/block-popover/index.js
index 03913faa26e42..7ece8e428317c 100644
--- a/packages/block-editor/src/components/block-popover/index.js
+++ b/packages/block-editor/src/components/block-popover/index.js
@@ -42,24 +42,15 @@ function BlockPopover(
ref,
usePopoverScroll( __unstableContentRef ),
] );
- const style = useMemo( () => {
- if ( ! selectedElement || lastSelectedElement !== selectedElement ) {
- return {};
- }
-
- return {
- position: 'absolute',
- width: selectedElement.offsetWidth,
- height: selectedElement.offsetHeight,
- };
- }, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );
- const [ popoverAnchorRecomputeCounter, forceRecomputePopoverAnchor ] =
- useReducer(
- // Module is there to make sure that the counter doesn't overflow.
- ( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,
- 0
- );
+ const [
+ popoverDimensionsRecomputeCounter,
+ forceRecomputePopoverDimensions,
+ ] = useReducer(
+ // Module is there to make sure that the counter doesn't overflow.
+ ( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,
+ 0
+ );
// When blocks are moved up/down, they are animated to their new position by
// updating the `transform` property manually (i.e. without using CSS
@@ -74,7 +65,7 @@ function BlockPopover(
}
const observer = new window.MutationObserver(
- forceRecomputePopoverAnchor
+ forceRecomputePopoverDimensions
);
observer.observe( selectedElement, { attributes: true } );
@@ -83,12 +74,36 @@ function BlockPopover(
};
}, [ selectedElement ] );
+ const style = useMemo( () => {
+ if (
+ // popoverDimensionsRecomputeCounter is by definition always equal or greater
+ // than 0. This check is only there to satisfy the correctness of the
+ // exhaustive-deps rule for the `useMemo` hook.
+ popoverDimensionsRecomputeCounter < 0 ||
+ ! selectedElement ||
+ lastSelectedElement !== selectedElement
+ ) {
+ return {};
+ }
+
+ return {
+ position: 'absolute',
+ width: selectedElement.offsetWidth,
+ height: selectedElement.offsetHeight,
+ };
+ }, [
+ selectedElement,
+ lastSelectedElement,
+ __unstableRefreshSize,
+ popoverDimensionsRecomputeCounter,
+ ] );
+
const popoverAnchor = useMemo( () => {
if (
- // popoverAnchorRecomputeCounter is by definition always equal or greater
+ // popoverDimensionsRecomputeCounter is by definition always equal or greater
// than 0. This check is only there to satisfy the correctness of the
// exhaustive-deps rule for the `useMemo` hook.
- popoverAnchorRecomputeCounter < 0 ||
+ popoverDimensionsRecomputeCounter < 0 ||
! selectedElement ||
( bottomClientId && ! lastSelectedElement )
) {
@@ -132,7 +147,7 @@ function BlockPopover(
bottomClientId,
lastSelectedElement,
selectedElement,
- popoverAnchorRecomputeCounter,
+ popoverDimensionsRecomputeCounter,
] );
if ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {
diff --git a/packages/block-editor/src/components/image-editor/use-transform-image.js b/packages/block-editor/src/components/image-editor/use-transform-image.js
index d3e514d0f33f1..885ae8894c092 100644
--- a/packages/block-editor/src/components/image-editor/use-transform-image.js
+++ b/packages/block-editor/src/components/image-editor/use-transform-image.js
@@ -41,7 +41,7 @@ function useTransformState( { url, naturalWidth, naturalHeight } ) {
if ( angle === 0 ) {
setEditedUrl();
setRotation( angle );
- setAspect( 1 / aspect );
+ setAspect( naturalWidth / naturalHeight );
setPosition( {
x: -( position.y * naturalAspectRatio ),
y: position.x * naturalAspectRatio,
@@ -80,7 +80,7 @@ function useTransformState( { url, naturalWidth, naturalHeight } ) {
canvas.toBlob( ( blob ) => {
setEditedUrl( URL.createObjectURL( blob ) );
setRotation( angle );
- setAspect( 1 / aspect );
+ setAspect( canvas.width / canvas.height );
setPosition( {
x: -( position.y * naturalAspectRatio ),
y: position.x * naturalAspectRatio,
diff --git a/packages/block-editor/src/components/spacing-sizes-control/index.js b/packages/block-editor/src/components/spacing-sizes-control/index.js
index ba379713b4bcc..7b016e7a08ee7 100644
--- a/packages/block-editor/src/components/spacing-sizes-control/index.js
+++ b/packages/block-editor/src/components/spacing-sizes-control/index.js
@@ -1,9 +1,14 @@
+/**
+ * External dependencies
+ */
+import classnames from 'classnames';
+
/**
* WordPress dependencies
*/
import { useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
-import { __experimentalText as Text } from '@wordpress/components';
+import { BaseControl } from '@wordpress/components';
/**
* Internal dependencies
@@ -68,8 +73,15 @@ export default function SpacingSizesControl( {
};
return (
-