Web compat: polyfill MediaQueryList.addEventListener() for Safari < 14 (#36274)

This commit is contained in:
Leon Sorokin
2021-06-30 21:36:03 -05:00
committed by GitHub
parent 8aeb1cc030
commit b8010ba9f5
2 changed files with 21 additions and 0 deletions
@@ -0,0 +1,20 @@
// Safari < 14 does not have mql.addEventListener(), but uses the old spec mql.addListener()
let oMatchMedia = window.matchMedia;
type MqlListener = (this: MediaQueryList, ev: MediaQueryListEvent) => any;
window.matchMedia = (mediaQueryString) => {
let mql = oMatchMedia(mediaQueryString);
if (!mql.addEventListener) {
mql.addEventListener = (type: string, listener: MqlListener) => {
mql.addListener(listener);
};
mql.removeEventListener = (type: string, listener: MqlListener) => {
mql.removeListener(listener);
};
}
return mql;
};