From b6a8f385afef31b55a4a4c176280b809febbf8cc Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 29 Sep 2025 09:41:47 +0200 Subject: [PATCH 1/2] fix(ObjectPage): support height change of pinned header --- .../main/src/internal/useObserveHeights.ts | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/packages/main/src/internal/useObserveHeights.ts b/packages/main/src/internal/useObserveHeights.ts index b6e1f319099..c5aec3e81aa 100644 --- a/packages/main/src/internal/useObserveHeights.ts +++ b/packages/main/src/internal/useObserveHeights.ts @@ -66,11 +66,10 @@ export const useObserveHeights = ( // top header useEffect(() => { - const headerContentResizeObserver = new ResizeObserver(([header]) => { - // Firefox implements `borderBoxSize` as a single content rect, rather than an array - const borderBoxSize = Array.isArray(header.borderBoxSize) ? header.borderBoxSize[0] : header.borderBoxSize; - // Safari doesn't implement `borderBoxSize` - setTopHeaderHeight(borderBoxSize?.blockSize ?? header.target.getBoundingClientRect().height); + const headerContentResizeObserver = new ResizeObserver(([entry]) => { + const { blockSize } = entry.borderBoxSize[0]; + console.log('a'); + setTopHeaderHeight(blockSize); }); if (topHeaderRef?.current) { headerContentResizeObserver.observe(topHeaderRef.current); @@ -82,14 +81,11 @@ export const useObserveHeights = ( // header content useEffect(() => { - const headerContentResizeObserver = new ResizeObserver(([headerContent]) => { - if (isIntersecting) { - // Firefox implements `borderBoxSize` as a single content rect, rather than an array - const borderBoxSize = Array.isArray(headerContent.borderBoxSize) - ? headerContent.borderBoxSize[0] - : headerContent.borderBoxSize; - // Safari doesn't implement `borderBoxSize` - setHeaderContentHeight(borderBoxSize?.blockSize ?? headerContent.target.getBoundingClientRect().height); + const headerContentResizeObserver = new ResizeObserver(([entry]) => { + if (isIntersecting || fixedHeader) { + const { blockSize } = entry.borderBoxSize[0]; + console.log('b'); + setHeaderContentHeight(blockSize); } }); @@ -99,7 +95,7 @@ export const useObserveHeights = ( return () => { headerContentResizeObserver.disconnect(); }; - }, [isIntersecting]); + }, [isIntersecting, fixedHeader]); const totalHeaderHeight = noHeader ? 0 : topHeaderHeight + headerContentHeight; return { topHeaderHeight, headerContentHeight, totalHeaderHeight, headerCollapsed }; From 03e87688f2b608c7e559cf8e5dd96400036dc4c5 Mon Sep 17 00:00:00 2001 From: Lukas Harbarth Date: Mon, 29 Sep 2025 09:42:27 +0200 Subject: [PATCH 2/2] cleanup --- packages/main/src/internal/useObserveHeights.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/main/src/internal/useObserveHeights.ts b/packages/main/src/internal/useObserveHeights.ts index c5aec3e81aa..b5a9ffdd1c9 100644 --- a/packages/main/src/internal/useObserveHeights.ts +++ b/packages/main/src/internal/useObserveHeights.ts @@ -68,7 +68,6 @@ export const useObserveHeights = ( useEffect(() => { const headerContentResizeObserver = new ResizeObserver(([entry]) => { const { blockSize } = entry.borderBoxSize[0]; - console.log('a'); setTopHeaderHeight(blockSize); }); if (topHeaderRef?.current) { @@ -84,7 +83,6 @@ export const useObserveHeights = ( const headerContentResizeObserver = new ResizeObserver(([entry]) => { if (isIntersecting || fixedHeader) { const { blockSize } = entry.borderBoxSize[0]; - console.log('b'); setHeaderContentHeight(blockSize); } });