|
|
@@ -0,0 +1,18 @@
|
|
|
+import { Breakpoint } from '~/interfaces/breakpoints';
|
|
|
+
|
|
|
+
|
|
|
+export const addBreakpointListener = (
|
|
|
+ breakpoint: Breakpoint,
|
|
|
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
+ listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any,
|
|
|
+): MediaQueryList => {
|
|
|
+ // get the value of '--breakpoint-*'
|
|
|
+ const breakpointPixel = parseInt(window.getComputedStyle(document.documentElement).getPropertyValue(`--breakpoint-${breakpoint}`), 10);
|
|
|
+
|
|
|
+ const mediaQueryList = window.matchMedia(`(min-width: ${breakpointPixel}px)`);
|
|
|
+
|
|
|
+ // add event listener
|
|
|
+ mediaQueryList.addEventListener('change', listener);
|
|
|
+
|
|
|
+ return mediaQueryList;
|
|
|
+};
|