WordPress Version: 6.1
/**
* Colors block support flag.
*
* @package WordPress
* @since 5.6.0
*/
/**
* Registers the style and colors block attributes for block types that support it.
*
* @since 5.6.0
* @since 6.1.0 Improved $color_support assignment optimization.
* @access private
*
* @param WP_Block_Type $block_type Block Type.
*/
function wp_register_colors_support($block_type)
{
$color_support = property_exists($block_type, 'supports') ? _wp_array_get($block_type->supports, array('color'), false) : false;
$has_text_colors_support = true === $color_support || is_array($color_support) && _wp_array_get($color_support, array('text'), true);
$has_background_colors_support = true === $color_support || is_array($color_support) && _wp_array_get($color_support, array('background'), true);
$has_gradients_support = _wp_array_get($color_support, array('gradients'), false);
$has_link_colors_support = _wp_array_get($color_support, array('link'), false);
$has_color_support = $has_text_colors_support || $has_background_colors_support || $has_gradients_support || $has_link_colors_support;
if (!$block_type->attributes) {
$block_type->attributes = array();
}
if ($has_color_support && !array_key_exists('style', $block_type->attributes)) {
$block_type->attributes['style'] = array('type' => 'object');
}
if ($has_background_colors_support && !array_key_exists('backgroundColor', $block_type->attributes)) {
$block_type->attributes['backgroundColor'] = array('type' => 'string');
}
if ($has_text_colors_support && !array_key_exists('textColor', $block_type->attributes)) {
$block_type->attributes['textColor'] = array('type' => 'string');
}
if ($has_gradients_support && !array_key_exists('gradient', $block_type->attributes)) {
$block_type->attributes['gradient'] = array('type' => 'string');
}
}