UNPKG

match-media-mock

Version:

server side compatible replacement for Window.matchMedia()

67 lines (44 loc) 1.58 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _lodashClone = require('lodash/clone'); var _lodashClone2 = _interopRequireDefault(_lodashClone); var _lodashMapValues = require('lodash/mapValues'); var _lodashMapValues2 = _interopRequireDefault(_lodashMapValues); var _lodashForOwn = require('lodash/forOwn'); var _lodashForOwn2 = _interopRequireDefault(_lodashForOwn); var _MediaQueryListMock = require('./MediaQueryListMock'); var _MediaQueryListMock2 = _interopRequireDefault(_MediaQueryListMock); exports['default'] = { create: function create() { var config = {}; var createdMqls = {}; function matchMediaMock(query) { var mql = createdMqls[query]; if (!mql) { mql = new _MediaQueryListMock2['default'](query, function () { return config; }); createdMqls[query] = mql; } return mql; } matchMediaMock.setConfig = function (newConfig) { if (!newConfig) { return; } var matchBeforeByQuery = (0, _lodashMapValues2['default'])(createdMqls, 'matches'); config = (0, _lodashClone2['default'])(newConfig) || {}; (0, _lodashForOwn2['default'])(createdMqls, function (mql, query) { if (mql.matches !== matchBeforeByQuery[query]) { mql.callListeners(); } }); }; return matchMediaMock; } }; module.exports = exports['default']; //# sourceMappingURL=MatchMediaMock.js.map