Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSS transformation: Fix mangled selectors by switching to a different postcss plugin for prefixing #63972

Closed
wants to merge 12 commits into from

Conversation

talldan
Copy link
Contributor

@talldan talldan commented Jul 26, 2024

Fixes #63829

What?

Tries switching from postcss-prefixwrap to postcss-prefix-selector for transforming styles

Why?

postcss-prefixwrap is currently mangling compound :where selectors - Non-iframed Editor: Compound selectors within :where are not prefixed correctly

I've reported it upstream in dbtedman/postcss-prefixwrap#515 and can try making a PR on the repo if one hasn't by the time I get to it.

The issue still needs to be fixed in Gutenberg and core, so this PR should do that.

How?

Switches from postcss-prefixwrap to postcss-prefix-selector. Why does this make a difference?

I had a look at the codebases for the two. postcss-prefixwrap seems to take the whole selector string, and then call the string split( ',' ) method to handle compound selectors:
https://github.com/dbtedman/postcss-prefixwrap/blob/c2636cdaa8381741df1b2b553d15a82d1e674802/src/internal/domain/CSSRuleWrapper.ts#L20-L46

This results in the selector being split incorrectly and prefixing within a where selector.

postcss-prefix-selector on the other hand seems to use the selectors property provided by the AST which I'd expect to be a lot more advanced in how it splits a selector (it should align pretty closely with the CSS spec):
https://github.com/RadValentin/postcss-prefix-selector/blob/86cb9b9dd50caef6e075ac88f9d716975c68a597/index.js#L38

There are a couple of features not offered by the new dependency:

  • Automattic replacing of 'root' selectors rather than prefixing (html, :root, body)
  • Avoiding duplicated selectors

It does have a transform callback that I've used to implement these features so that there's parity with trunk.

Testing Instructions

  1. Activate TT4 (which has button styles) and navigate to the post editor
  2. Ensure the editor is not iframed. This can be done by enabling the Custom Fields preference via the top right menu More > Preferences > Custom Fields, then reloading the editor.
  3. Edit a post and add some buttons, then save
  4. Inspect the buttons and find the matched style with the following selector:
    .editor-styles-wrapper :where(.wp-element-button, .editor-styles-wrapper .wp-block-button__link)
  5. Note the injection of the second .editor-styles-wrapper within that

Screenshots or screencast

@talldan talldan added [Type] Bug An existing feature does not function as intended Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json labels Jul 26, 2024
@talldan talldan self-assigned this Jul 26, 2024
@talldan talldan changed the title WIP CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector Jul 26, 2024
Copy link

github-actions bot commented Jul 26, 2024

Size Change: -943 B (-0.05%)

Total Size: 1.76 MB

