UNPKG

1.23 kBPlain TextView Raw
1/**
2@license
3Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
4This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7Code distributed by Google as part of the polymer project is also
8subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9*/
10
11/**
12 Utility method that calls a callback whenever a media-query matches in response
13 to the viewport size changing. The callback should take a boolean parameter
14 (with `true` meaning the media query is matched).
15
16 Example:
17
18 import { installMediaQueryWatcher } from 'pwa-helpers/media-query.js';
19
20 installMediaQueryWatcher(`(min-width: 600px)`, (matches) => {
21 console.log(matches ? 'wide screen' : 'narrow sreen');
22 });
23*/
24export const installMediaQueryWatcher = (mediaQuery: string, layoutChangedCallback: (mediaQueryMatches: boolean) => void) => {
25 let mql = window.matchMedia(mediaQuery);
26 mql.addListener((e) => layoutChangedCallback(e.matches));
27 layoutChangedCallback(mql.matches);
28};