-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Zoom in/out to correct location #66618
base: wp/6.7
Are you sure you want to change the base?
Conversation
Size Change: +271 B (+0.02%) Total Size: 1.77 MB
ℹ️ View Unchanged
|
Flaky tests detected in ab88dfa. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/11618713629
|
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.
What do you think of adding some e2e tests to this? I can see this accidentally being broken by new code changes, so it would be nice to prevent those from happening.
iframeDocument.documentElement.addEventListener( | ||
'transitionend', | ||
onZoomOutTransitionEnd, | ||
{ once: true } |
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.
Awesome. transitionend
is a much better way to handle this!
// TODO: What should this condition be? | ||
( scaleValue === 1 ) === ( prevScaleRef.current === 1 ) |
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.
To name it, we want it to be when zoom mode changes. That's the only time we want to animate the transition. Otherwise it will animate when transitioning between scale values when opening/closing sidebars, which we do not want.
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.
The consumer is switching the scale
prop between 1
and 'default'
, so maybe it should be tied to the scale
prop instead of the value then? The current condition is effectively that, but probably less readable. I'm thinking instead it would probably be best to add just the iframeDocument
and scale
prop to the dependencies instead of everything would be sufficient.
// TODO: Removing this causes issues with the zoom out animation. | ||
// iframeDocument.documentElement.classList.remove( 'is-zoomed-out' ); |
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.
When does it cause issues? zoom out seems to be working fine for me.
Fixes #65884
Also fixes a minor bug where setting the scroll position was still delayed even when there was no animation due to reduced motion settings.
What?
Maintain the visible content of the editor canvas when zooming in/out.
Why?
It's disorienting to zoom in/out and lose your frame of reference.
How?
When changing scale (zoom in/out):
It will always attempt to scale to the center unless we are at the top of the canvas. In which case, it will scale to keep the top of the canvas visible.
Known bugs
Testing Instructions
Zooming from Top
Screen.Recording.2024-11-06.at.2.38.52.PM.mov
Zooming from below Top
Screen.Recording.2024-11-06.at.2.39.17.PM.mov
Open/close sidebar scaling animations
Try to break it :)
Testing Instructions for Keyboard
Screenshots or screencast
Before
Screen.Recording.2024-11-06.at.3.29.26.PM.mov
After
Screen.Recording.2024-11-06.at.12.27.31.PM.mov