-
Notifications
You must be signed in to change notification settings - Fork 110
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
Accurate sizes: Add ancestor block context #1795
base: feature/1511-incorporate-layout-constraints-from-ancestors
Are you sure you want to change the base?
Accurate sizes: Add ancestor block context #1795
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## feature/1511-incorporate-layout-constraints-from-ancestors #1795 +/- ##
=============================================================================================
Coverage ? 69.41%
=============================================================================================
Files ? 86
Lines ? 7006
Branches ? 0
=============================================================================================
Hits ? 4863
Misses ? 2143
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…ors' into add/ancestor-block-context
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for getting this going @mukeshpanchal27. I can see where you're going but think that this introduces competing approaches to solving the same problem.
In #1701 we introduced the concept of max_alignment
context, which is meant to be a way for ancestor blocks to share information about their alignment to inner blocks to use during rendering.
This approach is doing something similar by storing an array of the ancestor block hierarchy and their widths in a nested array that blocks can use during rendering.
Both have merits, but we should probably consolidate on one or the other approach and not both. In order to avoid passing a full array of block_width_data
values to blocks that have to be looped through, we probably need to update the logic in auto_sizes_filter_render_block_context()
that sets max_alignment
context so that the alignment of a nested container block doesn't increase the max_alignment
value.
For example, if you have a block structure like this:
group (align: 'default') > group (align: 'full') > image
The max_alignment
context value should be 'default' since both the second group block and the image block will both be constrained by the max width of the first group block. However, we didn't consider nested blocks in the original implementation, so currently the max_alignment
passed to the image will be 'full', resulting in an incorrect sizes
value.
By handling nested alignment values with by keeping the max_alignment
value updated we can avoid the need to pass the full array of nested block alignment values to the image block for it to loop through, like you're doing in #1818.
I do like the way you're calculating column widths by passing column_count
context, but am think we might want to keep that context and container alignment width separate. What do you think?
@joemcgill Thanks for sharing your thoughts. I tried reusing the Could you please take a look and share your thoughts? |
I mostly agree with @joemcgill's feedback. I believe the approach of a specific scalar value (like A few additional notes:
In addition to passing information about the alignment, we need to pass information about potential column widths (if columns are present). A potential approach would be a
I see where you are getting with this, but are you sure this is always the case? I'm pretty sure that I have seen
+1
+1 for keeping the two separate. I'm curious what you think about the above approach of passing down a single column width context value. The |
What if we have columns block inside another columns block? I.e Columns > Column ( 50% ) > Columns > Column ( 33.33% ) > Image |
.wp-env.json
Outdated
@@ -1,5 +1,5 @@ | |||
{ | |||
"core": null, | |||
"core": "https://wordpress.org/wordpress-6.8-beta1.zip", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@joemcgill @felixarntz Without WordPress 6.8, I can't traverse the context since we fixed that issue in Core for 6.8. So, I have to use version 6.8 here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"core": "https://wordpress.org/wordpress-6.8-beta1.zip", | |
"core": "WordPress/WordPress#master", |
Maybe this would make sense in general so that we always test against trunk?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. Updated in b981edc
Just for information. Once 6.8 will release we update plugin minimum WP version to 6.8 and revert these changes so it will not affect other plugins.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe 6.8-RC1
would be better?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now, let's leave it as trunk. Since WordPress 6.8 will be released in a few weeks, we'll need to revert these changes anyway.
…ors' into add/ancestor-block-context
In that case the outer |
#1913 fix the unit test issue |
…ors' into add/ancestor-block-context
@joemcgill @felixarntz I have updated the PR as per the feedback. Could you please take a look so we can merge it and then proceed with #1818 for the code and unit tests for nested blocks? Check updated PR description. |
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mukeshpanchal27 This looks on the right track to me. A few comments below.
@felixarntz I’ve addressed the feedback, and the PR is ready for re-review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mukeshpanchal27 I think this looks pretty much good to go, but a few questions.
Maybe it's all good as is, it would just be great if you could double check and clarify.
Summary
This PR add the ancestor block context for image and cover block that help to calculation of img
sizes
attributes.See #1511
The context for ancestor block after the PR.
Group > Image
max_alignment = default
Group (wide alignment) > Image
Columns > Column > Image
Columns > Column ( 50% ) > Image
Group (Full alignment) > Columns (wide alignment) > Column ( 50% ) > Image
max_alignment = wide column_width = 0.5
Columns > Column ( 50% ) > Columns > Column ( 33.33% ) > Image