File tree Expand file tree Collapse file tree 3 files changed +14
-2
lines changed
packages/plugin-viewport/src Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @embedpdf/plugin-viewport ' : patch
3+ ---
4+
5+ Prevent resize handling after cleanup in useViewportRef
Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ export function useViewportRef() {
1313 const container = containerRef . current ;
1414 if ( ! container ) return ;
1515
16+ let cleanedUp = false ;
17+
1618 /* ---------- live rect provider --------------------------------- */
1719 const provideRect = ( ) : Rect => {
1820 const r = container . getBoundingClientRect ( ) ;
@@ -34,6 +36,7 @@ export function useViewportRef() {
3436
3537 // Example: On resize, call setMetrics
3638 const resizeObserver = new ResizeObserver ( ( ) => {
39+ if ( cleanedUp ) return ;
3740 viewportPlugin . setViewportResizeMetrics ( {
3841 width : container . offsetWidth ,
3942 height : container . offsetHeight ,
@@ -57,9 +60,10 @@ export function useViewportRef() {
5760
5861 // Cleanup
5962 return ( ) => {
63+ cleanedUp = true ;
64+ resizeObserver . disconnect ( ) ;
6065 viewportPlugin . registerBoundingRectProvider ( null ) ;
6166 container . removeEventListener ( 'scroll' , onScroll ) ;
62- resizeObserver . disconnect ( ) ;
6367 unsubscribeScrollRequest ( ) ;
6468 } ;
6569 } , [ viewportPlugin ] ) ;
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ export function useViewportRef() {
1414
1515 if ( ! container || ! viewportPlugin ) return ;
1616
17+ let cleanedUp = false ;
1718 /* ---------- live rect provider --------------------------------- */
1819 const provideRect = ( ) : Rect => {
1920 const r = container . getBoundingClientRect ( ) ;
@@ -35,6 +36,7 @@ export function useViewportRef() {
3536
3637 // Example: On resize, call setMetrics
3738 const resizeObserver = new ResizeObserver ( ( ) => {
39+ if ( cleanedUp ) return ;
3840 viewportPlugin . setViewportResizeMetrics ( {
3941 width : container . offsetWidth ,
4042 height : container . offsetHeight ,
@@ -58,9 +60,10 @@ export function useViewportRef() {
5860
5961 // Return cleanup function
6062 return ( ) => {
63+ cleanedUp = true ;
64+ resizeObserver . disconnect ( ) ;
6165 viewportPlugin . registerBoundingRectProvider ( null ) ;
6266 container . removeEventListener ( 'scroll' , onScroll ) ;
63- resizeObserver . disconnect ( ) ;
6467 unsubscribeScrollRequest ( ) ;
6568 } ;
6669 } ;
You can’t perform that action at this time.
0 commit comments