| 1234567891011121314151617181920212223242526272829303132 |
- import type { Breakpoint } from '../interfaces/breakpoints';
- const EVENT_TYPE_CHANGE = 'change';
- export const addBreakpointListener = (
- breakpoint: Breakpoint,
- // biome-ignore lint/suspicious/noExplicitAny: ignore
- listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any,
- ): MediaQueryList => {
- // get the value of '--bs-breakpoint-*'
- const breakpointPixel = Number.parseInt(
- window
- .getComputedStyle(document.documentElement)
- .getPropertyValue(`--bs-breakpoint-${breakpoint}`),
- 10,
- );
- const mediaQueryList = window.matchMedia(`(min-width: ${breakpointPixel}px)`);
- // add event listener
- mediaQueryList.addEventListener(EVENT_TYPE_CHANGE, listener);
- return mediaQueryList;
- };
- export const cleanupBreakpointListener = (
- mediaQueryList: MediaQueryList,
- // biome-ignore lint/suspicious/noExplicitAny: ignore
- listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any,
- ): void => {
- mediaQueryList.removeEventListener(EVENT_TYPE_CHANGE, listener);
- };
|