1 | /**
|
2 | @license
|
3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
|
4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7 | Code distributed by Google as part of the polymer project is also
|
8 | subject 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 | */
|
24 | export 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 | };
|