feat: enhance viewport handling on resize and panel transitions#10
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two related improvements to how the viewer handles viewport state when the layout changes.
1. Active-step viewport restoration on resize
When a resize event fires and a step is currently active, instead of trying to restore the previous raw pan/zoom values, re-apply the highlight and autoZoom for the current step nodes. This ensures highlighted elements stay properly framed after a resize rather than drifting to stale coordinates.
2. Viewport sync on panel CSS transition end
Adds an onPanelTransitionEnd listener on the panel element that fires onResize when the panel width or min-height CSS transition completes. This ensures the canvas and svg-pan-zoom instance are resized and re-centred after the panel slides open/closed. The listener is registered in mount() and cleaned up in destroy() to avoid leaks.
Files changed