WP_Style_Engine::get_individual_property_css_declarations() – Style value parser that returns a CSS definition array comprising style properties that have keys representing individual style properties, otherwise known as longhand CSS properties.

You appear to be a bot. Output may be restricted

Description

Style value parser that returns a CSS definition array comprising style properties that have keys representing individual style properties, otherwise known as longhand CSS properties.

e.g., "$style_property-$individual_feature: $value;", which could represent the following: "border-{top|right|bottom|left}-{color|width|style}: {value};" or, "border-image-{outset|source|width|repeat|slice}: {value};"

Usage

$string[] = WP_Style_Engine::get_individual_property_css_declarations( $style_value, $individual_property_definition, $options );

Parameters

$style_value
( array ) required – A single raw style value from $block_styles array.
$individual_property_definition
( array ) required – A single style definition from BLOCK_STYLE_DEFINITIONS_METADATA representing an individual property of a CSS property, e.g., 'top' in 'border-top'.
$options
( array ) optional – { Optional. An array of options. Default empty array.
$convert_vars_to_classnames
( bool ) optional – Whether to skip converting incoming CSS var patterns, e.g., `var:preset|<PRESET_TYPE>|<PRESET_SLUG>`, to var( –wp–preset–* ) values. Default `false`. }

Returns

string[] An associative array of CSS definitions, e.g., array( "$property" => "$value", "$property" => "$value" ).

Source

File name: wordpress/wp-includes/style-engine/class-wp-style-engine.php


Lines:

1 to 36 of 36
  protected static function get_individual_property_css_declarations( $style_value, $individual_property_definition, $options = array() ) {
    if ( ! is_array( $style_value ) || empty( $style_value ) || empty( $individual_property_definition['path'] ) ) {
      return array();
    }

    /*
		 * The first item in $individual_property_definition['path'] array tells us the style property, e.g., "border".
		 * We use this to get a corresponding CSS style definition such as "color" or "width" from the same group.
		 * The second item in $individual_property_definition['path'] array refers to the individual property marker, e.g., "top".
		 */
    $definition_group_key    = $individual_property_definition['path'][0];
    $individual_property_key = $individual_property_definition['path'][1];
    $should_skip_css_vars    = isset( $options['convert_vars_to_classnames'] ) && true === $options['convert_vars_to_classnames'];
    $css_declarations        = array();

    foreach ( $style_value as $css_property => $value ) {
      if ( empty( $value ) ) {
        continue;
      }

      // Build a path to the individual rules in definitions.
      $style_definition_path = array( $definition_group_key, $css_property );
      $style_definition      = _wp_array_get( static::BLOCK_STYLE_DEFINITIONS_METADATA, $style_definition_path, null );

      if ( $style_definition && isset( $style_definition['property_keys']['individual'] ) ) {
        // Set a CSS var if there is a valid preset value.
        if ( is_string( $value ) && str_contains( $value, 'var:' ) && ! $should_skip_css_vars && ! empty( $individual_property_definition['css_vars'] ) ) {
          $value = static::get_css_var_value( $value, $individual_property_definition['css_vars'] );
        }
        $individual_css_property                      = sprintf( $style_definition['property_keys']['individual'], $individual_property_key );
        $css_declarations[ $individual_css_property ] = $value;
      }
    }
    return $css_declarations;
  }
 

 View on GitHub View on Trac