match-media-mock
Version:
server side compatible replacement for Window.matchMedia()
67 lines (44 loc) • 1.58 kB
JavaScript
;
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