From 3cbbf99fec90f58cdf410df861f272115a7704e6 Mon Sep 17 00:00:00 2001 From: elVengador Date: Mon, 19 Dec 2022 12:51:33 -0500 Subject: [PATCH] Fix: matchMedia add event listener for safari 13 and older versions --- src/utils.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 9f00192..698845e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -3,9 +3,9 @@ import { Dimensions } from './types'; // There are polyfills for this, but they add hundreds of lines of code class FakeResizeObserver { - observe() {} - unobserve() {} - disconnect() {} + observe() { } + unobserve() { } + disconnect() { } } function throttle(f: Function, delay: number) { @@ -106,10 +106,14 @@ export function useDevicePixelRatio() { const mediaMatcher = window.matchMedia( `screen and (resolution: ${currentDpr}dppx)` ); - mediaMatcher.addEventListener('change', updateDpr); + mediaMatcher.hasOwnProperty('addEventListener') + ? mediaMatcher.addEventListener('change', updateDpr) + : mediaMatcher.addListener(updateDpr); return () => { - mediaMatcher.removeEventListener('change', updateDpr); + mediaMatcher.hasOwnProperty('removeEventListener') + ? mediaMatcher.removeEventListener('change', updateDpr) + : mediaMatcher.removeListener(updateDpr); }; }, [currentDpr]);