UNPKG

1.78 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
8
9var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
10
11var _react = require('react');
12
13var _react2 = _interopRequireDefault(_react);
14
15var _propTypes = require('prop-types');
16
17var _propTypes2 = _interopRequireDefault(_propTypes);
18
19var _recompose = require('recompose');
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23var MatchMediaListener = function MatchMediaListener(_ref) {
24 var children = _ref.children,
25 matchQueryString = _ref.matchQueryString,
26 defaultMatches = _ref.defaultMatches;
27
28 var _useState = (0, _react.useState)({
29 matches: defaultMatches,
30 mediaQueryList: null
31 }),
32 _useState2 = (0, _slicedToArray3.default)(_useState, 2),
33 state = _useState2[0],
34 setState = _useState2[1];
35
36 var mediaQueryList = state.mediaQueryList,
37 matches = state.matches;
38
39
40 var listener = function listener(e) {
41 setState({ matches: e.matches });
42 };
43
44 (0, _react.useEffect)(function () {
45 setState({
46 matches: window.matchMedia(matchQueryString).matches,
47 mediaQueryList: window.matchMedia(matchQueryString)
48 });
49 mediaQueryList && mediaQueryList.addListener(listener);
50
51 return function () {
52 mediaQueryList && mediaQueryList.removeListener(listener);
53 };
54 });
55
56 return children({ matches: matches });
57};
58
59MatchMediaListener.propTypes = {
60 matchQueryString: _propTypes2.default.string.isRequired
61};
62MatchMediaListener.defaultProps = {
63 defaultMatches: false
64};
65
66var enhance = (0, _recompose.compose)((0, _recompose.onlyUpdateForKeys)(['children']));
67
68exports.default = enhance(MatchMediaListener);
\No newline at end of file