PluginProbe
Gutenberg / trunk
Gutenberg vtrunk
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
← All changes | lib/class-wp-theme-json-gutenberg.php +166 -63 23.8.0 → trunk View file →
@@ -124,8 +124,9 @@
124 124 * `prevent_override` value for `color.duotone` to use `color.defaultDuotone`.
125 125 * @since 6.2.0 Added 'shadow' presets.
126 126 * @since 6.6.0 Updated the 'prevent_override' value for font size presets to use 'typography.defaultFontSizes' and spacing size presets to use `spacing.defaultSpacingSizes`.
127 127 * @since 6.6.0 Added `aspectRatios`.
128 + * @since 7.2.0 Added 'textShadow' presets.
128 129 * @var array
129 130 */
130 131 const PRESETS_METADATA = array(
131 132 array(
@@ -186,8 +187,17 @@
186 187 'classes' => array( '.has-$slug-font-family' => 'font-family' ),
187 188 'properties' => array( 'font-family' ),
188 189 ),
189 190 array(
191 + 'path' => array( 'typography', 'textShadowPresets' ),
192 + 'prevent_override' => array( 'typography', 'defaultTextShadowPresets' ),
193 + 'use_default_names' => false,
194 + 'value_key' => 'textShadow',
195 + 'css_vars' => '--wp--preset--text-shadow--$slug',
196 + 'classes' => array( '.has-$slug-text-shadow' => 'text-shadow' ),
197 + 'properties' => array( 'text-shadow' ),
198 + ),
199 + array(
190 200 'path' => array( 'spacing', 'spacingSizes' ),
191 201 'prevent_override' => array( 'spacing', 'defaultSpacingSizes' ),
192 202 'use_default_names' => true,
193 203 'value_key' => 'size',
@@ -392,8 +402,10 @@
392 402 * @since 7.0.0 Added type markers to the schema for boolean values.
393 403 * @since 7.0.0 Added `dimensions.width`, `dimensions.height`, and
394 404 * `typography.textIndent` properties.
395 405 * @since 7.1.0 Added `viewport` property.
406 + * @since 7.2.0 Added `typography.textShadow`, `typography.textShadowPresets`,
407 + * and `typography.defaultTextShadowPresets`.
396 408 * @var array
397 409 */
398 410 const VALID_SETTINGS = array(
399 411 'appearanceTools' => null,
@@ -469,24 +481,27 @@
469 481 'presets' => null,
470 482 'defaultPresets' => null,
471 483 ),
472 484 'typography' => array(
473 - 'fluid' => null,
474 - 'customFontSize' => null,
475 - 'defaultFontSizes' => null,
476 - 'dropCap' => null,
477 - 'fontFamilies' => null,
478 - 'fontSizes' => null,
479 - 'fontStyle' => null,
480 - 'fontWeight' => null,
481 - 'letterSpacing' => null,
482 - 'lineHeight' => null,
483 - 'textAlign' => null,
484 - 'textColumns' => null,
485 - 'textDecoration' => null,
486 - 'textIndent' => null,
487 - 'textTransform' => null,
488 - 'writingMode' => null,
485 + 'fluid' => null,
486 + 'customFontSize' => null,
487 + 'defaultFontSizes' => null,
488 + 'dropCap' => null,
489 + 'fontFamilies' => null,
490 + 'fontSizes' => null,
491 + 'fontStyle' => null,
492 + 'fontWeight' => null,
493 + 'letterSpacing' => null,
494 + 'lineHeight' => null,
495 + 'textAlign' => null,
496 + 'textColumns' => null,
497 + 'textDecoration' => null,
498 + 'textIndent' => null,
499 + 'textTransform' => null,
500 + 'textShadow' => null,
501 + 'defaultTextShadowPresets' => null,
502 + 'textShadowPresets' => null,
503 + 'writingMode' => null,
489 504 ),
490 505 'viewport' => array(
491 506 'mobile' => null,
492 507 'tablet' => null,
@@ -651,9 +666,9 @@
651 666 *
652 667 * @since 7.1.0
653 668 *
654 669 * @param mixed $viewport_settings Viewport settings from theme.json.
655 - * @param array $options {
670 + * @param array $options {
656 671 * Optional. Options for generating media queries.
657 672 *
658 673 * @type bool $include_desktop Whether to include the desktop media query. Default false.
659 674 * }
@@ -842,8 +857,9 @@
842 857 'button' => '.wp-element-button, .wp-block-button__link',
843 858 // The block classes are necessary to target older content that won't use the new class names.
844 859 'caption' => '.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption',
845 860 'cite' => 'cite',
861 + 'label' => 'label',
846 862 'select' => 'select',
847 863 'textInput' => 'textarea, input:where([type=email],[type=number],[type=password],[type=search],[type=text],[type=tel],[type=url])',
848 864 );
849 865
@@ -915,13 +931,15 @@
915 931
916 932 /**
917 933 * Processes pseudo-selectors for any node (block or variation).
918 934 *
919 - * @param array $node The node data (block or variation).
920 - * @param string $base_selector The base selector.
921 - * @param array $settings The theme settings.
922 - * @param string $block_name The block name.
923 - * @param array|null $block_metadata Metadata about the block to get styles for.
935 + * @since 7.0.0
936 + *
937 + * @param array $node The node data (block or variation).
938 + * @param string $base_selector The base selector.
939 + * @param array $settings The theme settings.
940 + * @param string $block_name The block name.
941 + * @param array|null $block_metadata Metadata about the block to get styles for.
924 942 * @param array|null $style_variation Style variation metadata.
925 943 * @return array Array of pseudo-selector declarations.
926 944 */
927 945 private function process_pseudo_selectors( $node, $base_selector, $settings, $block_name, $block_metadata = null, $style_variation = null ) {
@@ -1229,8 +1247,10 @@
1229 1247 *
1230 1248 * @since 5.8.0
1231 1249 * @since 5.9.0 Added the `$valid_block_names` and `$valid_element_name` parameters.
1232 1250 * @since 6.6.0 Extended schema definition to allow enhanced block style variations.
1251 + * @since 7.1.1 Updated schema to allow responsive breakpoint states and pseudo-selectors
1252 + * at the top level of `styles` for block style variation partials.
1233 1253 *
1234 1254 * @param array $input Structure to sanitize.
1235 1255 * @param array $valid_block_names List of valid block names.
1236 1256 * @param array $valid_element_names List of valid element names.
@@ -1294,9 +1314,17 @@
1294 1314 }
1295 1315
1296 1316 $schema_styles_blocks = array();
1297 1317 $schema_settings_blocks = array();
1318 + $breakpoint_states = array_keys( $responsive_media_queries );
1298 1319
1320 + $common_block_settings = static::VALID_SETTINGS;
1321 + // `viewport` and `blockVisibility` are global-only settings and cannot be set per block for now.
1322 + unset(
1323 + $common_block_settings['viewport'],
1324 + $common_block_settings['blockVisibility']
1325 + );
1326 +
1299 1327 /*
1300 1328 * Generate a schema for blocks.
1301 1329 * - Block styles can contain `elements`, `variations`, and responsive breakpoint state definitions.
1302 1330 * - Variations definitions cannot be nested.
@@ -1304,23 +1332,29 @@
1304 1332 * - Variation inner `blocks` styles can contain `elements` and responsive breakpoint states.
1305 1333 *
1306 1334 * As each variation needs both a `blocks` schema and responsive `blocks` schemas
1307 1335 * for further nested inner `blocks`, the overall schema is generated in multiple passes.
1336 + *
1337 + * All blocks start with the same style schema. Build that common schema
1338 + * once, then add block-specific pseudo and custom states below.
1308 1339 */
1340 + $responsive_block_schema = $styles_non_top_level;
1341 + $responsive_block_schema['elements'] = $schema_styles_elements;
1342 +
1343 + $common_block_schema = $styles_non_top_level;
1344 + $common_block_schema['elements'] = $schema_styles_elements;
1345 +
1346 + foreach ( $breakpoint_states as $breakpoint_state ) {
1347 + $common_block_schema[ $breakpoint_state ] = $responsive_block_schema;
1348 + }
1349 +
1309 1350 foreach ( $valid_block_names as $block ) {
1310 - $schema_settings_blocks[ $block ] = static::VALID_SETTINGS;
1311 - // `viewport` and `blockVisibility` are global-only settings and cannot be set per block for now.
1312 - unset( $schema_settings_blocks[ $block ]['viewport'] );
1313 - unset( $schema_settings_blocks[ $block ]['blockVisibility'] );
1314 - $schema_styles_blocks[ $block ] = $styles_non_top_level;
1315 - $schema_styles_blocks[ $block ]['elements'] = $schema_styles_elements;
1351 + $schema_settings_blocks[ $block ] = $common_block_settings;
1352 + $schema_styles_blocks[ $block ] = $common_block_schema;
1316 1353
1317 - // Add responsive breakpoint states for all blocks.
1318 - foreach ( array_keys( $responsive_media_queries ) as $breakpoint_state ) {
1319 - $schema_styles_blocks[ $block ][ $breakpoint_state ] = $styles_non_top_level;
1320 - $schema_styles_blocks[ $block ][ $breakpoint_state ]['elements'] = $schema_styles_elements;
1321 -
1322 - if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) {
1354 + // Add responsive pseudo-selectors only to blocks that support them.
1355 + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) {
1356 + foreach ( $breakpoint_states as $breakpoint_state ) {
1323 1357 foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) {
1324 1358 $schema_styles_blocks[ $block ][ $breakpoint_state ][ $pseudo_selector ] = $styles_non_top_level;
1325 1359 }
1326 1360 }
@@ -1375,9 +1409,8 @@
1375 1409 // Add responsive breakpoint states to block style variations.
1376 1410 foreach ( array_keys( $responsive_media_queries ) as $breakpoint_state ) {
1377 1411 $variation_schema[ $breakpoint_state ] = $styles_non_top_level;
1378 1412 $variation_schema[ $breakpoint_state ]['elements'] = $schema_styles_elements;
1379 - $variation_schema[ $breakpoint_state ]['blocks'] = $schema_styles_blocks;
1380 1413
1381 1414 if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] ) ) {
1382 1415 foreach ( static::VALID_BLOCK_PSEUDO_SELECTORS[ $block ] as $pseudo_selector ) {
1383 1416 $variation_schema[ $breakpoint_state ][ $pseudo_selector ] = $styles_non_top_level;
@@ -1405,8 +1438,49 @@
1405 1438 $schema['settings'] = static::VALID_SETTINGS;
1406 1439 $schema['settings']['blocks'] = $schema_settings_blocks;
1407 1440 $schema['settings']['typography']['fontFamilies'] = static::schema_in_root_and_per_origin( static::FONT_FAMILY_SCHEMA );
1408 1441
1442 + /*
1443 + * Add block style variation states to the top-level styles schema.
1444 + *
1445 + * Block style variations defined in a standalone JSON partial within a
1446 + * theme's `styles` directory declare their styles at the root of the
1447 + * `styles` object, so they are sanitized against the top-level schema.
1448 + * It needs to allow the same states that are allowed for variations
1449 + * declared inline in theme.json, otherwise those states are silently
1450 + * removed as unknown keys.
1451 + *
1452 + * The `blockTypes` property is only present on block style variation
1453 + * partials, so it both identifies the config as a variation and
1454 + * determines which pseudo-selectors are valid for it. Regular
1455 + * theme.json files are unaffected.
1456 + */
1457 + if ( ! empty( $input['blockTypes'] ) && is_array( $input['blockTypes'] ) ) {
1458 + $variation_pseudo_selectors = array();
1459 + foreach ( $input['blockTypes'] as $variation_block_type ) {
1460 + if ( isset( static::VALID_BLOCK_PSEUDO_SELECTORS[ $variation_block_type ] ) ) {
1461 + $variation_pseudo_selectors = array_merge(
1462 + $variation_pseudo_selectors,
1463 + static::VALID_BLOCK_PSEUDO_SELECTORS[ $variation_block_type ]
1464 + );
1465 + }
1466 + }
1467 + $variation_pseudo_selectors = array_unique( $variation_pseudo_selectors );
1468 +
1469 + foreach ( $breakpoint_states as $breakpoint_state ) {
1470 + $schema['styles'][ $breakpoint_state ] = $styles_non_top_level;
1471 + $schema['styles'][ $breakpoint_state ]['elements'] = $schema_styles_elements;
1472 +
1473 + foreach ( $variation_pseudo_selectors as $pseudo_selector ) {
1474 + $schema['styles'][ $breakpoint_state ][ $pseudo_selector ] = $styles_non_top_level;
1475 + }
1476 + }
1477 +
1478 + foreach ( $variation_pseudo_selectors as $pseudo_selector ) {
1479 + $schema['styles'][ $pseudo_selector ] = $styles_non_top_level;
1480 + }
1481 + }
1482 +
1409 1483 // Remove anything that's not present in the schema.
1410 1484 foreach ( array( 'styles', 'settings' ) as $subtree ) {
1411 1485 if ( ! isset( $input[ $subtree ] ) ) {
1412 1486 continue;
@@ -2109,9 +2183,9 @@
2109 2183 /**
2110 2184 * Returns the global styles custom CSS for a single block.
2111 2185 * This function is deprecated; please do not sync to core.
2112 2186 *
2113 - * @param array $css The block css node.
2187 + * @param array $css The block css node.
2114 2188 * @param string $selector The block selector.
2115 2189 *
2116 2190 * @return string The global styles custom CSS for the block.
2117 2191 */
@@ -2236,9 +2310,10 @@
2236 2310
2237 2311 // Gap styles will only be output if the theme has block gap support, or supports a fallback gap.
2238 2312 // Default layout gap styles will be skipped for themes that do not explicitly opt-in to blockGap with a `true` or `false` value.
2239 2313 if ( $has_block_gap_support || $has_fallback_gap_support ) {
2240 - $block_gap_value = null;
2314 + $block_gap_value = null;
2315 + $block_gap_row_value = null;
2241 2316 // Use a fallback gap value if block gap support is not available.
2242 2317 if ( ! $has_block_gap_support ) {
2243 2318 $block_gap_value = static::ROOT_BLOCK_SELECTOR === $selector ? '0.5em' : null;
2244 2319 if ( ! empty( $block_type ) ) {
@@ -2246,18 +2321,29 @@
2246 2321 }
2247 2322 } else {
2248 2323 $block_gap_value = static::get_property_value( $node, array( 'spacing', 'blockGap' ) );
2249 2324 }
2325 + $block_gap_row_value = $block_gap_value;
2250 2326
2251 2327 // Support split row / column values and concatenate to a shorthand value.
2252 2328 if ( is_array( $block_gap_value ) ) {
2253 - if ( isset( $block_gap_value['top'] ) && isset( $block_gap_value['left'] ) ) {
2254 - $gap_row = static::get_property_value( $node, array( 'spacing', 'blockGap', 'top' ) );
2255 - $gap_column = static::get_property_value( $node, array( 'spacing', 'blockGap', 'left' ) );
2256 - $block_gap_value = $gap_row === $gap_column ? $gap_row : $gap_row . ' ' . $gap_column;
2329 + $has_block_gap_row_value = isset( $block_gap_value['top'] );
2330 + $has_block_gap_column_value = isset( $block_gap_value['left'] );
2331 +
2332 + if ( $has_block_gap_row_value || $has_block_gap_column_value ) {
2333 + $block_gap_row_value = $has_block_gap_row_value
2334 + ? static::get_property_value( $node, array( 'spacing', 'blockGap', 'top' ) )
2335 + : '0';
2336 + $block_gap_column_value = $has_block_gap_column_value
2337 + ? static::get_property_value( $node, array( 'spacing', 'blockGap', 'left' ) )
2338 + : '0';
2339 + $block_gap_value = $block_gap_row_value === $block_gap_column_value
2340 + ? $block_gap_row_value
2341 + : $block_gap_row_value . ' ' . $block_gap_column_value;
2257 2342 } else {
2258 - // Skip outputting gap value if not all sides are provided.
2259 - $block_gap_value = null;
2343 + // Skip outputting a gap value if neither supported axis is provided.
2344 + $block_gap_value = null;
2345 + $block_gap_row_value = null;
2260 2346 }
2261 2347 }
2262 2348
2263 2349 // If the block should have custom gap, add the gap styles.
@@ -2267,10 +2353,13 @@
2267 2353 if ( ! $has_block_gap_support && 'flex' !== $layout_definition_key && 'grid' !== $layout_definition_key ) {
2268 2354 continue;
2269 2355 }
2270 2356
2271 - $class_name = $layout_definition['className'] ?? false;
2272 - $spacing_rules = $layout_definition['spacingStyles'] ?? array();
2357 + $class_name = $layout_definition['className'] ?? false;
2358 + $spacing_rules = $layout_definition['spacingStyles'] ?? array();
2359 + $layout_gap_value = in_array( $layout_definition_key, array( 'default', 'constrained' ), true )
2360 + ? $block_gap_row_value
2361 + : $block_gap_value;
2273 2362
2274 2363 if (
2275 2364 ! empty( $class_name ) &&
2276 2365 ! empty( $spacing_rules )
@@ -2283,9 +2372,9 @@
2283 2372 ! empty( $spacing_rule['rules'] )
2284 2373 ) {
2285 2374 // Iterate over each of the styling rules and substitute non-string values such as `null` with the real `blockGap` value.
2286 2375 foreach ( $spacing_rule['rules'] as $css_property => $css_value ) {
2287 - $current_css_value = is_string( $css_value ) ? $css_value : $block_gap_value;
2376 + $current_css_value = is_string( $css_value ) ? $css_value : $layout_gap_value;
2288 2377 if ( static::is_safe_css_declaration( $css_property, $current_css_value ) ) {
2289 2378 $declarations[] = array(
2290 2379 'name' => $css_property,
2291 2380 'value' => $current_css_value,
@@ -2988,15 +3077,15 @@
2988 3077 * @since 6.5.0 Output a `min-height: unset` rule when `aspect-ratio` is set.
2989 3078 * @since 6.6.0 Passing current theme JSON settings to wp_get_typography_font_size_value(). Using style engine to correctly fetch background CSS values.
2990 3079 * @since 6.7.0 Allow ref resolution of background properties.
2991 3080 *
2992 - * @param array $styles Styles to process.
2993 - * @param array $settings Theme settings.
2994 - * @param array $properties Properties metadata.
2995 - * @param array $theme_json Theme JSON array.
2996 - * @param string $selector The style block selector.
3081 + * @param array $styles Styles to process.
3082 + * @param array $settings Theme settings.
3083 + * @param array $properties Properties metadata.
3084 + * @param array $theme_json Theme JSON array.
3085 + * @param string $selector The style block selector.
2997 3086 * @param boolean $use_root_padding Whether to add custom properties at root level.
2998 - * @return array Returns the modified $declarations.
3087 + * @return array Returns the modified $declarations.
2999 3088 */
3000 3089 protected static function compute_style_properties( $styles, $settings = array(), $properties = null, $theme_json = null, $selector = null, $use_root_padding = null ) {
3001 3090 if ( empty( $styles ) ) {
3002 3091 return array();
@@ -3120,10 +3209,10 @@
3120 3209 * @since 5.9.0 Added support for values of array type, which are returned as is.
3121 3210 * @since 6.1.0 Added the `$theme_json` parameter.
3122 3211 * @since 6.7.0 Added support for background image refs
3123 3212 *
3124 - * @param array $styles Styles subtree.
3125 - * @param array $path Which property to process.
3213 + * @param array $styles Styles subtree.
3214 + * @param array $path Which property to process.
3126 3215 * @param array $theme_json Theme JSON array.
3127 3216 * @return string|array Style property value.
3128 3217 */
3129 3218 protected static function get_property_value( $styles, $path, $theme_json = null ) {
@@ -3495,9 +3584,9 @@
3495 3584 * @since 6.1.0
3496 3585 *
3497 3586 * @param array $theme_json The theme.json converted to an array.
3498 3587 * @param array $selectors Optional list of selectors per block.
3499 - * @param array $options {
3588 + * @param array $options {
3500 3589 * Optional. An array of options for now used for internal purposes only (may change without notice).
3501 3590 *
3502 3591 * @type bool $include_block_style_variations Includes nodes for block style variations. Default false.
3503 3592 * @type bool $include_node_paths_only Return only block nodes node paths. Default false.
@@ -3862,10 +3951,20 @@
3862 3951 // Store variation metadata and node for layout styles generation.
3863 3952 // Only store if the variation has blockGap defined.
3864 3953 if ( isset( $style_variation_node['spacing']['blockGap'] ) ) {
3865 3954 // Append block selector to the variation selector for proper targeting.
3866 - $variation_metadata_with_selector = $style_variation;
3867 - $variation_metadata_with_selector['selector'] = $style_variation['selector'] . $block_metadata['css'];
3955 + $variation_metadata_with_selector = $style_variation;
3956 + $variation_metadata_with_selector['selector'] = $style_variation['selector'] . $block_metadata['css'];
3957 +
3958 + /*
3959 + * `get_layout_styles()` reads `name` as a block name, to check that the block
3960 + * supports layout at all. A variation node's `name` is the variation slug,
3961 + * which is never a registered block, so the check fails and every variation
3962 + * gap rule is discarded. Pass the block the variation belongs to, so the
3963 + * support check answers the question it is actually asking.
3964 + */
3965 + $variation_metadata_with_selector['name'] = $block_name;
3966 +
3868 3967 $style_variation_layout_metadata[ $style_variation['selector'] ] = array(
3869 3968 'metadata' => $variation_metadata_with_selector,
3870 3969 'node' => $style_variation_node,
3871 3970 );
@@ -3919,9 +4018,13 @@
3919 4018 // Process blockGap responsive layout styles for this variation.
3920 4019 if ( isset( $breakpoint_node['spacing']['blockGap'] ) ) {
3921 4020 $variation_layout_metadata = $style_variation;
3922 4021 $variation_layout_metadata['selector'] = $style_variation['selector'] . $block_metadata['css'];
3923 - $variation_responsive_css .= $this->get_layout_styles(
4022 +
4023 + // The variation slug is not a block name here either. See above.
4024 + $variation_layout_metadata['name'] = $block_name;
4025 +
4026 + $variation_responsive_css .= $this->get_layout_styles(
3924 4027 $variation_layout_metadata,
3925 4028 array(
3926 4029 'node' => $breakpoint_node,
3927 4030 'media_query' => $breakpoint_media,
@@ -4584,9 +4687,9 @@
4584 4687 * Gets a `default`'s preset name by a provided slug.
4585 4688 *
4586 4689 * @since 5.9.0
4587 4690 *
4588 - * @param string $slug The slug we want to find a match from default presets.
4691 + * @param string $slug The slug we want to find a match from default presets.
4589 4692 * @param array $base_path The path to inspect. It's 'settings' by default.
4590 4693 * @return string|null
4591 4694 */
4592 4695 protected function get_name_from_defaults( $slug, $base_path ) {
@@ -4634,10 +4737,10 @@
4634 4737 * @since 5.9.0
4635 4738 * @since 6.6.0 Added support for block style variation element styles and $origin parameter.
4636 4739 *
4637 4740 * @param array $theme_json Structure to sanitize.
4638 - * @param string $origin Optional. What source of data this object represents.
4639 - * One of 'blocks', 'default', 'theme', or 'custom'. Default 'theme'.
4741 + * @param string $origin Optional. What source of data this object represents.
4742 + * One of 'blocks', 'default', 'theme', or 'custom'. Default 'theme'.
4640 4743 * @return array Sanitized structure.
4641 4744 */
4642 4745 public static function remove_insecure_properties( $theme_json, $origin = 'theme' ) {
4643 4746 if ( ! in_array( $origin, static::VALID_ORIGINS, true ) ) {
@@ -5724,9 +5827,9 @@
5724 5827 * Given a tree, converts the internal representation of variables to the CSS representation.
5725 5828 * It is recursive and modifies the input in-place.
5726 5829 *
5727 5830 * @since 6.3.0
5728 - * @param array $tree Input to process.
5831 + * @param array $tree Input to process.
5729 5832 * @return array The modified $tree.
5730 5833 */
5731 5834 private static function resolve_custom_css_format( $tree ) {
5732 5835 $prefix = 'var:';
@@ -5874,9 +5977,9 @@
5874 5977 * the variation class directly to the selector that will receive the
5875 5978 * declarations instead of deriving it by subtracting the root selector from
5876 5979 * the feature selector.
5877 5980 *
5878 - * @param array $style_variation Style variation metadata.
5981 + * @param array $style_variation Style variation metadata.
5879 5982 * @param string $feature_selector CSS selector for the feature.
5880 5983 * @return string Feature selector with block style variation selector added.
5881 5984 */
5882 5985 protected static function get_block_style_variation_feature_selector( $style_variation, $feature_selector ) {