diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/block-supports/dimensions.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/block-supports/dimensions.php Tue Sep 27 16:37:53 2022 +0200 @@ -0,0 +1,73 @@ +attributes ) { + $block_type->attributes = array(); + } + + // Check for existing style attribute definition e.g. from block.json. + if ( array_key_exists( 'style', $block_type->attributes ) ) { + return; + } + + $has_dimensions_support = block_has_support( $block_type, array( '__experimentalDimensions' ), false ); + // Future block supports such as height & width will be added here. + + if ( $has_dimensions_support ) { + $block_type->attributes['style'] = array( + 'type' => 'object', + ); + } +} + +/** + * Adds CSS classes for block dimensions to the incoming attributes array. + * This will be applied to the block markup in the front-end. + * + * @since 5.9.0 + * @access private + * + * @param WP_Block_Type $block_type Block Type. + * @param array $block_attributes Block attributes. + * @return array Block dimensions CSS classes and inline styles. + */ +function wp_apply_dimensions_support( $block_type, $block_attributes ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if ( wp_should_skip_block_supports_serialization( $block_type, '__experimentalDimensions' ) ) { + return array(); + } + + $styles = array(); + + // Height support to be added in near future. + // Width support to be added in near future. + + return empty( $styles ) ? array() : array( 'style' => implode( ' ', $styles ) ); +} + +// Register the block support. +WP_Block_Supports::get_instance()->register( + 'dimensions', + array( + 'register_attribute' => 'wp_register_dimensions_support', + 'apply' => 'wp_apply_dimensions_support', + ) +);