Changeset 58241
- Timestamp:
- 05/30/2024 01:14:15 AM (2 months ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/block-supports/layout.php
r58170 r58241 15 15 * 16 16 * @since 6.3.0 17 17 18 * @access private 18 19 * … … 52 53 'spacingStyles' => array( 53 54 array( 54 'selector' => ' > :first-child :first-child',55 'selector' => ' > :first-child', 55 56 'rules' => array( 56 57 'margin-block-start' => '0', … … 58 59 ), 59 60 array( 60 'selector' => ' > :last-child :last-child',61 'selector' => ' > :last-child', 61 62 'rules' => array( 62 63 'margin-block-end' => '0', … … 117 118 'spacingStyles' => array( 118 119 array( 119 'selector' => ' > :first-child :first-child',120 'selector' => ' > :first-child', 120 121 'rules' => array( 121 122 'margin-block-start' => '0', … … 123 124 ), 124 125 array( 125 'selector' => ' > :last-child :last-child',126 'selector' => ' > :last-child', 126 127 'rules' => array( 127 128 'margin-block-end' => '0', … … 151 152 ), 152 153 array( 153 'selector' => ' > *',154 'selector' => ' > 154 155 'rules' => array( 155 156 'margin' => '0', … … 173 174 'baseStyles' => array( 174 175 array( 175 'selector' => ' > *',176 'selector' => ' > 176 177 'rules' => array( 177 178 'margin' => '0', … … 223 224 * @since 6.1.0 Added `$block_spacing` param, use style engine to enqueue styles. 224 225 * @since 6.3.0 Added grid layout type. 226 225 227 * @access private 226 228 * … … 262 264 ), 263 265 array( 264 'selector' => "$selector $selector> * + *",266 'selector' => "$selector > * + *", 265 267 'declarations' => array( 266 268 'margin-block-start' => $gap_value, … … 371 373 ), 372 374 array( 373 'selector' => "$selector $selector> * + *",375 'selector' => "$selector > * + *", 374 376 'declarations' => array( 375 377 'margin-block-start' => $gap_value, … … 550 552 * @since 6.3.0 Adds compound class to layout wrapper for global spacing styles. 551 553 * @since 6.3.0 Check for layout support via the `layout` key with fallback to `__experimentalLayout`. 554 552 555 * @access private 553 556 * … … 796 799 797 800 $style = wp_get_layout_style( 798 ".$container_class .$container_class",801 ".$container_class", 799 802 $used_layout, 800 803 $has_block_gap_support, -
trunk/src/wp-includes/class-wp-theme-json.php
r58228 r58241 1261 1261 * 1262 1262 * @since 6.2.0 1263 1263 1264 * 1264 1265 * @param string $css The CSS to process. … … 1275 1276 if ( $is_root_css ) { 1276 1277 // If the part doesn't contain braces, it applies to the root level. 1277 $processed_css .= trim( $selector ) . '{' . trim( $part ) . '}';1278 $processed_css .= {' . trim( $part ) . '}'; 1278 1279 } else { 1279 1280 // If the part contains braces, it's a nested CSS rule. … … 1287 1288 ? static::scope_selector( $selector, $nested_selector ) 1288 1289 : static::append_to_selector( $selector, $nested_selector ); 1289 $ processed_css .= $part_selector . '{' . trim( $css_value ) . '}';1290 }1290 $; 1291 } 1291 1292 } 1292 1293 return $processed_css; … … 1409 1410 * @since 6.5.1 Only output rules referencing content and wide sizes when values exist. 1410 1411 * @since 6.5.3 Add types parameter to check if only base layout styles are needed. 1412 1411 1413 * 1412 1414 * @param array $block_metadata Metadata about the block to get styles for. … … 1435 1437 $node = _wp_array_get( $this->theme_json, $block_metadata['path'], array() ); 1436 1438 $layout_definitions = wp_get_layout_definitions(); 1437 $layout_selector_pattern = '/^[a-zA-Z0-9\-\.\ *+>:\(\)]*$/'; // Allow alphanumeric classnames, spaces, wildcard, sibling, child combinator and pseudo class selectors.1439 $layout_selector_pattern = '/^[a-zA-Z0-9\-\.\ *+>:\(\)]*$/'; // Allow alphanumeric classnames, spaces, wildcard, sibling, child combinator and pseudo class selectors. 1438 1440 1439 1441 /* … … 1510 1512 ); 1511 1513 } else { 1512 $format = static::ROOT_BLOCK_SELECTOR === $selector ? ' :where(%s .%s) %s' : '%s-%s%s';1514 $format = static::ROOT_BLOCK_SELECTOR === $selector ? 's'; 1513 1515 $layout_selector = sprintf( 1514 1516 $format, … … 1594 1596 1595 1597 $layout_selector = sprintf( 1596 '%s .%s%s', 1597 $selector, 1598 '.%s%s', 1598 1599 $class_name, 1599 1600 $base_style_rule['selector'] … … 2502 2503 * @since 6.1.0 2503 2504 * @since 6.6.0 Setting a min-height of HTML when root styles have a background gradient or image. 2505 2504 2506 * 2505 2507 * @param array $block_metadata Metadata about the block to get styles for. … … 2651 2653 2652 2654 // 2. Generate and append the rules that use the general selector. 2653 $block_rules .= static::to_ruleset( $selector, $declarations );2655 $block_rules .= static::to_ruleset( , $declarations ); 2654 2656 2655 2657 // 3. Generate and append the rules that use the duotone selector. … … 2668 2670 // 5. Generate and append the feature level rulesets. 2669 2671 foreach ( $feature_declarations as $feature_selector => $individual_feature_declarations ) { 2670 $block_rules .= static::to_ruleset( $feature_selector, $individual_feature_declarations );2672 $block_rules .= static::to_ruleset( , $individual_feature_declarations ); 2671 2673 } 2672 2674 2673 2675 // 6. Generate and append the style variation rulesets. 2674 2676 foreach ( $style_variation_declarations as $style_variation_selector => $individual_style_variation_declarations ) { 2675 $block_rules .= static::to_ruleset( $style_variation_selector, $individual_style_variation_declarations );2677 $block_rules .= static::to_ruleset( , $individual_style_variation_declarations ); 2676 2678 } 2677 2679 … … 2684 2686 * @since 6.1.0 2685 2687 * @since 6.6.0 Use `ROOT_CSS_PROPERTIES_SELECTOR` for CSS custom properties and improved consistency of root padding rules. 2688 2686 2689 * 2687 2690 * @param string $selector The root node selector. … … 2715 2718 * @link https://github.com/WordPress/gutenberg/issues/36147. 2716 2719 */ 2717 $css .= ' body{ margin: 0; }';2720 $css .= ' { margin: 0; }'; 2718 2721 2719 2722 if ( $use_root_padding ) { … … 2738 2741 $block_gap_value = static::get_property_value( $this->theme_json, array( 'styles', 'spacing', 'blockGap' ) ); 2739 2742 $css .= ":where(.wp-site-blocks) > * { margin-block-start: $block_gap_value; margin-block-end: 0; }"; 2740 $css .= ':where(.wp-site-blocks) > :first-child :first-child{ margin-block-start: 0; }';2741 $css .= ':where(.wp-site-blocks) > :last-child :last-child{ margin-block-end: 0; }';2743 $css .= ':where(.wp-site-blocks) > :first-child { margin-block-start: 0; }'; 2744 $css .= ':where(.wp-site-blocks) > :last-child { margin-block-end: 0; }'; 2742 2745 2743 2746 // For backwards compatibility, ensure the legacy block gap CSS variable is still available. -
trunk/tests/phpunit/tests/block-supports/wpGetLayoutStyle.php
r55201 r58241 19 19 * @dataProvider data_wp_get_layout_style 20 20 * @ticket 56467 21 21 22 * 22 23 * @param array $args Dataset to test. … … 73 74 'gap_value' => '1em', 74 75 ), 75 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout .wp-layout> * + *{margin-block-start:1em;margin-block-end:0;}',76 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', 76 77 ), 77 78 'skip serialization should return empty value' => array( … … 90 91 'gap_value' => array( 'top' => '1em' ), 91 92 ), 92 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout .wp-layout> * + *{margin-block-start:1em;margin-block-end:0;}',93 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:1em;margin-block-end:0;}', 93 94 ), 94 95 'constrained layout with sizes' => array( … … 129 130 'gap_value' => '2.5rem', 130 131 ), 131 '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;}',132 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', 132 133 ), 133 134 'constrained layout with axial block gap support' => array( … … 140 141 'gap_value' => array( 'top' => '2.5rem' ), 141 142 ), 142 '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;}',143 'expected_output' => '.wp-layout > *{margin-block-start:0;margin-block-end:0;}.wp-layout > * + *{margin-block-start:2.5rem;margin-block-end:0;}', 143 144 ), 144 145 'constrained layout with block gap support and spacing preset' => array( … … 151 152 'gap_value' => 'var:preset|spacing|50', 152 153 ), 153 '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;}',154 '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;}', 154 155 ), 155 156 'flex layout with no args should return empty value' => array( … … 249 250 'expected_output' => '.wp-layout{flex-wrap:nowrap;flex-direction:column;align-items:flex-start;justify-content:flex-end;}', 250 251 ), 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 251 271 'default layout with blockGap to verify converting gap value into valid CSS' => array( 252 272 'args' => array( … … 261 281 ), 262 282 ), 263 '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;}',283 '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;}', 264 284 ), 265 285 ); -
trunk/tests/phpunit/tests/theme/wpAddGlobalStylesForBlocks.php
r56682 r58241 38 38 /** 39 39 * @ticket 56915 40 40 41 */ 41 42 public function test_third_party_blocks_inline_styles_not_register_to_global_styles() { … … 46 47 47 48 $this->assertNotContains( 48 ' .wp-block-my-third-party-block{background-color: hotpink;}',49 '{background-color: hotpink;}', 49 50 $this->get_global_styles() 50 51 ); … … 53 54 /** 54 55 * @ticket 56915 56 55 57 */ 56 58 public function test_third_party_blocks_inline_styles_get_registered_to_global_styles() { … … 60 62 61 63 $this->assertNotContains( 62 ' .wp-block-my-third-party-block{background-color: hotpink;}',64 '{background-color: hotpink;}', 63 65 $this->get_global_styles(), 64 66 'Third party block inline style should not be registered before running wp_add_global_styles_for_blocks()' … … 68 70 69 71 $this->assertContains( 70 ' .wp-block-my-third-party-block{background-color: hotpink;}',72 '{background-color: hotpink;}', 71 73 $this->get_global_styles(), 72 74 'Third party block inline style should be registered after running wp_add_global_styles_for_blocks()' … … 76 78 /** 77 79 * @ticket 56915 80 78 81 */ 79 82 public function test_third_party_blocks_inline_styles_get_registered_to_global_styles_when_per_block() { … … 84 87 85 88 $this->assertNotContains( 86 ' .wp-block-my-third-party-block{background-color: hotpink;}',89 '{background-color: hotpink;}', 87 90 $this->get_global_styles(), 88 91 'Third party block inline style should not be registered before running wp_add_global_styles_for_blocks()' … … 92 95 93 96 $this->assertContains( 94 ' .wp-block-my-third-party-block{background-color: hotpink;}',97 '{background-color: hotpink;}', 95 98 $this->get_global_styles(), 96 99 'Third party block inline style should be registered after running wp_add_global_styles_for_blocks()' … … 100 103 /** 101 104 * @ticket 56915 105 102 106 */ 103 107 public function test_third_party_blocks_inline_styles_get_rendered_when_per_block() { … … 112 116 113 117 $this->assertStringContainsString( 114 ' .wp-block-my-third-party-block{background-color: hotpink;}',118 '{background-color: hotpink;}', 115 119 $actual, 116 120 'Third party block inline style should render' … … 125 129 /** 126 130 * @ticket 56915 131 127 132 */ 128 133 public function test_blocks_inline_styles_get_rendered() { … … 134 139 135 140 $this->assertStringContainsString( 136 ' .wp-block-my-third-party-block{background-color: hotpink;}',141 '{background-color: hotpink;}', 137 142 $actual, 138 143 'Third party block inline style should render' … … 147 152 /** 148 153 * @ticket 57868 154 149 155 */ 150 156 public function test_third_party_blocks_inline_styles_for_elements_get_rendered_when_per_block() { … … 159 165 160 166 $this->assertStringContainsString( 161 ' .wp-block-my-third-party-block cite{color: white;}',167 '{color: white;}', 162 168 $actual 163 169 ); … … 166 172 /** 167 173 * @ticket 57868 174 168 175 */ 169 176 public function test_third_party_blocks_inline_styles_for_elements_get_rendered() { … … 175 182 176 183 $this->assertStringContainsString( 177 ' .wp-block-my-third-party-block cite{color: white;}',184 '{color: white;}', 178 185 $actual 179 186 ); -
trunk/tests/phpunit/tests/theme/wpThemeJson.php
r58226 r58241 395 395 * @ticket 60365 396 396 * @ticket 60936 397 397 398 */ 398 399 public function test_get_stylesheet() { … … 560 561 561 562 $variables = ':root{--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;}'; 562 $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)){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;}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);}';563 $styles = '{filter: var(--wp--preset--duotone--custom-duotone);}'; 563 564 $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;}'; 564 565 $all = $variables . $styles . $presets; … … 574 575 * @ticket 58550 575 576 * @ticket 60936 577 576 578 */ 577 579 public function test_get_stylesheet_support_for_shorthand_and_longhand_values() { … … 611 613 ); 612 614 613 $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)){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;}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;}';615 $styles = '{border-top-left-radius: 10px;border-bottom-right-radius: 1em;}'; 614 616 $this->assertSame( $styles, $theme_json->get_stylesheet() ); 615 617 $this->assertSame( $styles, $theme_json->get_stylesheet( array( 'styles' ) ) ); … … 620 622 * @ticket 58550 621 623 * @ticket 60936 624 622 625 */ 623 626 public function test_get_stylesheet_skips_disabled_protected_properties() { … … 645 648 ); 646 649 647 $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)){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;}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;}';650 $expected = '{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}'; 648 651 $this->assertSame( $expected, $theme_json->get_stylesheet() ); 649 652 $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); … … 655 658 * @ticket 58550 656 659 * @ticket 60936 660 657 661 */ 658 662 public function test_get_stylesheet_renders_enabled_protected_properties() { … … 673 677 ); 674 678 675 $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; }:root { --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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';679 $expected = '{margin: 0;}'; 676 680 $this->assertSame( $expected, $theme_json->get_stylesheet() ); 677 681 $this->assertSame( $expected, $theme_json->get_stylesheet( array( 'styles' ) ) ); … … 714 718 * @ticket 58550 715 719 * @ticket 60936 720 716 721 */ 717 722 public function test_get_stylesheet_preset_rules_come_after_block_rules() { … … 745 750 ); 746 751 747 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-group{color: red;}';752 $styles = '{color: red;}'; 748 753 $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;}'; 749 754 $variables = '.wp-block-group{--wp--preset--color--grey: grey;}'; … … 807 812 * @ticket 58550 808 813 * @ticket 60936 814 809 815 */ 810 816 public function test_get_stylesheet_preset_values_are_marked_as_important() { … … 841 847 842 848 $this->assertSame( 843 ':root{--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)){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;}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;}',849 ':root{--wp--preset--color--grey: grey;}{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;}', 844 850 $theme_json->get_stylesheet() 845 851 ); … … 850 856 * @ticket 58550 851 857 * @ticket 60936 858 852 859 */ 853 860 public function test_get_stylesheet_handles_whitelisted_element_pseudo_selectors() { … … 884 891 ); 885 892 886 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';887 888 $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;}';893 $base_styles = '{margin: 0;}'; 894 895 $element_styles = '{background-color: black;color: yellow;}'; 889 896 890 897 $expected = $base_styles . $element_styles; … … 898 905 * @ticket 58550 899 906 * @ticket 60936 907 900 908 */ 901 909 public function test_get_stylesheet_handles_only_pseudo_selector_rules_for_given_property() { … … 928 936 ); 929 937 930 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';931 932 $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;}';938 $base_styles = '{margin: 0;}'; 939 940 $element_styles = '{background-color: black;color: yellow;}'; 933 941 934 942 $expected = $base_styles . $element_styles; … … 942 950 * @ticket 58550 943 951 * @ticket 60936 952 944 953 */ 945 954 public function test_get_stylesheet_ignores_pseudo_selectors_on_non_whitelisted_elements() { … … 972 981 ); 973 982 974 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';975 976 $element_styles = ' h4{background-color: red;color: green;}';983 $base_styles = '{margin: 0;}'; 984 985 $element_styles = '{background-color: red;color: green;}'; 977 986 978 987 $expected = $base_styles . $element_styles; … … 986 995 * @ticket 58550 987 996 * @ticket 60936 997 988 998 */ 989 999 public function test_get_stylesheet_ignores_non_whitelisted_pseudo_selectors() { … … 1016 1026 ); 1017 1027 1018 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';1019 1020 $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;}';1028 $base_styles = '{margin: 0;}'; 1029 1030 $element_styles = '{background-color: green;color: red;}'; 1021 1031 1022 1032 $expected = $base_styles . $element_styles; … … 1031 1041 * @ticket 58550 1032 1042 * @ticket 60936 1043 1033 1044 */ 1034 1045 public function test_get_stylesheet_handles_priority_of_elements_vs_block_elements_pseudo_selectors() { … … 1069 1080 ); 1070 1081 1071 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';1072 1073 $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;}';1082 $base_styles = '{margin: 0;}'; 1083 1084 $element_styles = '{background-color: black;color: yellow;}'; 1074 1085 1075 1086 $expected = $base_styles . $element_styles; … … 1083 1094 * @ticket 58550 1084 1095 * @ticket 60936 1096 1085 1097 */ 1086 1098 public function test_get_stylesheet_handles_whitelisted_block_level_element_pseudo_selectors() { … … 1121 1133 ); 1122 1134 1123 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';1124 1125 $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;}';1135 $base_styles = '{margin: 0;}'; 1136 1137 $element_styles = '{background-color: black;color: yellow;}'; 1126 1138 1127 1139 $expected = $base_styles . $element_styles; … … 1136 1148 * @ticket 58550 1137 1149 * @ticket 60936 1150 1138 1151 */ 1139 1152 public function test_get_stylesheet_generates_layout_styles() { … … 1161 1174 // Results also include root site blocks styles. 1162 1175 $this->assertSame( 1163 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; } 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; }:root { --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;}',1176 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; }{margin: 0;}', 1164 1177 $theme_json->get_stylesheet( array( 'styles' ) ) 1165 1178 ); … … 1171 1184 * @ticket 58550 1172 1185 * @ticket 60936 1186 1173 1187 */ 1174 1188 public function test_get_stylesheet_generates_layout_styles_with_spacing_presets() { … … 1196 1210 // Results also include root site blocks styles. 1197 1211 $this->assertSame( 1198 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; } 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; }:root { --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;}',1212 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; }{margin: 0;}', 1199 1213 $theme_json->get_stylesheet( array( 'styles' ) ) 1200 1214 ); … … 1205 1219 * @ticket 58550 1206 1220 * @ticket 60936 1221 1207 1222 */ 1208 1223 public function test_get_stylesheet_generates_fallback_gap_layout_styles() { … … 1231 1246 // Results also include root site blocks styles. 1232 1247 $this->assertSame( 1233 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; } 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;}',1248 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; }{margin: 0;}', 1234 1249 $stylesheet 1235 1250 ); … … 1241 1256 * @ticket 60936 1242 1257 * @ticket 60981 1258 1243 1259 */ 1244 1260 public function test_get_stylesheet_generates_base_fallback_gap_layout_styles() { … … 1262 1278 // Note the `base-layout-styles` includes a fallback gap for the Columns block for backwards compatibility. 1263 1279 $this->assertSame( 1264 ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}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;}',1280 ':where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}{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;}', 1265 1281 $stylesheet 1266 1282 ); … … 1298 1314 * @ticket 58550 1299 1315 * @ticket 60936 1316 1300 1317 */ 1301 1318 public function test_get_stylesheet_generates_valid_block_gap_values_and_skips_null_or_false_values() { … … 1344 1361 1345 1362 $this->assertSame( 1346 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; } 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; }:root { --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;}',1363 ':root { --wp--style--global--content-size: 640px;--wp--style--global--wide-size: 1200px; }{gap: 0;}', 1347 1364 $theme_json->get_stylesheet() 1348 1365 ); … … 1353 1370 * @ticket 58550 1354 1371 * @ticket 60936 1372 1355 1373 */ 1356 1374 public function test_get_stylesheet_returns_outline_styles() { … … 1381 1399 ); 1382 1400 1383 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';1384 1385 $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;}';1401 $base_styles = '{margin: 0;}'; 1402 1403 $element_styles = '{outline-color: blue;outline-offset: 3px;outline-style: solid;outline-width: 3px;}'; 1386 1404 1387 1405 $expected = $base_styles . $element_styles; … … 1393 1411 * 1394 1412 * @ticket 60343 1413 1395 1414 */ 1396 1415 public function test_get_stylesheet_custom_root_selector() { … … 1413 1432 // `body { margin: 0; }`. 1414 1433 $this->assertSame( 1415 ' 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;}',1434 '{color: teal;}', 1416 1435 $actual 1417 1436 ); … … 1422 1441 * 1423 1442 * @ticket 61118 1443 1424 1444 */ 1425 1445 public function test_get_stylesheet_generates_fluid_typography_values() { … … 1477 1497 // Results also include root site blocks styles. 1478 1498 $this->assertSame( 1479 ':root{--wp--preset--font-size--pickles: clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.156), 16px);--wp--preset--font-size--toast: clamp(14.642px, 0.915rem + ((1vw - 3.2px) * 0.575), 22px);} 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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}body{font-size: clamp(0.875em, 0.875rem + ((1vw - 0.2em) * 0.156), 1em);}h1{font-size: clamp(50.171px, 3.136rem + ((1vw - 3.2px) * 3.893), 100px);}.wp-block-test-clamp-me{font-size: clamp(27.894px, 1.743rem + ((1vw - 3.2px) * 1.571), 48px);}.has-pickles-font-size{font-size: var(--wp--preset--font-size--pickles) !important;}.has-toast-font-size{font-size: var(--wp--preset--font-size--toast) !important;}',1499 ':root{--wp--preset--font-size--pickles: clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.156), 16px);--wp--preset--font-size--toast: clamp(14.642px, 0.915rem + ((1vw - 3.2px) * 0.575), 22px);}{font-size: clamp(27.894px, 1.743rem + ((1vw - 3.2px) * 1.571), 48px);}.has-pickles-font-size{font-size: var(--wp--preset--font-size--pickles) !important;}.has-toast-font-size{font-size: var(--wp--preset--font-size--toast) !important;}', 1480 1500 $theme_json->get_stylesheet() 1481 1501 ); … … 3615 3635 * @ticket 58550 3616 3636 * @ticket 60936 3637 3617 3638 */ 3618 3639 public function test_get_property_value_valid() { … … 3637 3658 ); 3638 3659 3639 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';3640 $color_styles = ' body{background-color: #ffffff;color: #000000;}.wp-element-button, .wp-block-button__link{background-color: #000000;color: #ffffff;}';3660 $base_styles = '{margin: 0;}'; 3661 $color_styles = '{background-color: #000000;color: #ffffff;}'; 3641 3662 $expected = $base_styles . $color_styles; 3642 3663 $this->assertSame( $expected, $theme_json->get_stylesheet() ); … … 3698 3719 * @ticket 58550 3699 3720 * @ticket 60936 3721 3700 3722 * @expectedIncorrectUsage get_property_value 3701 3723 */ … … 3721 3743 ); 3722 3744 3723 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';3724 $color_styles = ' body{background-color: #ffffff;}.wp-element-button, .wp-block-button__link{color: #ffffff;}';3745 $base_styles = '{margin: 0;}'; 3746 $color_styles = '{color: #ffffff;}'; 3725 3747 $expected = $base_styles . $color_styles; 3726 3748 $this->assertSame( $expected, $theme_json->get_stylesheet() ); … … 3735 3757 * @ticket 58550 3736 3758 * @ticket 60936 3759 3737 3760 * @expectedIncorrectUsage get_property_value 3738 3761 */ … … 3758 3781 ); 3759 3782 3760 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';3761 $color_styles = ' body{background-color: #ffffff;color: #ffffff;}.wp-element-button, .wp-block-button__link{color: #ffffff;}';3783 $base_styles = '{margin: 0;}'; 3784 $color_styles = '{color: #ffffff;}'; 3762 3785 $expected = $base_styles . $color_styles; 3763 3786 $this->assertSame( $expected, $theme_json->get_stylesheet() ); … … 3771 3794 * @ticket 58550 3772 3795 * @ticket 60936 3796 3773 3797 * @expectedIncorrectUsage get_property_value 3774 3798 */ … … 3786 3810 ); 3787 3811 3788 $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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';3789 $color_styles = ' body{background-color: #ffffff;}';3812 $base_styles = '{margin: 0;}'; 3813 $color_styles = '{background-color: #ffffff;}'; 3790 3814 $expected = $base_styles . $color_styles; 3791 3815 $this->assertSame( $expected, $theme_json->get_stylesheet() ); … … 3797 3821 * @ticket 60936 3798 3822 * @ticket 61304 3823 3799 3824 */ 3800 3825 public function test_get_styles_for_block_with_padding_aware_alignments() { … … 3823 3848 ); 3824 3849 3825 $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 > .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, .alignwide)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(.has-global-padding:not(.wp-block-block, .alignfull, .alignwide)) > .alignfull { margin-left: 0; margin-right: 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)){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;}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;}';3850 $expected = '{--wp--style--root--padding-top: 10px;--wp--style--root--padding-right: 12px;--wp--style--root--padding-bottom: 10px;--wp--style--root--padding-left: 12px;}'; 3826 3851 $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON::ROOT_BLOCK_SELECTOR, $metadata ); 3827 3852 $style_rules = $theme_json->get_styles_for_block( $metadata ); … … 3833 3858 * @ticket 58550 3834 3859 * @ticket 60936 3860 3835 3861 */ 3836 3862 public function test_get_styles_for_block_without_padding_aware_alignments() { … … 3856 3882 ); 3857 3883 3858 $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)){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;}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;}';3884 $expected = '{padding-top: 10px;padding-right: 12px;padding-bottom: 10px;padding-left: 12px;}'; 3859 3885 $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON::ROOT_BLOCK_SELECTOR, $metadata ); 3860 3886 $style_rules = $theme_json->get_styles_for_block( $metadata ); … … 3865 3891 * @ticket 56467 3866 3892 * @ticket 58550 3893 3867 3894 */ 3868 3895 public function test_get_styles_for_block_with_content_width() { … … 3884 3911 ); 3885 3912 3886 $expected = ':root { --wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; } 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;}';3913 $expected = ':root { --wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1000px; }{margin: 0;}'; 3887 3914 $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON::ROOT_BLOCK_SELECTOR, $metadata ); 3888 3915 $style_rules = $theme_json->get_styles_for_block( $metadata ); … … 3895 3922 * @ticket 58550 3896 3923 * @ticket 60936 3924 3897 3925 */ 3898 3926 public function test_get_styles_with_appearance_tools() { … … 3911 3939 ); 3912 3940 3913 $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; }:root { --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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';3941 $expected = '{margin: 0;}'; 3914 3942 $root_rules = $theme_json->get_root_layout_rules( WP_Theme_JSON::ROOT_BLOCK_SELECTOR, $metadata ); 3915 3943 $this->assertSame( $expected, $root_rules ); … … 4276 4304 /** 4277 4305 * @ticket 57583 4306 4278 4307 * 4279 4308 * @dataProvider data_get_styles_for_block_with_style_variations … … 4314 4343 'metadata' => array( 4315 4344 'path' => array( 'styles', 'blocks', 'core/quote', 'variations', 'plain' ), 4316 'selector' => '.is-style-plain. is-style-plain.wp-block-quote',4317 ), 4318 'styles' => ' .is-style-plain.is-style-plain.wp-block-quote{background-color: hotpink;}',4345 'selector' => '.is-style-plain.wp-block-quote', 4346 ), 4347 'styles' => '{background-color: hotpink;}', 4319 4348 ); 4320 4349 … … 4826 4855 * @ticket 58550 4827 4856 * @ticket 60936 4857 4828 4858 * 4829 4859 * @dataProvider data_update_separator_declarations … … 4865 4895 ), 4866 4896 ), 4867 '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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;color: blue;}',4897 'expected_output' => '{background-color: blue;color: blue;}', 4868 4898 ), 4869 4899 // If background and text are defined, do not include border-color, as text color is enough. … … 4875 4905 ), 4876 4906 ), 4877 '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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;color: red;}',4907 'expected_output' => '{background-color: blue;color: red;}', 4878 4908 ), 4879 4909 // If only text is defined, do not include border-color, as by itself is enough. … … 4884 4914 ), 4885 4915 ), 4886 '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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{color: red;}',4916 'expected_output' => '{color: red;}', 4887 4917 ), 4888 4918 // If background, text, and border-color are defined, include everything, CSS specificity will decide which to apply. … … 4897 4927 ), 4898 4928 ), 4899 '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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;border-color: pink;color: red;}',4929 'expected_output' => '{background-color: blue;border-color: pink;color: red;}', 4900 4930 ), 4901 4931 // If background and border color are defined, include everything, CSS specificity will decide which to apply. … … 4909 4939 ), 4910 4940 ), 4911 '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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}.wp-block-separator{background-color: blue;border-color: pink;}',4941 'expected_output' => '{background-color: blue;border-color: pink;}', 4912 4942 ), 4913 4943 ); … … 4947 4977 * @ticket 58550 4948 4978 * @ticket 60936 4979 4949 4980 */ 4950 4981 public function test_get_shadow_styles_for_blocks() { … … 4980 5011 ); 4981 5012 4982 $global_styles = ':root{--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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}';4983 $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);}';5013 $global_styles = ':root{--wp--preset--shadow--natural: 5px 5px 0 0 black;}{margin: 0;}'; 5014 $element_styles = '{box-shadow: var(--wp--preset--shadow--natural);}'; 4984 5015 $expected_styles = $global_styles . $element_styles; 4985 5016 $this->assertSame( $expected_styles, $theme_json->get_stylesheet() ); … … 4990 5021 * 4991 5022 * @ticket 61123 5023 4992 5024 */ 4993 5025 public function test_get_top_level_background_image_styles() { … … 5032 5064 ); 5033 5065 5034 $expected_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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}html{min-height: calc(100% - var(--wp-admin--admin-bar--height, 0px));}body{background-image: url('http://example.org/image.png');background-position: center center;background-repeat: no-repeat;background-size: contain;}";5066 $expected_styles = "{background-image: url('http://example.org/image.png');background-position: center center;background-repeat: no-repeat;background-size: contain;}"; 5035 5067 $this->assertSame( $expected_styles, $theme_json->get_stylesheet(), 'Styles returned from "::get_stylesheet()" with top-level background styles type does not match expectations' ); 5036 5068 … … 5049 5081 ); 5050 5082 5051 $expected_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)){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;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}html{min-height: calc(100% - var(--wp-admin--admin-bar--height, 0px));}body{background-image: url('http://example.org/image.png');background-position: center center;background-repeat: no-repeat;background-size: contain;}";5083 $expected_styles = "{background-image: url('http://example.org/image.png');background-position: center center;background-repeat: no-repeat;background-size: contain;}"; 5052 5084 $this->assertSame( $expected_styles, $theme_json->get_stylesheet(), 'Styles returned from "::get_stylesheet()" with top-level background image as string type does not match expectations' ); 5053 5085 } … … 5055 5087 /** 5056 5088 * @ticket 57536 5089 5057 5090 */ 5058 5091 public function test_get_custom_css_handles_global_custom_css() { … … 5071 5104 ); 5072 5105 5073 $custom_css = 'body {color:purple;} p{color:red;}';5106 $custom_css = 'body {color:purple;}{color:red;}'; 5074 5107 $this->assertSame( $custom_css, $theme_json->get_custom_css() ); 5075 5108 } … … 5149 5182 5150 5183 /** 5184 5185 5151 5186 * @dataProvider data_process_blocks_custom_css 5152 5187 * … … 5180 5215 'css' => 'color: red; margin: auto;', 5181 5216 ), 5182 'expected' => ' .foo{color: red; margin: auto;}',5217 'expected' => '{color: red; margin: auto;}', 5183 5218 ), 5184 5219 // CSS with nested selectors. … … 5188 5223 'css' => 'color: red; margin: auto; &.one{color: blue;} & .two{color: green;}', 5189 5224 ), 5190 'expected' => ' .foo{color: red; margin: auto;}.foo.one{color: blue;}.foo .two{color: green;}',5225 'expected' => '{color: green;}', 5191 5226 ), 5192 5227 // CSS with pseudo elements. … … 5196 5231 'css' => 'color: red; margin: auto; &::before{color: blue;} & ::before{color: green;} &.one::before{color: yellow;} & .two::before{color: purple;}', 5197 5232 ), 5198 'expected' => ' .foo{color: red; margin: auto;}.foo::before{color: blue;}.foo ::before{color: green;}.foo.one::before{color: yellow;}.foo .two::before{color: purple;}',5233 'expected' => '{color: purple;}', 5199 5234 ), 5200 5235 // CSS with multiple root selectors. … … 5204 5239 'css' => 'color: red; margin: auto; &.one{color: blue;} & .two{color: green;} &::before{color: yellow;} & ::before{color: purple;} &.three::before{color: orange;} & .four::before{color: skyblue;}', 5205 5240 ), 5206 'expected' => ' .foo, .bar{color: red; margin: auto;}.foo.one, .bar.one{color: blue;}.foo .two, .bar .two{color: green;}.foo::before, .bar::before{color: yellow;}.foo ::before, .bar ::before{color: purple;}.foo.three::before, .bar.three::before{color: orange;}.foo .four::before, .bar .four::before{color: skyblue;}',5241 'expected' => '{color: skyblue;}', 5207 5242 ), 5208 5243 );
Note: See TracChangeset
for help on using the changeset viewer.