match-media-mock
Version:
server side compatible replacement for Window.matchMedia()
80 lines (61 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _lodashIncludes = require('lodash/includes');
var _lodashIncludes2 = _interopRequireDefault(_lodashIncludes);
var _lodashPull = require('lodash/pull');
var _lodashPull2 = _interopRequireDefault(_lodashPull);
var _cssMediaquery = require('css-mediaquery');
var _cssMediaquery2 = _interopRequireDefault(_cssMediaquery);
var _exenv = require('exenv');
var _exenv2 = _interopRequireDefault(_exenv);
var MediaQueryListMock = (function () {
function MediaQueryListMock(query, getConfig) {
_classCallCheck(this, MediaQueryListMock);
this._getConfig = getConfig;
this._query = query;
this._listeners = [];
}
_createClass(MediaQueryListMock, [{
key: 'addListener',
value: function addListener(listener) {
if (!_exenv2['default'].canUseDOM) {
return;
}
if (!(0, _lodashIncludes2['default'])(this._listeners, listener)) {
this._listeners.push(listener);
}
}
}, {
key: 'removeListener',
value: function removeListener(listener) {
(0, _lodashPull2['default'])(this._listeners, listener);
}
}, {
key: 'callListeners',
value: function callListeners() {
var _this = this;
this._listeners.forEach(function (listener) {
return listener(_this);
});
}
}, {
key: 'matches',
get: function get() {
return _cssMediaquery2['default'].match(this._query, this._getConfig());
}
}, {
key: 'media',
get: function get() {
return this._query;
}
}]);
return MediaQueryListMock;
})();
exports['default'] = MediaQueryListMock;
module.exports = exports['default'];
//# sourceMappingURL=MediaQueryListMock.js.map