Filename Size Change
build/block-editor/index.min.js 254 kB -943 B (-0.37%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 951 B
build/annotations/index.min.js 2.26 kB
build/api-fetch/index.min.js 2.31 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.29 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/content-rtl.css 4.56 kB
build/block-editor/content.css 4.56 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/style-rtl.css 16.3 kB
build/block-editor/style.css 16.3 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 310 B
build/block-library/blocks/button/editor.css 310 B
build/block-library/blocks/button/style-rtl.css 538 B
build/block-library/blocks/button/style.css 538 B
build/block-library/blocks/buttons/editor-rtl.css 336 B
build/block-library/blocks/buttons/editor.css 336 B
build/block-library/blocks/buttons/style-rtl.css 328 B
build/block-library/blocks/buttons/style.css 328 B
build/block-library/blocks/calendar/style-rtl.css 240 B
build/block-library/blocks/calendar/style.css 240 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-content/style-rtl.css 90 B
build/block-library/blocks/comment-content/style.css 90 B
build/block-library/blocks/comment-template/style-rtl.css 200 B
build/block-library/blocks/comment-template/style.css 199 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 221 B
build/block-library/blocks/comments-pagination/editor.css 211 B
build/block-library/blocks/comments-pagination/style-rtl.css 234 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 832 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 631 B
build/block-library/blocks/cover/editor-rtl.css 668 B
build/block-library/blocks/cover/editor.css 669 B
build/block-library/blocks/cover/style-rtl.css 1.62 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 314 B
build/block-library/blocks/embed/editor.css 314 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 279 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 342 B
build/block-library/blocks/form-input/style.css 342 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 470 B
build/block-library/blocks/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
build/block-library/blocks/gallery/editor-rtl.css 955 B
build/block-library/blocks/gallery/editor.css 958 B
build/block-library/blocks/gallery/style-rtl.css 1.71 kB
build/block-library/blocks/gallery/style.css 1.71 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 344 B
build/block-library/blocks/group/editor.css 344 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 346 B
build/block-library/blocks/html/editor.css 347 B
build/block-library/blocks/image/editor-rtl.css 894 B
build/block-library/blocks/image/editor.css 892 B
build/block-library/blocks/image/style-rtl.css 1.59 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 1.65 kB
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 186 B
build/block-library/blocks/latest-posts/editor.css 183 B
build/block-library/blocks/latest-posts/style-rtl.css 509 B
build/block-library/blocks/latest-posts/style.css 510 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 304 B
build/block-library/blocks/media-text/editor.css 303 B
build/block-library/blocks/media-text/style-rtl.css 516 B
build/block-library/blocks/media-text/style.css 515 B
build/block-library/blocks/more/editor-rtl.css 427 B
build/block-library/blocks/more/editor.css 427 B
build/block-library/blocks/navigation-link/editor-rtl.css 663 B
build/block-library/blocks/navigation-link/editor.css 664 B
build/block-library/blocks/navigation-link/style-rtl.css 192 B
build/block-library/blocks/navigation-link/style.css 191 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.18 kB
build/block-library/blocks/navigation/editor.css 2.19 kB
build/block-library/blocks/navigation/style-rtl.css 2.25 kB
build/block-library/blocks/navigation/style.css 2.23 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 378 B
build/block-library/blocks/page-list/editor.css 378 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 236 B
build/block-library/blocks/paragraph/editor.css 236 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 527 B
build/block-library/blocks/post-comments-form/style.css 528 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 729 B
build/block-library/blocks/post-featured-image/editor.css 726 B
build/block-library/blocks/post-featured-image/style-rtl.css 341 B
build/block-library/blocks/post-featured-image/style.css 341 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 399 B
build/block-library/blocks/post-template/style.css 398 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 134 B
build/block-library/blocks/pullquote/editor.css 134 B
build/block-library/blocks/pullquote/style-rtl.css 342 B
build/block-library/blocks/pullquote/style.css 342 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 220 B
build/block-library/blocks/query-pagination/editor.css 208 B
build/block-library/blocks/query-pagination/style-rtl.css 287 B
build/block-library/blocks/query-pagination/style.css 283 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 452 B
build/block-library/blocks/query/editor.css 451 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 221 B
build/block-library/blocks/quote/theme.css 225 B
build/block-library/blocks/read-more/style-rtl.css 138 B
build/block-library/blocks/read-more/style.css 138 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 288 B
build/block-library/blocks/rss/style.css 287 B
build/block-library/blocks/search/editor-rtl.css 193 B
build/block-library/blocks/search/editor.css 193 B
build/block-library/blocks/search/style-rtl.css 672 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/search/view.min.js 475 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 806 B
build/block-library/blocks/site-logo/editor.css 803 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/editor-rtl.css 123 B
build/block-library/blocks/site-title/editor.css 123 B
build/block-library/blocks/site-title/style-rtl.css 90 B
build/block-library/blocks/site-title/style.css 90 B
build/block-library/blocks/social-link/editor-rtl.css 338 B
build/block-library/blocks/social-link/editor.css 338 B
build/block-library/blocks/social-links/editor-rtl.css 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 63 B
build/block-library/blocks/tag-cloud/editor.css 63 B
build/block-library/blocks/tag-cloud/style-rtl.css 266 B
build/block-library/blocks/tag-cloud/style.css 265 B
build/block-library/blocks/template-part/editor-rtl.css 393 B
build/block-library/blocks/template-part/editor.css 393 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 541 B
build/block-library/blocks/video/editor.css 542 B
build/block-library/blocks/video/style-rtl.css 192 B
build/block-library/blocks/video/style.css 192 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.9 kB
build/block-library/editor.css 11.9 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 217 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.7 kB
build/block-library/style.css 14.7 kB
build/block-library/theme-rtl.css 702 B
build/block-library/theme.css 707 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.3 kB
build/commands/index.min.js 16.1 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/components/index.min.js 222 kB
build/components/style-rtl.css 12.1 kB
build/components/style.css 12.1 kB
build/compose/index.min.js 12.9 kB
build/core-commands/index.min.js 2.81 kB
build/core-data/index.min.js 73.1 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.35 kB
build/customize-widgets/style.css 1.35 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.98 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 580 B
build/edit-post/index.min.js 12.6 kB
build/edit-post/style-rtl.css 2.31 kB
build/edit-post/style.css 2.31 kB
build/edit-site/index.min.js 214 kB
build/edit-site/posts-rtl.css 6.81 kB
build/edit-site/posts.css 6.82 kB
build/edit-site/style-rtl.css 12 kB
build/edit-site/style.css 12 kB
build/edit-widgets/index.min.js 17.6 kB
build/edit-widgets/style-rtl.css 4.2 kB
build/edit-widgets/style.css 4.2 kB
build/editor/index.min.js 99.7 kB
build/editor/style-rtl.css 9.32 kB
build/editor/style.css 9.32 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.07 kB
build/format-library/style-rtl.css 477 B
build/format-library/style.css 477 B
build/hooks/index.min.js 1.54 kB
build/html-entities/index.min.js 445 B
build/i18n/index.min.js 3.58 kB
build/interactivity/debug.min.js 16.5 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.78 kB
build/interactivity/index.min.js 13.4 kB
build/interactivity/navigation.min.js 1.16 kB
build/interactivity/query.min.js 742 B
build/interactivity/router.min.js 2.8 kB
build/interactivity/search.min.js 615 B
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.31 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.16 kB
build/list-reusable-blocks/style-rtl.css 846 B
build/list-reusable-blocks/style.css 846 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.3 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.59 kB
build/nux/style-rtl.css 749 B
build/nux/style.css 745 B
build/patterns/index.min.js 7.36 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 554 B
build/preferences/style.css 554 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 1.01 kB
build/react-i18n/index.min.js 630 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.54 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.96 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.03 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.85 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 560 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.19 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

@talldan talldan changed the title CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector, fix layout rule specificity Jul 26, 2024
@talldan
Copy link
Contributor Author

talldan commented Jul 29, 2024

Here's a diff of the transformed css (comparing trunk and this PR):

Diff

Styles A

381c381
< .editor-styles-wrapper .has-body-font-family {
---
> .has-.editor-styles-wrapper-font-family {

Styles B

25c25
< .editor-styles-wrapper .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .editor-styles-wrapper .alignfull)) {
---
> .editor-styles-wrapper .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) {
30c30
< .editor-styles-wrapper .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .editor-styles-wrapper .alignfull))>.alignfull {
---
> .editor-styles-wrapper .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull))>.alignfull {
68c68
< .editor-styles-wrapper .is-layout-flow> :first-child {
---
> .editor-styles-wrapper :where(.is-layout-flow > :first-child) {
72c72
< .editor-styles-wrapper .is-layout-flow> :last-child {
---
> .editor-styles-wrapper :where(.is-layout-flow > :last-child) {
76c76
< .editor-styles-wrapper .is-layout-flow>* {
---
> .editor-styles-wrapper :where(.is-layout-flow > *) {
81c81
< .editor-styles-wrapper .is-layout-constrained> :first-child {
---
> .editor-styles-wrapper :where(.is-layout-constrained > :first-child) {
85c85
< .editor-styles-wrapper .is-layout-constrained> :last-child {
---
> .editor-styles-wrapper :where(.is-layout-constrained > :last-child) {
89c89
< .editor-styles-wrapper .is-layout-constrained>* {
---
> .editor-styles-wrapper :where(.is-layout-constrained > *) {
94c94
< .editor-styles-wrapper .is-layout-flex {
---
> .editor-styles-wrapper :where(.is-layout-flex) {
98c98
< .editor-styles-wrapper .is-layout-grid {
---
> .editor-styles-wrapper :where(.is-layout-grid) {
155c155
< .editor-styles-wrapper .is-layout-flex> :is(*, .editor-styles-wrapper div) {
---
> .editor-styles-wrapper .is-layout-flex> :is(*, div) {
163c163
< .editor-styles-wrapper .is-layout-grid> :is(*, .editor-styles-wrapper div) {
---
> .editor-styles-wrapper .is-layout-grid> :is(*, div) {
227c227
< .editor-styles-wrapper :where(.wp-element-button, .editor-styles-wrapper .wp-block-button__link) {
---
> .editor-styles-wrapper :where(.wp-element-button, .wp-block-button__link) {
245c245
< .editor-styles-wrapper :where(.wp-element-button:hover, .editor-styles-wrapper .wp-block-button__link:hover) {
---
> .editor-styles-wrapper :where(.wp-element-button:hover, .wp-block-button__link:hover) {
251c251
< .editor-styles-wrapper :where(.wp-element-button:focus, .editor-styles-wrapper .wp-block-button__link:focus) {
---
> .editor-styles-wrapper :where(.wp-element-button:focus, .wp-block-button__link:focus) {
259c259
< .editor-styles-wrapper :where(.wp-element-button:active, .editor-styles-wrapper .wp-block-button__link:active) {
---
> .editor-styles-wrapper :where(.wp-element-button:active, .wp-block-button__link:active) {
264c264
< .editor-styles-wrapper :where(.wp-element-caption, .editor-styles-wrapper .wp-block-audio figcaption, .editor-styles-wrapper .wp-block-embed figcaption, .editor-styles-wrapper .wp-block-gallery figcaption, .editor-styles-wrapper .wp-block-image figcaption, .editor-styles-wrapper .wp-block-table figcaption, .editor-styles-wrapper .wp-block-video figcaption) {
---
> .editor-styles-wrapper :where(.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) {
292c292
< .editor-styles-wrapper .wp-block-buttons-is-layout-flow> :first-child {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-flow > :first-child) {
296c296
< .editor-styles-wrapper .wp-block-buttons-is-layout-flow> :last-child {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-flow > :last-child) {
300c300
< .editor-styles-wrapper .wp-block-buttons-is-layout-flow>* {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-flow > *) {
305c305
< .editor-styles-wrapper .wp-block-buttons-is-layout-constrained> :first-child {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-constrained > :first-child) {
309c309
< .editor-styles-wrapper .wp-block-buttons-is-layout-constrained> :last-child {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-constrained > :last-child) {
313c313
< .editor-styles-wrapper .wp-block-buttons-is-layout-constrained>* {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-constrained > *) {
318c318
< .editor-styles-wrapper .wp-block-buttons-is-layout-flex {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-flex) {
322c322
< .editor-styles-wrapper .wp-block-buttons-is-layout-grid {
---
> .editor-styles-wrapper :where(.wp-block-buttons-is-layout-grid) {
326c326
< .editor-styles-wrapper :where(.wp-block-calendar table, .editor-styles-wrapper .wp-block-calendar th) {
---
> .editor-styles-wrapper :where(.wp-block-calendar table, .wp-block-calendar th) {
436c436
< .editor-styles-wrapper :where(.wp-block-post-comments-form textarea, .editor-styles-wrapper .wp-block-post-comments-form input) {
---
> .editor-styles-wrapper :where(.wp-block-post-comments-form textarea, .wp-block-post-comments-form input) {
522c522
< .editor-styles-wrapper :where(.wp-block-post-featured-image img, .editor-styles-wrapper .wp-block-post-featured-image .block-editor-media-placeholder, .editor-styles-wrapper .wp-block-post-featured-image .wp-block-post-featured-image__overlay) {
---
> .editor-styles-wrapper :where(.wp-block-post-featured-image img, .wp-block-post-featured-image .block-editor-media-placeholder, .wp-block-post-featured-image .wp-block-post-featured-image__overlay) {
586c586
< .editor-styles-wrapper :where(.wp-block-quote.has-text-align-right.is-style-plain, .editor-styles-wrapper .rtl .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-left)) {
---
> .editor-styles-wrapper :where(.wp-block-quote.has-text-align-right.is-style-plain, .rtl .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-left)) {
592c592
< .editor-styles-wrapper :where(.wp-block-quote.has-text-align-left.is-style-plain, .editor-styles-wrapper:not(.rtl) .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right)) {
---
> :root :where(.wp-block-quote.has-text-align-left.is-style-plain, .editor-styles-wrapper:not(.rtl) .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right)) {
604c604
< .editor-styles-wrapper :where(.wp-block-search .wp-block-search__label, .editor-styles-wrapper .wp-block-search .wp-block-search__input, .editor-styles-wrapper .wp-block-search .wp-block-search__button) {
---
> .editor-styles-wrapper :where(.wp-block-search .wp-block-search__label, .wp-block-search .wp-block-search__input, .wp-block-search .wp-block-search__button) {
614c614
< .editor-styles-wrapper :where(.wp-block-search .wp-element-button, .editor-styles-wrapper .wp-block-search .wp-block-button__link) {
---
> .editor-styles-wrapper :where(.wp-block-search .wp-element-button, .wp-block-search .wp-block-button__link) {

There's a pretty obvious issue in the first diff where the replacement of body is way too basic:

381c381
< .editor-styles-wrapper .has-body-font-family {
---
> .has-.editor-styles-wrapper-font-family {

This also doesn't look right:

592c592
< .editor-styles-wrapper :where(.wp-block-quote.has-text-align-left.is-style-plain, .editor-styles-wrapper:not(.rtl) .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right)) {
---
> :root :where(.wp-block-quote.has-text-align-left.is-style-plain, .editor-styles-wrapper:not(.rtl) .is-style-plain.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right)) {

Copy link

Flaky tests detected in 3ce3370.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/10142596352
📝 Reported issues:

@talldan talldan changed the title CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector, fix layout rule specificity CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector to fix mangled compound :where styles Jul 31, 2024
@talldan talldan changed the title CSS transformation: Try switching from postcss-prefixwrap to postcss-prefix-selector to fix mangled compound :where styles CSS transformation: Fix mangled selectors by switching to a different postcss plugin for prefixing Jul 31, 2024
@@ -208,7 +208,24 @@ describe( 'transformStyles', () => {
'.my-namespace'
);

expect( output ).toMatchSnapshot();
expect( output ).toEqual( [ input ] );
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Snapshot was unnecessary (and I think is also not needed for quite a lot of these tests), this just needs to test that the output is the same as the input.

@talldan
Copy link
Contributor Author

talldan commented Aug 13, 2024

Closing in favour of #64458

@talldan talldan closed this Aug 13, 2024
@talldan talldan deleted the fix/non-iframed-selectors branch August 13, 2024 02:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Non-iframed Editor: Compound selectors within :where are not prefixed correctly
1 participant