From b950a64406a55063f4e99905f34ff7fdc7ccef2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Wed, 8 Jan 2025 11:08:29 +0100 Subject: [PATCH] improve browser support (#2693) --- .changeset/stupid-beans-travel.md | 5 +++++ packages/gitbook/src/components/Ads/Ad.tsx | 4 ++++ .../gitbook/src/components/hooks/useScrollActiveId.ts | 4 ++++ packages/gitbook/src/components/utils/ZoomImage.tsx | 9 +++++++-- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 .changeset/stupid-beans-travel.md diff --git a/.changeset/stupid-beans-travel.md b/.changeset/stupid-beans-travel.md new file mode 100644 index 000000000..b622042b4 --- /dev/null +++ b/.changeset/stupid-beans-travel.md @@ -0,0 +1,5 @@ +--- +'gitbook': patch +--- + +Avoid errors on legacy browsers diff --git a/packages/gitbook/src/components/Ads/Ad.tsx b/packages/gitbook/src/components/Ads/Ad.tsx index 2273baf59..4a15b862d 100644 --- a/packages/gitbook/src/components/Ads/Ad.tsx +++ b/packages/gitbook/src/components/Ads/Ad.tsx @@ -44,6 +44,10 @@ export function Ad({ return; } + if (typeof IntersectionObserver === 'undefined') { + return; + } + const observer = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { diff --git a/packages/gitbook/src/components/hooks/useScrollActiveId.ts b/packages/gitbook/src/components/hooks/useScrollActiveId.ts index 6ffe9a7c8..fa3f9ddda 100644 --- a/packages/gitbook/src/components/hooks/useScrollActiveId.ts +++ b/packages/gitbook/src/components/hooks/useScrollActiveId.ts @@ -18,6 +18,10 @@ export function useScrollActiveId( React.useEffect(() => { setActiveId(null); + if (typeof IntersectionObserver === 'undefined') { + return; + } + const onObserve: IntersectionObserverCallback = (entries) => { /** * We need to keep track of all the sections that are intersecting diff --git a/packages/gitbook/src/components/utils/ZoomImage.tsx b/packages/gitbook/src/components/utils/ZoomImage.tsx index 1fcddacad..77f52645a 100644 --- a/packages/gitbook/src/components/utils/ZoomImage.tsx +++ b/packages/gitbook/src/components/utils/ZoomImage.tsx @@ -63,7 +63,10 @@ export function ZoomImage( } }; - mediaQueryList.addEventListener('change', onChange); + if ('addEventListener' in mediaQueryList) { + mediaQueryList.addEventListener('change', onChange); + } + if (imgRef.current) { resizeObserver?.observe(imgRef.current); } @@ -75,7 +78,9 @@ export function ZoomImage( return () => { resizeObserver?.disconnect(); - mediaQueryList.removeEventListener('change', onChange); + if ('removeEventListener' in mediaQueryList) { + mediaQueryList.removeEventListener('change', onChange); + } }; }, [imgRef, width]);