From 0e3ee28f8f36104d9cb565b7624865a8eb569de5 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 15 Jan 2024 13:18:18 +1100 Subject: [PATCH 01/22] Try reducing specificity of global styles block selector. --- lib/class-wp-theme-json-gutenberg.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index 0d2520ff9682a..18fe887ffd130 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -988,7 +988,7 @@ protected static function get_blocks_metadata() { } foreach ( $blocks as $block_name => $block_type ) { - $root_selector = wp_get_block_css_selector( $block_type ); + $root_selector = ':where(' . wp_get_block_css_selector( $block_type ) . ')'; static::$blocks_metadata[ $block_name ]['selector'] = $root_selector; static::$blocks_metadata[ $block_name ]['selectors'] = static::get_block_selectors( $block_type, $root_selector ); From a3ebd94523fb3fa7cd1d902453bea3ac5d144af4 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 15 Jan 2024 14:23:38 +1100 Subject: [PATCH 02/22] Apply in editor --- .../src/components/global-styles/use-global-styles-output.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/block-editor/src/components/global-styles/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/use-global-styles-output.js index 4e8ea6dc0ff95..67087850e8ae8 100644 --- a/packages/block-editor/src/components/global-styles/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/use-global-styles-output.js @@ -1050,7 +1050,7 @@ export const getBlockSelectors = ( blockTypes, getBlockStyles ) => { const result = {}; blockTypes.forEach( ( blockType ) => { const name = blockType.name; - const selector = getBlockCSSSelector( blockType ); + const selector = `:where(${ getBlockCSSSelector( blockType ) })`; let duotoneSelector = getBlockCSSSelector( blockType, 'filter.duotone' From 9bb710a9153162b544c91b36031c194351d11f44 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 15 Jan 2024 15:24:54 +1100 Subject: [PATCH 03/22] Remove obsolete override --- packages/block-library/src/social-links/editor.scss | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/block-library/src/social-links/editor.scss b/packages/block-library/src/social-links/editor.scss index 4ba574c965d2d..f3b8908c1ae95 100644 --- a/packages/block-library/src/social-links/editor.scss +++ b/packages/block-library/src/social-links/editor.scss @@ -4,13 +4,6 @@ display: inline-block; margin-left: $grid-unit-10; } - - // Unset background colors that can be inherited from Global Styles. - // This is a duplicate of a rule in style.scss, as it needs higher specificity in the editor. - // The rule can be removed if editor styles get lowered in specificity. - &.wp-block-social-links { - background: none; - } } // Prevent toolbar from jumping when selecting / hovering a link. From 5741fd26ddbfe4f41a2db14ca6a93540fe32a478 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Wed, 17 Jan 2024 15:20:44 +1100 Subject: [PATCH 04/22] zero specificity for pesky button elements --- lib/class-wp-theme-json-gutenberg.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index 18fe887ffd130..71285c045ad1d 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -550,7 +550,7 @@ class WP_Theme_JSON_Gutenberg { 'h5' => 'h5', 'h6' => 'h6', // We have the .wp-block-button__link class so that this will target older buttons that have been serialized. - 'button' => '.wp-element-button, .wp-block-button__link', + 'button' => ':where(.wp-element-button), :where(.wp-block-button__link)', // The block classes are necessary to target older content that won't use the new class names. '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', 'cite' => 'cite', From 3ffa0b7c534ee9a28e95debcfc036424f9ea4088 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Fri, 19 Jan 2024 15:18:58 +1100 Subject: [PATCH 05/22] Lower specificity of feature and compound selectors. --- lib/class-wp-theme-json-gutenberg.php | 10 +++++----- .../global-styles/use-global-styles-output.js | 8 +++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index 71285c045ad1d..f7d50ef7723bf 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -541,7 +541,7 @@ class WP_Theme_JSON_Gutenberg { * @var string[] */ const ELEMENTS = array( - 'link' => 'a:where(:not(.wp-element-button))', // The `where` is needed to lower the specificity. + 'link' => 'a:not(.wp-element-button)', 'heading' => 'h1, h2, h3, h4, h5, h6', 'h1' => 'h1', 'h2' => 'h2', @@ -550,7 +550,7 @@ class WP_Theme_JSON_Gutenberg { 'h5' => 'h5', 'h6' => 'h6', // We have the .wp-block-button__link class so that this will target older buttons that have been serialized. - 'button' => ':where(.wp-element-button), :where(.wp-block-button__link)', + 'button' => '.wp-element-button, .wp-block-button__link', // The block classes are necessary to target older content that won't use the new class names. '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', 'cite' => 'cite', @@ -988,7 +988,7 @@ protected static function get_blocks_metadata() { } foreach ( $blocks as $block_name => $block_type ) { - $root_selector = ':where(' . wp_get_block_css_selector( $block_type ) . ')'; + $root_selector = wp_get_block_css_selector( $block_type ); static::$blocks_metadata[ $block_name ]['selector'] = $root_selector; static::$blocks_metadata[ $block_name ]['selectors'] = static::get_block_selectors( $block_type, $root_selector ); @@ -2573,7 +2573,7 @@ static function ( $pseudo_selector ) use ( $selector ) { } // 2. Generate and append the rules that use the general selector. - $block_rules .= static::to_ruleset( $selector, $declarations ); + $block_rules .= static::to_ruleset( ":where($selector)", $declarations ); // 3. Generate and append the rules that use the duotone selector. if ( isset( $block_metadata['duotone'] ) && ! empty( $declarations_duotone ) ) { @@ -2590,7 +2590,7 @@ static function ( $pseudo_selector ) use ( $selector ) { // 5. Generate and append the feature level rulesets. foreach ( $feature_declarations as $feature_selector => $individual_feature_declarations ) { - $block_rules .= static::to_ruleset( $feature_selector, $individual_feature_declarations ); + $block_rules .= static::to_ruleset( ":where($feature_selector)", $individual_feature_declarations ); } // 6. Generate and append the style variation rulesets. diff --git a/packages/block-editor/src/components/global-styles/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/use-global-styles-output.js index 67087850e8ae8..020e78b20d288 100644 --- a/packages/block-editor/src/components/global-styles/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/use-global-styles-output.js @@ -839,7 +839,7 @@ export const toStyles = ( ( [ cssSelector, declarations ] ) => { if ( declarations.length ) { const rules = declarations.join( ';' ); - ruleset += `${ cssSelector }{${ rules };}`; + ruleset += `:where(${ cssSelector }) {${ rules };}`; } } ); @@ -932,7 +932,9 @@ export const toStyles = ( isTemplate ); if ( declarations?.length ) { - ruleset += `${ selector }{${ declarations.join( ';' ) };}`; + ruleset += `:where(${ selector }) {${ declarations.join( + ';' + ) };}`; } // Check for pseudo selector in `styles` and handle separately. @@ -1050,7 +1052,7 @@ export const getBlockSelectors = ( blockTypes, getBlockStyles ) => { const result = {}; blockTypes.forEach( ( blockType ) => { const name = blockType.name; - const selector = `:where(${ getBlockCSSSelector( blockType ) })`; + const selector = getBlockCSSSelector( blockType ); let duotoneSelector = getBlockCSSSelector( blockType, 'filter.duotone' From 0265d3aa27255a423c0cf1b9ece49186eaed16bf Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Fri, 19 Jan 2024 16:01:56 +1100 Subject: [PATCH 06/22] Reduce specificity of layout selectors --- lib/block-supports/layout.php | 14 +++++++------- lib/class-wp-theme-json-gutenberg.php | 6 +++--- .../components/default-block-appender/content.scss | 2 +- .../global-styles/use-global-styles-output.js | 6 +++--- packages/block-editor/src/hooks/layout.js | 3 +-- packages/block-editor/src/layouts/definitions.js | 8 ++++---- 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/block-supports/layout.php b/lib/block-supports/layout.php index 07ccb6089721e..8fc6888683bad 100644 --- a/lib/block-supports/layout.php +++ b/lib/block-supports/layout.php @@ -47,13 +47,13 @@ function gutenberg_get_layout_definitions() { ), 'spacingStyles' => array( array( - 'selector' => ' > :first-child:first-child', + 'selector' => ' > :first-child', 'rules' => array( 'margin-block-start' => '0', ), ), array( - 'selector' => ' > :last-child:last-child', + 'selector' => ' > :last-child', 'rules' => array( 'margin-block-end' => '0', ), @@ -112,13 +112,13 @@ function gutenberg_get_layout_definitions() { ), 'spacingStyles' => array( array( - 'selector' => ' > :first-child:first-child', + 'selector' => ' > :first-child', 'rules' => array( 'margin-block-start' => '0', ), ), array( - 'selector' => ' > :last-child:last-child', + 'selector' => ' > :last-child', 'rules' => array( 'margin-block-end' => '0', ), @@ -248,7 +248,7 @@ function gutenberg_get_layout_style( $selector, $layout, $has_block_gap_support ), ), array( - 'selector' => "$selector$selector > * + *", + 'selector' => "$selector > * + *", 'declarations' => array( 'margin-block-start' => $gap_value, 'margin-block-end' => '0', @@ -357,7 +357,7 @@ function gutenberg_get_layout_style( $selector, $layout, $has_block_gap_support ), ), array( - 'selector' => "$selector$selector > * + *", + 'selector' => "$selector > * + *", 'declarations' => array( 'margin-block-start' => $gap_value, 'margin-block-end' => '0', @@ -716,7 +716,7 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) { $has_block_gap_support = isset( $block_gap ); $style = gutenberg_get_layout_style( - ".$container_class.$container_class", + ".$container_class", $used_layout, $has_block_gap_support, $gap_value, diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index f7d50ef7723bf..c53501710ac1f 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -1483,7 +1483,7 @@ protected function get_layout_styles( $block_metadata ) { $spacing_rule['selector'] ); } else { - $format = static::ROOT_BLOCK_SELECTOR === $selector ? ':where(%s .%s) %s' : '%s-%s%s'; + $format = static::ROOT_BLOCK_SELECTOR === $selector ? ':where(%s .%s) %s' : ':where(%s-%s) %s'; $layout_selector = sprintf( $format, $selector, @@ -2666,8 +2666,8 @@ public function get_root_layout_rules( $selector, $block_metadata ) { if ( $has_block_gap_support ) { $block_gap_value = static::get_property_value( $this->theme_json, array( 'styles', 'spacing', 'blockGap' ) ); $css .= ":where(.wp-site-blocks) > * { margin-block-start: $block_gap_value; margin-block-end: 0; }"; - $css .= ':where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }'; - $css .= ':where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }'; + $css .= ':where(.wp-site-blocks) > :first-child { margin-block-start: 0; }'; + $css .= ':where(.wp-site-blocks) > :last-child { margin-block-end: 0; }'; // For backwards compatibility, ensure the legacy block gap CSS variable is still available. $css .= "$selector { --wp--style--block-gap: $block_gap_value; }"; diff --git a/packages/block-editor/src/components/default-block-appender/content.scss b/packages/block-editor/src/components/default-block-appender/content.scss index 48aac077096c2..88f8fbc725c73 100644 --- a/packages/block-editor/src/components/default-block-appender/content.scss +++ b/packages/block-editor/src/components/default-block-appender/content.scss @@ -30,7 +30,7 @@ // In the case of this appender, it needs to apply those same rules to avoid layout shifts. // Such shifts happen when the bottom margin of the Title block has been set to less than the default 1em margin of paragraphs. :where(body .is-layout-constrained) & { - > :first-child:first-child { + > :first-child { margin-block-start: 0; } diff --git a/packages/block-editor/src/components/global-styles/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/use-global-styles-output.js index 020e78b20d288..c4bbcdffb2ed9 100644 --- a/packages/block-editor/src/components/global-styles/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/use-global-styles-output.js @@ -530,7 +530,7 @@ export function getLayoutStyles( { ? `:where(${ selector } .${ className })${ spacingStyle?.selector || '' }` - : `${ selector }-${ className }${ + : `:where(${ selector }-${ className })${ spacingStyle?.selector || '' }`; } @@ -995,10 +995,10 @@ export const toStyles = ( `:where(.wp-site-blocks) > * { margin-block-start: ${ gapValue }; margin-block-end: 0; }`; ruleset = ruleset + - ':where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }'; + ':where(.wp-site-blocks) > :first-child { margin-block-start: 0; }'; ruleset = ruleset + - ':where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }'; + ':where(.wp-site-blocks) > :last-child { margin-block-end: 0; }'; } nodesWithSettings.forEach( ( { selector, presets } ) => { diff --git a/packages/block-editor/src/hooks/layout.js b/packages/block-editor/src/hooks/layout.js index a83d07398d54a..1a09604f98657 100644 --- a/packages/block-editor/src/hooks/layout.js +++ b/packages/block-editor/src/hooks/layout.js @@ -352,8 +352,7 @@ function BlockWithLayoutStyles( { block: BlockListBlock, props } ) { const { kebabCase } = unlock( componentsPrivateApis ); const selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`; - // Higher specificity to override defaults from theme.json. - const selector = `.${ selectorPrefix }${ id }.${ selectorPrefix }${ id }`; + const selector = `.${ selectorPrefix }${ id }`; const [ blockGapSupport ] = useSettings( 'spacing.blockGap' ); const hasBlockGapSupport = blockGapSupport !== null; diff --git a/packages/block-editor/src/layouts/definitions.js b/packages/block-editor/src/layouts/definitions.js index 3b1e5c7ab5896..e7b86fb1e80d1 100644 --- a/packages/block-editor/src/layouts/definitions.js +++ b/packages/block-editor/src/layouts/definitions.js @@ -34,13 +34,13 @@ export const LAYOUT_DEFINITIONS = { ], spacingStyles: [ { - selector: ' > :first-child:first-child', + selector: ' > :first-child', rules: { 'margin-block-start': '0', }, }, { - selector: ' > :last-child:last-child', + selector: ' > :last-child', rules: { 'margin-block-end': '0', }, @@ -100,13 +100,13 @@ export const LAYOUT_DEFINITIONS = { ], spacingStyles: [ { - selector: ' > :first-child:first-child', + selector: ' > :first-child', rules: { 'margin-block-start': '0', }, }, { - selector: ' > :last-child:last-child', + selector: ' > :last-child', rules: { 'margin-block-end': '0', }, From da01237ef7fafe2a31b12067e88267cad93fa0b6 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 22 Jan 2024 11:22:35 +1100 Subject: [PATCH 07/22] Lower specificity of base layout styles --- lib/class-wp-theme-json-gutenberg.php | 4 ++-- .../components/global-styles/use-global-styles-output.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index c53501710ac1f..87f99e883c3cb 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -1519,7 +1519,7 @@ protected function get_layout_styles( $block_metadata ) { in_array( $layout_definition['displayMode'], $valid_display_modes, true ) ) { $layout_selector = sprintf( - '%s .%s', + ':where(%s .%s)', $selector, $class_name ); @@ -1552,7 +1552,7 @@ protected function get_layout_styles( $block_metadata ) { } $layout_selector = sprintf( - '%s .%s%s', + ':where(%s .%s%s)', $selector, $class_name, $base_style_rule['selector'] diff --git a/packages/block-editor/src/components/global-styles/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/use-global-styles-output.js index c4bbcdffb2ed9..6382b32ca69ff 100644 --- a/packages/block-editor/src/components/global-styles/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/use-global-styles-output.js @@ -557,7 +557,7 @@ export function getLayoutStyles( { displayMode && validDisplayModes.includes( displayMode ) ) { - ruleset += `${ selector } .${ className } { display:${ displayMode }; }`; + ruleset += `:where(${ selector } .${ className }) { display:${ displayMode }; }`; } if ( baseStyles?.length ) { @@ -575,9 +575,9 @@ export function getLayoutStyles( { } if ( declarations.length ) { - const combinedSelector = `${ selector } .${ className }${ + const combinedSelector = `:where(${ selector } .${ className }${ baseStyle?.selector || '' - }`; + })`; ruleset += `${ combinedSelector } { ${ declarations.join( '; ' ) }; }`; From c818e92575b5e7f2753851f84ba3cdff834b1329 Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:10:57 +1000 Subject: [PATCH 08/22] Fix JS unit tests --- .../test/use-global-styles-output.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js index dd2b382f89582..6933130884b42 100644 --- a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js @@ -479,9 +479,9 @@ describe( 'global styles renderer', () => { }; expect( toStyles( tree, blockSelectors ) ).toEqual( - 'body {margin: 0;}body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-constrained > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-constrained > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size); }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }body .is-layout-grid { display:grid; }body .is-layout-grid > * { margin: 0; }' + - 'body{background-color: red;margin: 10px;padding: 10px;}a{color: blue;}a:hover{color: orange;}a:focus{color: orange;}h1{font-size: 42px;}.wp-block-group{margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}h1,h2,h3,h4,h5,h6{color: orange;}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}' + - '.wp-block-image img, .wp-block-image .wp-crop-area{border-radius: 9999px;}.wp-block-image{color: red;}.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' + + 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + ':where(body) {background-color: red;margin: 10px;padding: 10px;}:where(a) {color: blue;}a:hover{color: orange;}a:focus{color: orange;}:where(h1) {font-size: 42px;}:where(.wp-block-group) {margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}:where(h1,h2,h3,h4,h5,h6) {color: orange;}:where(h1 a,h2 a,h3 a,h4 a,h5 a,h6 a) {color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}:where(.wp-block-image img, .wp-block-image .wp-crop-area) {border-radius: 9999px;}' + + ':where(.wp-block-image) {color: red;}.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' + '.has-white-color{color: var(--wp--preset--color--white) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}h1.has-blue-color,h2.has-blue-color,h3.has-blue-color,h4.has-blue-color,h5.has-blue-color,h6.has-blue-color{color: var(--wp--preset--color--blue) !important;}h1.has-blue-background-color,h2.has-blue-background-color,h3.has-blue-background-color,h4.has-blue-background-color,h5.has-blue-background-color,h6.has-blue-background-color{background-color: var(--wp--preset--color--blue) !important;}h1.has-blue-border-color,h2.has-blue-border-color,h3.has-blue-border-color,h4.has-blue-border-color,h5.has-blue-border-color,h6.has-blue-border-color{border-color: var(--wp--preset--color--blue) !important;}' ); } ); @@ -522,8 +522,8 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-constrained > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-constrained > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size); }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }body .is-layout-grid { display:grid; }body .is-layout-grid > * { margin: 0; }' + - '.wp-image-spacing{padding-top: 1px;}.wp-image-border-color{border-color: red;}.wp-image-border{border-radius: 9999px;}.wp-image{color: red;}' + + 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + ':where(.wp-image-spacing) {padding-top: 1px;}:where(.wp-image-border-color) {border-color: red;}:where(.wp-image-border) {border-radius: 9999px;}:where(.wp-image) {color: red;}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); } ); @@ -570,7 +570,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-constrained > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-constrained > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size); }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }body .is-layout-grid { display:grid; }body .is-layout-grid > * { margin: 0; }' + + 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + '.is-style-foo.wp-image.wp-image-spacing{padding-top: 2px;}.is-style-foo.wp-image.wp-image-border-color{border-color: blue;}.is-style-foo.wp-image{color: blue;}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); @@ -597,7 +597,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-constrained > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-constrained > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size); }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }body .is-layout-grid { display:grid; }body .is-layout-grid > * { margin: 0; }' + + 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + '.wp-image img{filter: blur(5px);}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); @@ -716,7 +716,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(.is-layout-flex) { gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' + ':where(.is-layout-flex) { gap: 0.5em; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' ); } ); @@ -733,7 +733,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 0.5em; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 0.5em; }body { --wp--style--block-gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' + ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 0.5em; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 0.5em; }body { --wp--style--block-gap: 0.5em; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' ); } ); @@ -750,7 +750,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 12px; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 12px; }body { --wp--style--block-gap: 12px; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' + ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 12px; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 12px; }body { --wp--style--block-gap: 12px; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' ); } ); @@ -767,7 +767,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - '.wp-block-group-is-layout-flow > * { margin-block-start: 0; margin-block-end: 0; }.wp-block-group-is-layout-flow > * + * { margin-block-start: 12px; margin-block-end: 0; }.wp-block-group-is-layout-flex { gap: 12px; }' + ':where(.wp-block-group-is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(.wp-block-group-is-layout-flow) > * + * { margin-block-start: 12px; margin-block-end: 0; }:where(.wp-block-group-is-layout-flex) { gap: 12px; }' ); } ); From 872c324aba2c688936d5c4bb8f0bb024d9f25a33 Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:12:56 +1000 Subject: [PATCH 09/22] Fix copy and paste error --- .../components/global-styles/test/use-global-styles-output.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js index 6933130884b42..6b0a4ef2e0867 100644 --- a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js @@ -480,8 +480,8 @@ describe( 'global styles renderer', () => { expect( toStyles( tree, blockSelectors ) ).toEqual( 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + - ':where(body) {background-color: red;margin: 10px;padding: 10px;}:where(a) {color: blue;}a:hover{color: orange;}a:focus{color: orange;}:where(h1) {font-size: 42px;}:where(.wp-block-group) {margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}:where(h1,h2,h3,h4,h5,h6) {color: orange;}:where(h1 a,h2 a,h3 a,h4 a,h5 a,h6 a) {color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}:where(.wp-block-image img, .wp-block-image .wp-crop-area) {border-radius: 9999px;}' + - ':where(.wp-block-image) {color: red;}.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' + + ':where(body) {background-color: red;margin: 10px;padding: 10px;}:where(a) {color: blue;}a:hover{color: orange;}a:focus{color: orange;}:where(h1) {font-size: 42px;}:where(.wp-block-group) {margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}:where(h1,h2,h3,h4,h5,h6) {color: orange;}:where(h1 a,h2 a,h3 a,h4 a,h5 a,h6 a) {color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}' + + ':where(.wp-block-image img, .wp-block-image .wp-crop-area) {border-radius: 9999px;}:where(.wp-block-image) {color: red;}.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' + '.has-white-color{color: var(--wp--preset--color--white) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}h1.has-blue-color,h2.has-blue-color,h3.has-blue-color,h4.has-blue-color,h5.has-blue-color,h6.has-blue-color{color: var(--wp--preset--color--blue) !important;}h1.has-blue-background-color,h2.has-blue-background-color,h3.has-blue-background-color,h4.has-blue-background-color,h5.has-blue-background-color,h6.has-blue-background-color{background-color: var(--wp--preset--color--blue) !important;}h1.has-blue-border-color,h2.has-blue-border-color,h3.has-blue-border-color,h4.has-blue-border-color,h5.has-blue-border-color,h6.has-blue-border-color{border-color: var(--wp--preset--color--blue) !important;}' ); } ); From e7a7b79ad5e186c48ee0e500f2aa7d4851a7a7cc Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Wed, 24 Jan 2024 10:12:45 +1000 Subject: [PATCH 10/22] Update layout support tests --- phpunit/block-supports/layout-test.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/phpunit/block-supports/layout-test.php b/phpunit/block-supports/layout-test.php index 41735fdc0939e..4dfcfb30aed77 100644 --- a/phpunit/block-supports/layout-test.php +++ b/phpunit/block-supports/layout-test.php @@ -188,7 +188,7 @@ public function data_gutenberg_get_layout_style() { 'has_block_gap_support' => true, 'gap_value' => '1em', ), - 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', + 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', ), 'skip serialization should return empty value' => array( 'args' => array( @@ -205,7 +205,7 @@ public function data_gutenberg_get_layout_style() { 'has_block_gap_support' => true, 'gap_value' => array( 'top' => '1em' ), ), - 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', + 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', ), 'constrained layout with sizes' => array( 'args' => array( @@ -244,7 +244,7 @@ public function data_gutenberg_get_layout_style() { 'has_block_gap_support' => true, 'gap_value' => '2.5rem', ), - 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', + 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', ), 'constrained layout with axial block gap support' => array( 'args' => array( @@ -255,7 +255,7 @@ public function data_gutenberg_get_layout_style() { 'has_block_gap_support' => true, 'gap_value' => array( 'top' => '2.5rem' ), ), - 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', + 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', ), 'constrained layout with block gap support and spacing preset' => array( 'args' => array( @@ -266,7 +266,7 @@ public function data_gutenberg_get_layout_style() { 'has_block_gap_support' => true, 'gap_value' => 'var:preset|spacing|50', ), - 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout.wp-layout > * + *{margin-block-start:var(--wp--preset--spacing--50);margin-block-end:0;}', + 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:var(--wp--preset--spacing--50);margin-block-end:0;}', ), 'flex layout with no args should return empty value' => array( 'args' => array( @@ -376,7 +376,7 @@ public function data_gutenberg_get_layout_style() { 'blockGap' => 'var(--wp--preset--spacing--70)', ), ), - 'expected_output' => '.wp-block-group.wp-container-6 > *{margin-block-start:0;margin-block-end:0;}.wp-block-group.wp-container-6.wp-block-group.wp-container-6 > * + *{margin-block-start:var(--wp--preset--spacing--70);margin-block-end:0;}', + 'expected_output' => '.wp-block-group.wp-container-6 > *{margin-block-start:0;margin-block-end:0;}.wp-block-group.wp-container-6 > * + *{margin-block-start:var(--wp--preset--spacing--70);margin-block-end:0;}', ), ); } From 0c049a103e4a007bc261813ef4ede5abcad9f467 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Wed, 24 Jan 2024 16:53:24 +1100 Subject: [PATCH 11/22] Change style loading order --- lib/global-styles-and-settings.php | 5 ----- lib/script-loader.php | 34 ++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lib/global-styles-and-settings.php b/lib/global-styles-and-settings.php index a4df8576158ab..b36437547ab45 100644 --- a/lib/global-styles-and-settings.php +++ b/lib/global-styles-and-settings.php @@ -182,11 +182,6 @@ function gutenberg_add_global_styles_for_blocks() { foreach ( $block_nodes as $metadata ) { $block_css = $tree->get_styles_for_block( $metadata ); - if ( ! wp_should_load_separate_core_block_assets() ) { - wp_add_inline_style( 'global-styles', $block_css ); - continue; - } - $stylesheet_handle = 'global-styles'; /* * When `wp_should_load_separate_core_block_assets()` is true, block styles are diff --git a/lib/script-loader.php b/lib/script-loader.php index 2b5c7bb08a676..7402cc591b186 100644 --- a/lib/script-loader.php +++ b/lib/script-loader.php @@ -50,13 +50,39 @@ function gutenberg_enqueue_global_styles() { wp_register_style( 'global-styles', false ); wp_add_inline_style( 'global-styles', $stylesheet ); wp_enqueue_style( 'global-styles' ); - - // Add each block as an inline css. - gutenberg_add_global_styles_for_blocks(); } -add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_global_styles' ); +add_action( 'init', 'gutenberg_enqueue_global_styles', 1 ); add_action( 'wp_footer', 'gutenberg_enqueue_global_styles', 1 ); +add_action( 'wp_enqueue_scripts', 'gutenberg_add_global_styles_for_blocks' ); + +/** + * Enqueues block global styles when separate core block assets are disabled. + * + * @since 6.5.0 + */ +function gutenberg_enqueue_block_global_styles() { + if ( wp_should_load_separate_core_block_assets() ) { + return; + } + + $tree = WP_Theme_JSON_Resolver::get_merged_data(); + $block_nodes = $tree->get_styles_block_nodes(); + + wp_register_style( 'global-styles-blocks', false ); + + foreach ( $block_nodes as $metadata ) { + $block_css = $tree->get_styles_for_block( $metadata ); + wp_add_inline_style( 'global-styles-blocks', $block_css ); + } + + wp_enqueue_style( 'global-styles-blocks' ); + + wp_enqueue_global_styles(); +} + +add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_block_global_styles' ); + /** * Enqueues the global styles custom css. * From 0fee1aff7522a19798c4b0203e12b5493a5aef69 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Thu, 25 Jan 2024 17:12:01 +1100 Subject: [PATCH 12/22] Make sure global styles only load in admin --- lib/script-loader.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/script-loader.php b/lib/script-loader.php index 7402cc591b186..c65fd87f4c880 100644 --- a/lib/script-loader.php +++ b/lib/script-loader.php @@ -17,6 +17,9 @@ * @return void */ function gutenberg_enqueue_global_styles() { + if ( is_admin() ) { + return; + } $separate_assets = wp_should_load_separate_core_block_assets(); $is_block_theme = wp_is_block_theme(); $is_classic_theme = ! $is_block_theme; From 20dadf2b0a0a7d561744e4e00bb4d66e8711ea3b Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Wed, 31 Jan 2024 15:52:46 +1100 Subject: [PATCH 13/22] Remove redundant filter and duplicate global styles. --- lib/script-loader.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/script-loader.php b/lib/script-loader.php index c65fd87f4c880..46af18d6b5b3d 100644 --- a/lib/script-loader.php +++ b/lib/script-loader.php @@ -38,13 +38,6 @@ function gutenberg_enqueue_global_styles() { return; } - /* - * If loading the CSS for each block separately, then load the theme.json CSS conditionally. - * This removes the CSS from the global-styles stylesheet and adds it to the inline CSS for each block. - * This filter must be registered before calling wp_get_global_stylesheet(); - */ - add_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' ); - $stylesheet = gutenberg_get_global_stylesheet(); if ( empty( $stylesheet ) ) { return; @@ -80,8 +73,6 @@ function gutenberg_enqueue_block_global_styles() { } wp_enqueue_style( 'global-styles-blocks' ); - - wp_enqueue_global_styles(); } add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_block_global_styles' ); From e5e19e758086bb20f863601fe69f1c5f647b6a4d Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Fri, 2 Feb 2024 16:39:26 +1100 Subject: [PATCH 14/22] Fix style loading order better. --- lib/global-styles-and-settings.php | 5 ++++ lib/script-loader.php | 42 ++++++++---------------------- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/lib/global-styles-and-settings.php b/lib/global-styles-and-settings.php index b36437547ab45..a4df8576158ab 100644 --- a/lib/global-styles-and-settings.php +++ b/lib/global-styles-and-settings.php @@ -182,6 +182,11 @@ function gutenberg_add_global_styles_for_blocks() { foreach ( $block_nodes as $metadata ) { $block_css = $tree->get_styles_for_block( $metadata ); + if ( ! wp_should_load_separate_core_block_assets() ) { + wp_add_inline_style( 'global-styles', $block_css ); + continue; + } + $stylesheet_handle = 'global-styles'; /* * When `wp_should_load_separate_core_block_assets()` is true, block styles are diff --git a/lib/script-loader.php b/lib/script-loader.php index 46af18d6b5b3d..2b5c7bb08a676 100644 --- a/lib/script-loader.php +++ b/lib/script-loader.php @@ -17,9 +17,6 @@ * @return void */ function gutenberg_enqueue_global_styles() { - if ( is_admin() ) { - return; - } $separate_assets = wp_should_load_separate_core_block_assets(); $is_block_theme = wp_is_block_theme(); $is_classic_theme = ! $is_block_theme; @@ -38,6 +35,13 @@ function gutenberg_enqueue_global_styles() { return; } + /* + * If loading the CSS for each block separately, then load the theme.json CSS conditionally. + * This removes the CSS from the global-styles stylesheet and adds it to the inline CSS for each block. + * This filter must be registered before calling wp_get_global_stylesheet(); + */ + add_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' ); + $stylesheet = gutenberg_get_global_stylesheet(); if ( empty( $stylesheet ) ) { return; @@ -46,36 +50,12 @@ function gutenberg_enqueue_global_styles() { wp_register_style( 'global-styles', false ); wp_add_inline_style( 'global-styles', $stylesheet ); wp_enqueue_style( 'global-styles' ); -} -add_action( 'init', 'gutenberg_enqueue_global_styles', 1 ); -add_action( 'wp_footer', 'gutenberg_enqueue_global_styles', 1 ); - -add_action( 'wp_enqueue_scripts', 'gutenberg_add_global_styles_for_blocks' ); - -/** - * Enqueues block global styles when separate core block assets are disabled. - * - * @since 6.5.0 - */ -function gutenberg_enqueue_block_global_styles() { - if ( wp_should_load_separate_core_block_assets() ) { - return; - } - - $tree = WP_Theme_JSON_Resolver::get_merged_data(); - $block_nodes = $tree->get_styles_block_nodes(); - wp_register_style( 'global-styles-blocks', false ); - - foreach ( $block_nodes as $metadata ) { - $block_css = $tree->get_styles_for_block( $metadata ); - wp_add_inline_style( 'global-styles-blocks', $block_css ); - } - - wp_enqueue_style( 'global-styles-blocks' ); + // Add each block as an inline css. + gutenberg_add_global_styles_for_blocks(); } - -add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_block_global_styles' ); +add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_global_styles' ); +add_action( 'wp_footer', 'gutenberg_enqueue_global_styles', 1 ); /** * Enqueues the global styles custom css. From b070ef292b062068cd56f2c7d0da93104b15f955 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 5 Feb 2024 11:25:01 +1100 Subject: [PATCH 15/22] Reduce specificity of Cover styles --- packages/block-library/src/cover/style.scss | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/block-library/src/cover/style.scss b/packages/block-library/src/cover/style.scss index 3b4eac41a0d3b..1aae7d1e9c8a8 100644 --- a/packages/block-library/src/cover/style.scss +++ b/packages/block-library/src/cover/style.scss @@ -1,12 +1,16 @@ +// Lowest specificity styles are used to ensure that the default styles for the cover block can be overridden by global styles. +:where(.wp-block-cover-image, .wp-block-cover) { + min-height: 430px; + padding: 1em; +} + .wp-block-cover-image, .wp-block-cover { position: relative; background-position: center center; - min-height: 430px; display: flex; justify-content: center; align-items: center; - padding: 1em; // Prevent the `wp-block-cover__background` span from overflowing the container when border-radius is applied. // Use clip instead of overflow: hidden so that sticky position works on child elements. // Use overflow-x instead of overflow so that aspect-ratio allows content to expand the area of the cover block. From b3ff00fa3a4f1a85b667755282104a1c70618c58 Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:49:24 +1000 Subject: [PATCH 16/22] Reinstate theme.json test updates --- phpunit/class-wp-theme-json-test.php | 100 +++++++++++++-------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/phpunit/class-wp-theme-json-test.php b/phpunit/class-wp-theme-json-test.php index 3018ea1a15b8e..8ca5b02a6991b 100644 --- a/phpunit/class-wp-theme-json-test.php +++ b/phpunit/class-wp-theme-json-test.php @@ -540,7 +540,7 @@ public function test_get_stylesheet() { ); $variables = 'body{--wp--preset--color--grey: grey;--wp--preset--gradient--custom-gradient: linear-gradient(135deg,rgba(0,0,0) 0%,rgb(0,0,0) 100%);--wp--preset--font-size--small: 14px;--wp--preset--font-size--big: 41px;--wp--preset--font-family--arial: Arial, serif;}.wp-block-group{--wp--custom--base-font: 16;--wp--custom--line-height--small: 1.2;--wp--custom--line-height--medium: 1.4;--wp--custom--line-height--large: 1.8;}'; - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{color: var(--wp--preset--color--grey);}a:where(:not(.wp-element-button)){background-color: #333;color: #111;}.wp-element-button, .wp-block-button__link{box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}.wp-block-cover{min-height: unset;aspect-ratio: 16/9;}.wp-block-group{background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;min-height: 50vh;padding: 24px;}.wp-block-group a:where(:not(.wp-element-button)){color: #111;}.wp-block-heading{color: #123456;}.wp-block-heading a:where(:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}.wp-block-post-date{color: #123456;}.wp-block-post-date a:where(:not(.wp-element-button)){background-color: #777;color: #555;}.wp-block-post-excerpt{column-count: 2;}.wp-block-image{margin-bottom: 30px;}.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}.wp-block-image img, .wp-block-image .components-placeholder{filter: var(--wp--preset--duotone--custom-duotone);}'; + $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){color: var(--wp--preset--color--grey);}:where(a:not(.wp-element-button)){background-color: #333;color: #111;}:where(.wp-element-button, .wp-block-button__link){box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}:where(.wp-block-cover){min-height: unset;aspect-ratio: 16/9;}:where(.wp-block-group){background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;min-height: 50vh;padding: 24px;}:where(.wp-block-group a:not(.wp-element-button)){color: #111;}:where(.wp-block-heading){color: #123456;}:where(.wp-block-heading a:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}:where(.wp-block-post-date){color: #123456;}:where(.wp-block-post-date a:not(.wp-element-button)){background-color: #777;color: #555;}:where(.wp-block-post-excerpt){column-count: 2;}:where(.wp-block-image){margin-bottom: 30px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}:where(.wp-block-image img, .wp-block-image .components-placeholder){filter: var(--wp--preset--duotone--custom-duotone);}'; $presets = '.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}.has-custom-gradient-gradient-background{background: var(--wp--preset--gradient--custom-gradient) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-big-font-size{font-size: var(--wp--preset--font-size--big) !important;}.has-arial-font-family{font-family: var(--wp--preset--font-family--arial) !important;}'; $all = $variables . $styles . $presets; @@ -586,7 +586,7 @@ public function test_get_stylesheet_support_for_shorthand_and_longhand_values() ) ); - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-group{border-radius: 10px;margin: 1em;padding: 24px;}.wp-block-image{margin-bottom: 30px;padding-top: 15px;}.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; + $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-group){border-radius: 10px;margin: 1em;padding: 24px;}:where(.wp-block-image){margin-bottom: 30px;padding-top: 15px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; $this->assertSame( $styles, $theme_json->get_stylesheet() ); $this->assertSame( $styles, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -615,7 +615,7 @@ public function test_get_stylesheet_skips_disabled_protected_properties() { ) ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}'; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -637,7 +637,7 @@ public function test_get_stylesheet_renders_enabled_protected_properties() { ) ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -699,7 +699,7 @@ public function test_get_stylesheet_preset_rules_come_after_block_rules() { ) ); - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-group{color: red;}'; + $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-group){color: red;}'; $presets = '.wp-block-group.has-grey-color{color: var(--wp--preset--color--grey) !important;}.wp-block-group.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.wp-block-group.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}'; $variables = '.wp-block-group{--wp--preset--color--grey: grey;}'; @@ -786,7 +786,7 @@ public function test_get_stylesheet_preset_values_are_marked_as_important() { ); $this->assertSame( - 'body{--wp--preset--color--grey: grey;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}p{background-color: blue;color: red;font-size: 12px;line-height: 1.3;}.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}', + 'body{--wp--preset--color--grey: grey;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(p){background-color: blue;color: red;font-size: 12px;line-height: 1.3;}.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}', $theme_json->get_stylesheet() ); } @@ -824,9 +824,9 @@ public function test_get_stylesheet_handles_whitelisted_element_pseudo_selectors ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = 'a:where(:not(.wp-element-button)){background-color: red;color: green;}a:where(:not(.wp-element-button)):hover{background-color: green;color: red;font-size: 10em;text-transform: uppercase;}a:where(:not(.wp-element-button)):focus{background-color: black;color: yellow;}'; + $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; $expected = $base_styles . $element_styles; @@ -863,9 +863,9 @@ public function test_get_stylesheet_handles_only_pseudo_selector_rules_for_given ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = 'a:where(:not(.wp-element-button)):hover{background-color: green;color: red;font-size: 10em;text-transform: uppercase;}a:where(:not(.wp-element-button)):focus{background-color: black;color: yellow;}'; + $element_styles = ':where(a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; $expected = $base_styles . $element_styles; @@ -902,9 +902,9 @@ public function test_get_stylesheet_ignores_pseudo_selectors_on_non_whitelisted_ ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = 'h4{background-color: red;color: green;}'; + $element_styles = ':where(h4){background-color: red;color: green;}'; $expected = $base_styles . $element_styles; @@ -941,9 +941,9 @@ public function test_get_stylesheet_ignores_non_whitelisted_pseudo_selectors() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = 'a:where(:not(.wp-element-button)){background-color: red;color: green;}a:where(:not(.wp-element-button)):hover{background-color: green;color: red;}'; + $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;}'; $expected = $base_styles . $element_styles; @@ -989,9 +989,9 @@ public function test_get_stylesheet_handles_priority_of_elements_vs_block_elemen ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = '.wp-block-group a:where(:not(.wp-element-button)){background-color: red;color: green;}.wp-block-group a:where(:not(.wp-element-button)):hover{background-color: green;color: red;font-size: 10em;text-transform: uppercase;}.wp-block-group a:where(:not(.wp-element-button)):focus{background-color: black;color: yellow;}'; + $element_styles = ':where(.wp-block-group a:not(.wp-element-button)){background-color: red;color: green;}:where(.wp-block-group a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(.wp-block-group a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; $expected = $base_styles . $element_styles; @@ -1036,9 +1036,9 @@ public function test_get_stylesheet_handles_whitelisted_block_level_element_pseu ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = 'a:where(:not(.wp-element-button)){background-color: red;color: green;}a:where(:not(.wp-element-button)):hover{background-color: green;color: red;}.wp-block-group a:where(:not(.wp-element-button)):hover{background-color: black;color: yellow;}'; + $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;}:where(.wp-block-group a:not(.wp-element-button):hover){background-color: black;color: yellow;}'; $expected = $base_styles . $element_styles; @@ -1099,8 +1099,8 @@ public function test_get_stylesheet_with_deprecated_feature_level_selectors() { ) ); - $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $block_styles = '.wp-block-test, .wp-block-test__wrapper{color: green;}.wp-block-test .inner, .wp-block-test__wrapper .inner{border-radius: 9999px;padding: 20px;}.wp-block-test .sub-heading, .wp-block-test__wrapper .sub-heading{font-size: 3em;}'; + $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $block_styles = ':where(.wp-block-test, .wp-block-test__wrapper){color: green;}:where(.wp-block-test .inner, .wp-block-test__wrapper .inner){border-radius: 9999px;padding: 20px;}:where(.wp-block-test .sub-heading, .wp-block-test__wrapper .sub-heading){font-size: 3em;}'; $preset_styles = '.has-green-color{color: var(--wp--preset--color--green) !important;}.has-green-background-color{background-color: var(--wp--preset--color--green) !important;}.has-green-border-color{border-color: var(--wp--preset--color--green) !important;}'; $expected = $base_styles . $block_styles . $preset_styles; @@ -1161,8 +1161,8 @@ public function test_get_stylesheet_with_block_json_selectors() { ) ); - $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $block_styles = '.custom-root-selector{background-color: grey;padding: 20px;}.custom-root-selector img{border-radius: 9999px;}.custom-root-selector > figcaption{color: navy;font-size: 3em;}'; + $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $block_styles = ':where(.custom-root-selector){background-color: grey;padding: 20px;}:where(.custom-root-selector img){border-radius: 9999px;}:where(.custom-root-selector > figcaption){color: navy;font-size: 3em;}'; $preset_styles = '.has-green-color{color: var(--wp--preset--color--green) !important;}.has-green-background-color{background-color: var(--wp--preset--color--green) !important;}.has-green-border-color{border-color: var(--wp--preset--color--green) !important;}'; $expected = $base_styles . $block_styles . $preset_styles; @@ -1189,7 +1189,7 @@ public function test_get_stylesheet_generates_layout_styles() { // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -1214,7 +1214,7 @@ public function test_get_stylesheet_generates_layout_styles_with_spacing_presets // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--60); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: var(--wp--preset--spacing--60); }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-flex) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-grid) {gap: var(--wp--preset--spacing--60);}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--60); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: var(--wp--preset--spacing--60); }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-flex) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-grid) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -1240,7 +1240,7 @@ public function test_get_stylesheet_generates_fallback_gap_layout_styles() { // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', $stylesheet ); } @@ -1261,7 +1261,7 @@ public function test_get_stylesheet_generates_base_fallback_gap_layout_styles() // Note the `base-layout-styles` includes a fallback gap for the Columns block for backwards compatibility. $this->assertSame( - ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}', + ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}', $stylesheet ); } @@ -1330,8 +1330,8 @@ public function test_get_stylesheet_generates_valid_block_gap_values_and_skips_n ); $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1rem; }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1rem;}:where(body .is-layout-grid) {gap: 1rem;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}' . - '.wp-block-post-content{color: gray;}.wp-block-social-links-is-layout-flow > :first-child:first-child{margin-block-start: 0;}.wp-block-social-links-is-layout-flow > :last-child:last-child{margin-block-end: 0;}.wp-block-social-links-is-layout-flow > *{margin-block-start: 0;margin-block-end: 0;}.wp-block-social-links-is-layout-constrained > :first-child:first-child{margin-block-start: 0;}.wp-block-social-links-is-layout-constrained > :last-child:last-child{margin-block-end: 0;}.wp-block-social-links-is-layout-constrained > *{margin-block-start: 0;margin-block-end: 0;}.wp-block-social-links-is-layout-flex{gap: 0;}.wp-block-social-links-is-layout-grid{gap: 0;}.wp-block-buttons-is-layout-flow > :first-child:first-child{margin-block-start: 0;}.wp-block-buttons-is-layout-flow > :last-child:last-child{margin-block-end: 0;}.wp-block-buttons-is-layout-flow > *{margin-block-start: 0;margin-block-end: 0;}.wp-block-buttons-is-layout-constrained > :first-child:first-child{margin-block-start: 0;}.wp-block-buttons-is-layout-constrained > :last-child:last-child{margin-block-end: 0;}.wp-block-buttons-is-layout-constrained > *{margin-block-start: 0;margin-block-end: 0;}.wp-block-buttons-is-layout-flex{gap: 0;}.wp-block-buttons-is-layout-grid{gap: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1rem; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1rem;}:where(body .is-layout-grid) {gap: 1rem;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}' . + ':where(.wp-block-post-content){color: gray;}:where(.wp-block-social-links-is-layout-flow) > :first-child{margin-block-start: 0;}:where(.wp-block-social-links-is-layout-flow) > :last-child{margin-block-end: 0;}:where(.wp-block-social-links-is-layout-flow) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-social-links-is-layout-constrained) > :first-child{margin-block-start: 0;}:where(.wp-block-social-links-is-layout-constrained) > :last-child{margin-block-end: 0;}:where(.wp-block-social-links-is-layout-constrained) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-social-links-is-layout-flex) {gap: 0;}:where(.wp-block-social-links-is-layout-grid) {gap: 0;}:where(.wp-block-buttons-is-layout-flow) > :first-child{margin-block-start: 0;}:where(.wp-block-buttons-is-layout-flow) > :last-child{margin-block-end: 0;}:where(.wp-block-buttons-is-layout-flow) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-buttons-is-layout-constrained) > :first-child{margin-block-start: 0;}:where(.wp-block-buttons-is-layout-constrained) > :last-child{margin-block-end: 0;}:where(.wp-block-buttons-is-layout-constrained) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-buttons-is-layout-flex) {gap: 0;}:where(.wp-block-buttons-is-layout-grid) {gap: 0;}', $theme_json->get_stylesheet() ); } @@ -1363,9 +1363,9 @@ public function test_get_stylesheet_returns_outline_styles() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = '.wp-element-button, .wp-block-button__link{outline-color: red;outline-offset: 3px;outline-style: dashed;outline-width: 3px;}.wp-element-button:hover, .wp-block-button__link:hover{outline-color: blue;outline-offset: 3px;outline-style: solid;outline-width: 3px;}'; + $element_styles = ':where(.wp-element-button, .wp-block-button__link){outline-color: red;outline-offset: 3px;outline-style: dashed;outline-width: 3px;}:where(.wp-element-button:hover, .wp-block-button__link:hover){outline-color: blue;outline-offset: 3px;outline-style: solid;outline-width: 3px;}'; $expected = $base_styles . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); @@ -1390,7 +1390,7 @@ public function test_get_stylesheet_custom_root_selector() { // Results also include root site blocks styles which hard code // `body { margin: 0; }`. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.custom{color: teal;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.custom){color: teal;}', $actual ); } @@ -3459,8 +3459,8 @@ public function test_get_property_value_valid() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $color_styles = 'body{background-color: #ffffff;color: #000000;}.wp-element-button, .wp-block-button__link{background-color: #000000;color: #ffffff;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $color_styles = ':where(body){background-color: #ffffff;color: #000000;}:where(.wp-element-button, .wp-block-button__link){background-color: #000000;color: #ffffff;}'; $expected = $base_styles . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3538,8 +3538,8 @@ public function test_get_property_value_loop() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $color_styles = 'body{background-color: #ffffff;}.wp-element-button, .wp-block-button__link{color: #ffffff;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $color_styles = ':where(body){background-color: #ffffff;}:where(.wp-element-button, .wp-block-button__link){color: #ffffff;}'; $expected = $base_styles . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3572,8 +3572,8 @@ public function test_get_property_value_recursion() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $color_styles = 'body{background-color: #ffffff;color: #ffffff;}.wp-element-button, .wp-block-button__link{color: #ffffff;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $color_styles = ':where(body){background-color: #ffffff;color: #ffffff;}:where(.wp-element-button, .wp-block-button__link){color: #ffffff;}'; $expected = $base_styles . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3597,8 +3597,8 @@ public function test_get_property_value_self() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $color_styles = 'body{background-color: #ffffff;}'; + $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $color_styles = ':where(body){background-color: #ffffff;}'; $expected = $base_styles . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3628,7 +3628,7 @@ public function test_get_styles_for_block_with_padding_aware_alignments() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{--wp--style--root--padding-top: 10px;--wp--style--root--padding-right: 12px;--wp--style--root--padding-bottom: 10px;--wp--style--root--padding-left: 12px;}'; + $expected = 'body { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){--wp--style--root--padding-top: 10px;--wp--style--root--padding-right: 12px;--wp--style--root--padding-bottom: 10px;--wp--style--root--padding-left: 12px;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3656,7 +3656,7 @@ public function test_get_styles_for_block_without_padding_aware_alignments() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{padding-top: 10px;padding-right: 12px;padding-bottom: 10px;padding-left: 12px;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){padding-top: 10px;padding-right: 12px;padding-bottom: 10px;padding-left: 12px;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3680,7 +3680,7 @@ public function test_get_styles_for_block_with_content_width() { 'selector' => 'body', ); - $expected = 'body { margin: 0;--wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $expected = 'body { margin: 0;--wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3701,7 +3701,7 @@ public function test_get_styles_with_appearance_tools() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: ; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child:first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child:last-child { margin-block-end: 0; }body { --wp--style--block-gap: ; }:where(body .is-layout-flow) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child:first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child:last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1;}:where(body .is-layout-grid) {gap: 1;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: ; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: ; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1;}:where(body .is-layout-grid) {gap: 1;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $this->assertSame( $expected, $root_rules ); } @@ -4626,7 +4626,7 @@ public function data_update_separator_declarations() { 'background' => 'blue', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;color: blue;}', + 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;color: blue;}', ), // If background and text are defined, do not include border-color, as text color is enough. 'background and text, no border-color' => array( @@ -4636,7 +4636,7 @@ public function data_update_separator_declarations() { 'text' => 'red', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;color: red;}', + 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;color: red;}', ), // If only text is defined, do not include border-color, as by itself is enough. 'only text' => array( @@ -4645,7 +4645,7 @@ public function data_update_separator_declarations() { 'text' => 'red', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{color: red;}', + 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){color: red;}', ), // If background, text, and border-color are defined, include everything, CSS specificity will decide which to apply. 'background, text, and border-color' => array( @@ -4658,7 +4658,7 @@ public function data_update_separator_declarations() { 'color' => 'pink', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;border-color: pink;color: red;}', + 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;border-color: pink;color: red;}', ), // If background and border color are defined, include everything, CSS specificity will decide which to apply. 'background, and border-color' => array( @@ -4670,7 +4670,7 @@ public function data_update_separator_declarations() { 'color' => 'pink', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;border-color: pink;}', + 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;border-color: pink;}', ), ); } @@ -4733,8 +4733,8 @@ public function test_get_shadow_styles_for_blocks() { ) ); - $global_styles = 'body{--wp--preset--shadow--natural: 5px 5px 0 0 black;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; - $element_styles = 'a:where(:not(.wp-element-button)){box-shadow: var(--wp--preset--shadow--natural);}.wp-element-button, .wp-block-button__link{box-shadow: var(--wp--preset--shadow--natural);}p{box-shadow: var(--wp--preset--shadow--natural);}'; + $global_styles = 'body{--wp--preset--shadow--natural: 5px 5px 0 0 black;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $element_styles = ':where(a:not(.wp-element-button)){box-shadow: var(--wp--preset--shadow--natural);}:where(.wp-element-button, .wp-block-button__link){box-shadow: var(--wp--preset--shadow--natural);}:where(p){box-shadow: var(--wp--preset--shadow--natural);}'; $expected_styles = $global_styles . $element_styles; $this->assertSame( $expected_styles, $theme_json->get_stylesheet() ); } From 9916e9d59fb637dc6d3476ef68fbaf046ab10a08 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Tue, 6 Feb 2024 17:48:11 +1100 Subject: [PATCH 17/22] Reduce specificity of margin and other styles in core block theme files --- packages/block-library/src/audio/theme.scss | 2 +- packages/block-library/src/embed/theme.scss | 2 +- packages/block-library/src/image/theme.scss | 2 +- packages/block-library/src/pullquote/theme.scss | 2 +- packages/block-library/src/quote/theme.scss | 2 +- packages/block-library/src/table/theme.scss | 6 ++++-- packages/block-library/src/template-part/theme.scss | 2 +- packages/block-library/src/video/theme.scss | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/block-library/src/audio/theme.scss b/packages/block-library/src/audio/theme.scss index 2744d36e74ca6..eda394fd6a3d5 100644 --- a/packages/block-library/src/audio/theme.scss +++ b/packages/block-library/src/audio/theme.scss @@ -2,6 +2,6 @@ @include caption-style-theme(); } -.wp-block-audio { +:where(.wp-block-audio) { margin: 0 0 1em 0; } diff --git a/packages/block-library/src/embed/theme.scss b/packages/block-library/src/embed/theme.scss index e809a783b9c81..57ece1dcd43ca 100644 --- a/packages/block-library/src/embed/theme.scss +++ b/packages/block-library/src/embed/theme.scss @@ -2,6 +2,6 @@ @include caption-style-theme(); } -.wp-block-embed { +:where(.wp-block-embed) { margin: 0 0 1em 0; } diff --git a/packages/block-library/src/image/theme.scss b/packages/block-library/src/image/theme.scss index d5b2cfb0e83e9..459036511335a 100644 --- a/packages/block-library/src/image/theme.scss +++ b/packages/block-library/src/image/theme.scss @@ -2,6 +2,6 @@ @include caption-style-theme(); } -.wp-block-image { +:where(.wp-block-image) { margin: 0 0 1em 0; } diff --git a/packages/block-library/src/pullquote/theme.scss b/packages/block-library/src/pullquote/theme.scss index 6b5e8401227f5..472cf585bd25c 100644 --- a/packages/block-library/src/pullquote/theme.scss +++ b/packages/block-library/src/pullquote/theme.scss @@ -1,4 +1,4 @@ -.wp-block-pullquote { +:where(.wp-block-pullquote) { border-top: 4px solid currentColor; border-bottom: 4px solid currentColor; margin-bottom: 1.75em; diff --git a/packages/block-library/src/quote/theme.scss b/packages/block-library/src/quote/theme.scss index 085d4e91924a8..eb47a8fe0a778 100644 --- a/packages/block-library/src/quote/theme.scss +++ b/packages/block-library/src/quote/theme.scss @@ -1,4 +1,4 @@ -.wp-block-quote { +:where(.wp-block-quote) { border-left: 0.25em solid currentColor; margin: 0 0 1.75em 0; padding-left: 1em; diff --git a/packages/block-library/src/table/theme.scss b/packages/block-library/src/table/theme.scss index d42e79b02b496..19dc71c8857bd 100644 --- a/packages/block-library/src/table/theme.scss +++ b/packages/block-library/src/table/theme.scss @@ -1,6 +1,4 @@ .wp-block-table { - margin: 0 0 1em 0; - td, th { word-break: normal; @@ -10,3 +8,7 @@ @include caption-style-theme(); } } + +:where(.wp-block-table) { + margin: 0 0 1em 0; +} diff --git a/packages/block-library/src/template-part/theme.scss b/packages/block-library/src/template-part/theme.scss index 58e7b1fdf2d9f..2f1d3a0a513cb 100644 --- a/packages/block-library/src/template-part/theme.scss +++ b/packages/block-library/src/template-part/theme.scss @@ -1,5 +1,5 @@ // Same as the group block styles. -.wp-block-template-part { +:where(.wp-block-template-part) { &.has-background { // Matches paragraph Block padding padding: $block-bg-padding--v $block-bg-padding--h; diff --git a/packages/block-library/src/video/theme.scss b/packages/block-library/src/video/theme.scss index cdc95af0b02c2..c5399582bbb28 100644 --- a/packages/block-library/src/video/theme.scss +++ b/packages/block-library/src/video/theme.scss @@ -2,6 +2,6 @@ @include caption-style-theme(); } -.wp-block-video { +:where(.wp-block-video) { margin: 0 0 1em 0; } From 8ae139cf5d7e58c8a344f94e5c6048bf53b7e8b8 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Mon, 12 Feb 2024 13:54:22 +1100 Subject: [PATCH 18/22] Fix invalid selector --- packages/block-library/src/pullquote/theme.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/block-library/src/pullquote/theme.scss b/packages/block-library/src/pullquote/theme.scss index 472cf585bd25c..0dc7943a77051 100644 --- a/packages/block-library/src/pullquote/theme.scss +++ b/packages/block-library/src/pullquote/theme.scss @@ -3,7 +3,9 @@ border-bottom: 4px solid currentColor; margin-bottom: 1.75em; color: currentColor; +} +.wp-block-pullquote { cite, footer, &__citation { From 405c6f9e27a42547999f00fdc2f72392512051e9 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Tue, 20 Feb 2024 13:50:31 +1100 Subject: [PATCH 19/22] bump specificity of layout styles back up --- lib/class-wp-theme-json-gutenberg.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php index 87f99e883c3cb..c53501710ac1f 100644 --- a/lib/class-wp-theme-json-gutenberg.php +++ b/lib/class-wp-theme-json-gutenberg.php @@ -1519,7 +1519,7 @@ protected function get_layout_styles( $block_metadata ) { in_array( $layout_definition['displayMode'], $valid_display_modes, true ) ) { $layout_selector = sprintf( - ':where(%s .%s)', + '%s .%s', $selector, $class_name ); @@ -1552,7 +1552,7 @@ protected function get_layout_styles( $block_metadata ) { } $layout_selector = sprintf( - ':where(%s .%s%s)', + '%s .%s%s', $selector, $class_name, $base_style_rule['selector'] From a5c48bd0f87219bcce4dcdeadbdb0faff5099749 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Tue, 20 Feb 2024 14:06:10 +1100 Subject: [PATCH 20/22] Bump up specificity of layout rule in global styles --- .../src/components/global-styles/use-global-styles-output.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/use-global-styles-output.js index 6382b32ca69ff..ef87951483d91 100644 --- a/packages/block-editor/src/components/global-styles/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/use-global-styles-output.js @@ -575,9 +575,9 @@ export function getLayoutStyles( { } if ( declarations.length ) { - const combinedSelector = `:where(${ selector } .${ className }${ + const combinedSelector = `${ selector } .${ className }${ baseStyle?.selector || '' - })`; + }`; ruleset += `${ combinedSelector } { ${ declarations.join( '; ' ) }; }`; From 3817e5e14f8099399cbabd1e78c594c18c054020 Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:49:59 +1000 Subject: [PATCH 21/22] Fix theme json unit tests again Refactored out the common base styles for tests that don't need to target them explicitly to make maintaining these tests easier. --- phpunit/class-wp-theme-json-test.php | 96 +++++++++++++--------------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/phpunit/class-wp-theme-json-test.php b/phpunit/class-wp-theme-json-test.php index 8ca5b02a6991b..01255f993e990 100644 --- a/phpunit/class-wp-theme-json-test.php +++ b/phpunit/class-wp-theme-json-test.php @@ -16,6 +16,16 @@ class WP_Theme_JSON_Gutenberg_Test extends WP_UnitTestCase { */ private static $administrator_id; + /** + * Standard base styles. + * + * Prevents tests not aimed at base styles from having to redefine + * them repeatedly. + * + * @var string + */ + const BASE_STYLES = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; + /** * User ID. * @@ -540,7 +550,7 @@ public function test_get_stylesheet() { ); $variables = 'body{--wp--preset--color--grey: grey;--wp--preset--gradient--custom-gradient: linear-gradient(135deg,rgba(0,0,0) 0%,rgb(0,0,0) 100%);--wp--preset--font-size--small: 14px;--wp--preset--font-size--big: 41px;--wp--preset--font-family--arial: Arial, serif;}.wp-block-group{--wp--custom--base-font: 16;--wp--custom--line-height--small: 1.2;--wp--custom--line-height--medium: 1.4;--wp--custom--line-height--large: 1.8;}'; - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){color: var(--wp--preset--color--grey);}:where(a:not(.wp-element-button)){background-color: #333;color: #111;}:where(.wp-element-button, .wp-block-button__link){box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}:where(.wp-block-cover){min-height: unset;aspect-ratio: 16/9;}:where(.wp-block-group){background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;min-height: 50vh;padding: 24px;}:where(.wp-block-group a:not(.wp-element-button)){color: #111;}:where(.wp-block-heading){color: #123456;}:where(.wp-block-heading a:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}:where(.wp-block-post-date){color: #123456;}:where(.wp-block-post-date a:not(.wp-element-button)){background-color: #777;color: #555;}:where(.wp-block-post-excerpt){column-count: 2;}:where(.wp-block-image){margin-bottom: 30px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}:where(.wp-block-image img, .wp-block-image .components-placeholder){filter: var(--wp--preset--duotone--custom-duotone);}'; + $styles = static::BASE_STYLES . ':where(body){color: var(--wp--preset--color--grey);}:where(a:not(.wp-element-button)){background-color: #333;color: #111;}:where(.wp-element-button, .wp-block-button__link){box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.66);}:where(.wp-block-cover){min-height: unset;aspect-ratio: 16/9;}:where(.wp-block-group){background: var(--wp--preset--gradient--custom-gradient);border-radius: 10px;min-height: 50vh;padding: 24px;}:where(.wp-block-group a:not(.wp-element-button)){color: #111;}:where(.wp-block-heading){color: #123456;}:where(.wp-block-heading a:not(.wp-element-button)){background-color: #333;color: #111;font-size: 60px;}:where(.wp-block-post-date){color: #123456;}:where(.wp-block-post-date a:not(.wp-element-button)){background-color: #777;color: #555;}:where(.wp-block-post-excerpt){column-count: 2;}:where(.wp-block-image){margin-bottom: 30px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}:where(.wp-block-image img, .wp-block-image .components-placeholder){filter: var(--wp--preset--duotone--custom-duotone);}'; $presets = '.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}.has-custom-gradient-gradient-background{background: var(--wp--preset--gradient--custom-gradient) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-big-font-size{font-size: var(--wp--preset--font-size--big) !important;}.has-arial-font-family{font-family: var(--wp--preset--font-family--arial) !important;}'; $all = $variables . $styles . $presets; @@ -586,7 +596,7 @@ public function test_get_stylesheet_support_for_shorthand_and_longhand_values() ) ); - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-group){border-radius: 10px;margin: 1em;padding: 24px;}:where(.wp-block-image){margin-bottom: 30px;padding-top: 15px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; + $styles = static::BASE_STYLES . ':where(.wp-block-group){border-radius: 10px;margin: 1em;padding: 24px;}:where(.wp-block-image){margin-bottom: 30px;padding-top: 15px;}:where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; $this->assertSame( $styles, $theme_json->get_stylesheet() ); $this->assertSame( $styles, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -615,7 +625,7 @@ public function test_get_stylesheet_skips_disabled_protected_properties() { ) ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}'; + $expected = static::BASE_STYLES . ':where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}'; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -637,7 +647,7 @@ public function test_get_stylesheet_renders_enabled_protected_properties() { ) ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -699,7 +709,7 @@ public function test_get_stylesheet_preset_rules_come_after_block_rules() { ) ); - $styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-group){color: red;}'; + $styles = static::BASE_STYLES . ':where(.wp-block-group){color: red;}'; $presets = '.wp-block-group.has-grey-color{color: var(--wp--preset--color--grey) !important;}.wp-block-group.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.wp-block-group.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}'; $variables = '.wp-block-group{--wp--preset--color--grey: grey;}'; @@ -786,7 +796,7 @@ public function test_get_stylesheet_preset_values_are_marked_as_important() { ); $this->assertSame( - 'body{--wp--preset--color--grey: grey;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(p){background-color: blue;color: red;font-size: 12px;line-height: 1.3;}.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}', + 'body{--wp--preset--color--grey: grey;}' . static::BASE_STYLES . ':where(p){background-color: blue;color: red;font-size: 12px;line-height: 1.3;}.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}', $theme_json->get_stylesheet() ); } @@ -824,11 +834,9 @@ public function test_get_stylesheet_handles_whitelisted_element_pseudo_selectors ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -863,11 +871,9 @@ public function test_get_stylesheet_handles_only_pseudo_selector_rules_for_given ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -902,11 +908,9 @@ public function test_get_stylesheet_ignores_pseudo_selectors_on_non_whitelisted_ ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(h4){background-color: red;color: green;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -941,11 +945,9 @@ public function test_get_stylesheet_ignores_non_whitelisted_pseudo_selectors() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -989,11 +991,9 @@ public function test_get_stylesheet_handles_priority_of_elements_vs_block_elemen ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(.wp-block-group a:not(.wp-element-button)){background-color: red;color: green;}:where(.wp-block-group a:not(.wp-element-button):hover){background-color: green;color: red;font-size: 10em;text-transform: uppercase;}:where(.wp-block-group a:not(.wp-element-button):focus){background-color: black;color: yellow;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -1036,11 +1036,9 @@ public function test_get_stylesheet_handles_whitelisted_block_level_element_pseu ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(a:not(.wp-element-button)){background-color: red;color: green;}:where(a:not(.wp-element-button):hover){background-color: green;color: red;}:where(.wp-block-group a:not(.wp-element-button):hover){background-color: black;color: yellow;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); @@ -1099,7 +1097,7 @@ public function test_get_stylesheet_with_deprecated_feature_level_selectors() { ) ); - $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $base_styles = 'body{--wp--preset--color--green: green;}' . static::BASE_STYLES; $block_styles = ':where(.wp-block-test, .wp-block-test__wrapper){color: green;}:where(.wp-block-test .inner, .wp-block-test__wrapper .inner){border-radius: 9999px;padding: 20px;}:where(.wp-block-test .sub-heading, .wp-block-test__wrapper .sub-heading){font-size: 3em;}'; $preset_styles = '.has-green-color{color: var(--wp--preset--color--green) !important;}.has-green-background-color{background-color: var(--wp--preset--color--green) !important;}.has-green-border-color{border-color: var(--wp--preset--color--green) !important;}'; $expected = $base_styles . $block_styles . $preset_styles; @@ -1161,7 +1159,7 @@ public function test_get_stylesheet_with_block_json_selectors() { ) ); - $base_styles = 'body{--wp--preset--color--green: green;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $base_styles = 'body{--wp--preset--color--green: green;}' . static::BASE_STYLES; $block_styles = ':where(.custom-root-selector){background-color: grey;padding: 20px;}:where(.custom-root-selector img){border-radius: 9999px;}:where(.custom-root-selector > figcaption){color: navy;font-size: 3em;}'; $preset_styles = '.has-green-color{color: var(--wp--preset--color--green) !important;}.has-green-background-color{background-color: var(--wp--preset--color--green) !important;}.has-green-border-color{border-color: var(--wp--preset--color--green) !important;}'; $expected = $base_styles . $block_styles . $preset_styles; @@ -1189,7 +1187,7 @@ public function test_get_stylesheet_generates_layout_styles() { // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1em; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1em; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1em;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1em;}:where(body .is-layout-grid) {gap: 1em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -1214,7 +1212,7 @@ public function test_get_stylesheet_generates_layout_styles_with_spacing_presets // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--60); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: var(--wp--preset--spacing--60); }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-flex) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-grid) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--60); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: var(--wp--preset--spacing--60); }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--60);margin-block-end: 0;}:where(body .is-layout-flex) {gap: var(--wp--preset--spacing--60);}:where(body .is-layout-grid) {gap: var(--wp--preset--spacing--60);}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', $theme_json->get_stylesheet( array( 'styles' ) ) ); } @@ -1240,7 +1238,7 @@ public function test_get_stylesheet_generates_fallback_gap_layout_styles() { // Results also include root site blocks styles. $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}', + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}', $stylesheet ); } @@ -1261,7 +1259,7 @@ public function test_get_stylesheet_generates_base_fallback_gap_layout_styles() // Note the `base-layout-styles` includes a fallback gap for the Columns block for backwards compatibility. $this->assertSame( - ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}', + ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}', $stylesheet ); } @@ -1330,7 +1328,7 @@ public function test_get_stylesheet_generates_valid_block_gap_values_and_skips_n ); $this->assertSame( - 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1rem; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1rem;}:where(body .is-layout-grid) {gap: 1rem;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}' . + 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: 1rem; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1rem;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1rem;}:where(body .is-layout-grid) {gap: 1rem;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}' . ':where(.wp-block-post-content){color: gray;}:where(.wp-block-social-links-is-layout-flow) > :first-child{margin-block-start: 0;}:where(.wp-block-social-links-is-layout-flow) > :last-child{margin-block-end: 0;}:where(.wp-block-social-links-is-layout-flow) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-social-links-is-layout-constrained) > :first-child{margin-block-start: 0;}:where(.wp-block-social-links-is-layout-constrained) > :last-child{margin-block-end: 0;}:where(.wp-block-social-links-is-layout-constrained) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-social-links-is-layout-flex) {gap: 0;}:where(.wp-block-social-links-is-layout-grid) {gap: 0;}:where(.wp-block-buttons-is-layout-flow) > :first-child{margin-block-start: 0;}:where(.wp-block-buttons-is-layout-flow) > :last-child{margin-block-end: 0;}:where(.wp-block-buttons-is-layout-flow) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-buttons-is-layout-constrained) > :first-child{margin-block-start: 0;}:where(.wp-block-buttons-is-layout-constrained) > :last-child{margin-block-end: 0;}:where(.wp-block-buttons-is-layout-constrained) > *{margin-block-start: 0;margin-block-end: 0;}:where(.wp-block-buttons-is-layout-flex) {gap: 0;}:where(.wp-block-buttons-is-layout-grid) {gap: 0;}', $theme_json->get_stylesheet() ); @@ -1363,11 +1361,9 @@ public function test_get_stylesheet_returns_outline_styles() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; - $element_styles = ':where(.wp-element-button, .wp-block-button__link){outline-color: red;outline-offset: 3px;outline-style: dashed;outline-width: 3px;}:where(.wp-element-button:hover, .wp-block-button__link:hover){outline-color: blue;outline-offset: 3px;outline-style: solid;outline-width: 3px;}'; - $expected = $base_styles . $element_styles; + $expected = static::BASE_STYLES . $element_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3459,9 +3455,8 @@ public function test_get_property_value_valid() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $color_styles = ':where(body){background-color: #ffffff;color: #000000;}:where(.wp-element-button, .wp-block-button__link){background-color: #000000;color: #ffffff;}'; - $expected = $base_styles . $color_styles; + $expected = static::BASE_STYLES . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3538,9 +3533,8 @@ public function test_get_property_value_loop() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $color_styles = ':where(body){background-color: #ffffff;}:where(.wp-element-button, .wp-block-button__link){color: #ffffff;}'; - $expected = $base_styles . $color_styles; + $expected = static::BASE_STYLES . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3572,9 +3566,8 @@ public function test_get_property_value_recursion() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $color_styles = ':where(body){background-color: #ffffff;color: #ffffff;}:where(.wp-element-button, .wp-block-button__link){color: #ffffff;}'; - $expected = $base_styles . $color_styles; + $expected = static::BASE_STYLES . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3597,9 +3590,8 @@ public function test_get_property_value_self() { ) ); - $base_styles = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; $color_styles = ':where(body){background-color: #ffffff;}'; - $expected = $base_styles . $color_styles; + $expected = static::BASE_STYLES . $color_styles; $this->assertSame( $expected, $theme_json->get_stylesheet() ); } @@ -3628,7 +3620,7 @@ public function test_get_styles_for_block_with_padding_aware_alignments() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){--wp--style--root--padding-top: 10px;--wp--style--root--padding-right: 12px;--wp--style--root--padding-bottom: 10px;--wp--style--root--padding-left: 12px;}'; + $expected = 'body { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(body){--wp--style--root--padding-top: 10px;--wp--style--root--padding-right: 12px;--wp--style--root--padding-bottom: 10px;--wp--style--root--padding-left: 12px;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3656,7 +3648,7 @@ public function test_get_styles_for_block_without_padding_aware_alignments() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(body){padding-top: 10px;padding-right: 12px;padding-bottom: 10px;padding-left: 12px;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(body){padding-top: 10px;padding-right: 12px;padding-bottom: 10px;padding-left: 12px;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3680,7 +3672,7 @@ public function test_get_styles_for_block_with_content_width() { 'selector' => 'body', ); - $expected = 'body { margin: 0;--wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $expected = 'body { margin: 0;--wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $style_rules = $theme_json->get_styles_for_block( $metadata ); $this->assertSame( $expected, $root_rules . $style_rules ); @@ -3701,7 +3693,7 @@ public function test_get_styles_with_appearance_tools() { 'selector' => 'body', ); - $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: ; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: ; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1;}:where(body .is-layout-grid) {gap: 1;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $expected = 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: ; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }body { --wp--style--block-gap: ; }:where(body .is-layout-flow) > :first-child{margin-block-start: 0;}:where(body .is-layout-flow) > :last-child{margin-block-end: 0;}:where(body .is-layout-flow) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-constrained) > :first-child{margin-block-start: 0;}:where(body .is-layout-constrained) > :last-child{margin-block-end: 0;}:where(body .is-layout-constrained) > *{margin-block-start: 1;margin-block-end: 0;}:where(body .is-layout-flex) {gap: 1;}:where(body .is-layout-grid) {gap: 1;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}'; $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON_Gutenberg::ROOT_BLOCK_SELECTOR, $metadata ); $this->assertSame( $expected, $root_rules ); } @@ -4626,7 +4618,7 @@ public function data_update_separator_declarations() { 'background' => 'blue', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;color: blue;}', + 'expected_output' => static::BASE_STYLES . ':where(.wp-block-separator){background-color: blue;color: blue;}', ), // If background and text are defined, do not include border-color, as text color is enough. 'background and text, no border-color' => array( @@ -4636,7 +4628,7 @@ public function data_update_separator_declarations() { 'text' => 'red', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;color: red;}', + 'expected_output' => static::BASE_STYLES . ':where(.wp-block-separator){background-color: blue;color: red;}', ), // If only text is defined, do not include border-color, as by itself is enough. 'only text' => array( @@ -4645,7 +4637,7 @@ public function data_update_separator_declarations() { 'text' => 'red', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){color: red;}', + 'expected_output' => static::BASE_STYLES . ':where(.wp-block-separator){color: red;}', ), // If background, text, and border-color are defined, include everything, CSS specificity will decide which to apply. 'background, text, and border-color' => array( @@ -4658,7 +4650,7 @@ public function data_update_separator_declarations() { 'color' => 'pink', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;border-color: pink;color: red;}', + 'expected_output' => static::BASE_STYLES . ':where(.wp-block-separator){background-color: blue;border-color: pink;color: red;}', ), // If background and border color are defined, include everything, CSS specificity will decide which to apply. 'background, and border-color' => array( @@ -4670,7 +4662,7 @@ public function data_update_separator_declarations() { 'color' => 'pink', ), ), - 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}:where(.wp-block-separator){background-color: blue;border-color: pink;}', + 'expected_output' => static::BASE_STYLES . ':where(.wp-block-separator){background-color: blue;border-color: pink;}', ), ); } @@ -4733,7 +4725,7 @@ public function test_get_shadow_styles_for_blocks() { ) ); - $global_styles = 'body{--wp--preset--shadow--natural: 5px 5px 0 0 black;}body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}:where(body .is-layout-flow > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-flow > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-flow > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignleft){float: left;margin-inline-start: 0;margin-inline-end: 2em;}:where(body .is-layout-constrained > .alignright){float: right;margin-inline-start: 2em;margin-inline-end: 0;}:where(body .is-layout-constrained > .aligncenter){margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}:where(body .is-layout-constrained > .alignwide){max-width: var(--wp--style--global--wide-size);}:where(body .is-layout-flex){display: flex;}:where(body .is-layout-flex){flex-wrap: wrap;align-items: center;}:where(body .is-layout-flex > *){margin: 0;}:where(body .is-layout-grid){display: grid;}:where(body .is-layout-grid > *){margin: 0;}'; + $global_styles = 'body{--wp--preset--shadow--natural: 5px 5px 0 0 black;}' . static::BASE_STYLES; $element_styles = ':where(a:not(.wp-element-button)){box-shadow: var(--wp--preset--shadow--natural);}:where(.wp-element-button, .wp-block-button__link){box-shadow: var(--wp--preset--shadow--natural);}:where(p){box-shadow: var(--wp--preset--shadow--natural);}'; $expected_styles = $global_styles . $element_styles; $this->assertSame( $expected_styles, $theme_json->get_stylesheet() ); From 2fd08c201f99b3297b5cfd539bf42d6c0c87f26a Mon Sep 17 00:00:00 2001 From: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com> Date: Tue, 20 Feb 2024 17:02:40 +1000 Subject: [PATCH 22/22] Fix global styles tests --- .../test/use-global-styles-output.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js index 6b0a4ef2e0867..ebe472b047d51 100644 --- a/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js +++ b/packages/block-editor/src/components/global-styles/test/use-global-styles-output.js @@ -18,6 +18,9 @@ import { } from '../use-global-styles-output'; import { ROOT_BLOCK_SELECTOR } from '../utils'; +const BASE_STYLES = + 'body {margin: 0;}body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-constrained > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-constrained > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }body .is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }:where(body .is-layout-grid) { display:grid; }body .is-layout-grid > * { margin: 0; }'; + describe( 'global styles renderer', () => { describe( 'getNodesWithStyles', () => { it( 'should return the nodes with styles', () => { @@ -479,7 +482,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( tree, blockSelectors ) ).toEqual( - 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + BASE_STYLES + ':where(body) {background-color: red;margin: 10px;padding: 10px;}:where(a) {color: blue;}a:hover{color: orange;}a:focus{color: orange;}:where(h1) {font-size: 42px;}:where(.wp-block-group) {margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}:where(h1,h2,h3,h4,h5,h6) {color: orange;}:where(h1 a,h2 a,h3 a,h4 a,h5 a,h6 a) {color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}' + ':where(.wp-block-image img, .wp-block-image .wp-crop-area) {border-radius: 9999px;}:where(.wp-block-image) {color: red;}.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' + '.has-white-color{color: var(--wp--preset--color--white) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}h1.has-blue-color,h2.has-blue-color,h3.has-blue-color,h4.has-blue-color,h5.has-blue-color,h6.has-blue-color{color: var(--wp--preset--color--blue) !important;}h1.has-blue-background-color,h2.has-blue-background-color,h3.has-blue-background-color,h4.has-blue-background-color,h5.has-blue-background-color,h6.has-blue-background-color{background-color: var(--wp--preset--color--blue) !important;}h1.has-blue-border-color,h2.has-blue-border-color,h3.has-blue-border-color,h4.has-blue-border-color,h5.has-blue-border-color,h6.has-blue-border-color{border-color: var(--wp--preset--color--blue) !important;}' @@ -522,7 +525,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + BASE_STYLES + ':where(.wp-image-spacing) {padding-top: 1px;}:where(.wp-image-border-color) {border-color: red;}:where(.wp-image-border) {border-radius: 9999px;}:where(.wp-image) {color: red;}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); @@ -570,7 +573,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + BASE_STYLES + '.is-style-foo.wp-image.wp-image-spacing{padding-top: 2px;}.is-style-foo.wp-image.wp-image-border-color{border-color: blue;}.is-style-foo.wp-image{color: blue;}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); @@ -597,7 +600,7 @@ describe( 'global styles renderer', () => { }; expect( toStyles( Object.freeze( tree ), blockSelectors ) ).toEqual( - 'body {margin: 0;}:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-constrained > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-constrained > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))) { max-width: var(--wp--style--global--content-size); margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-constrained > .alignwide) { max-width: var(--wp--style--global--wide-size); }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }:where(body .is-layout-grid) { display:grid; }:where(body .is-layout-grid > *) { margin: 0; }' + + BASE_STYLES + '.wp-image img{filter: blur(5px);}' + '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' ); @@ -716,7 +719,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(.is-layout-flex) { gap: 0.5em; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' + ':where(.is-layout-flex) { gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' ); } ); @@ -733,7 +736,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 0.5em; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 0.5em; }body { --wp--style--block-gap: 0.5em; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' + ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 0.5em; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 0.5em; }body { --wp--style--block-gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' ); } ); @@ -750,7 +753,7 @@ describe( 'global styles renderer', () => { } ); expect( layoutStyles ).toEqual( - ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 12px; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 12px; }body { --wp--style--block-gap: 12px; }:where(body .is-layout-flow > .alignleft) { float: left; margin-inline-start: 0; margin-inline-end: 2em; }:where(body .is-layout-flow > .alignright) { float: right; margin-inline-start: 2em; margin-inline-end: 0; }:where(body .is-layout-flow > .aligncenter) { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }:where(body .is-layout-flex) { flex-wrap: wrap; align-items: center; }:where(body .is-layout-flex > *) { margin: 0; }' + ':where(body .is-layout-flow) > * { margin-block-start: 0; margin-block-end: 0; }:where(body .is-layout-flow) > * + * { margin-block-start: 12px; margin-block-end: 0; }:where(body .is-layout-flex) { gap: 12px; }body { --wp--style--block-gap: 12px; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }:where(body .is-layout-flex) { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }' ); } );