UNPKG

react-native-match-media-polyfill

Version:

window.matchMedia() polyfill for React Native

2 lines 2.6 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _reactNative=require("react-native");var _cssMediaquery=_interopRequireDefault(require("css-mediaquery"));function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var MediaQuery=function(){function MediaQuery(query){var _this=this;(0,_classCallCheck2.default)(this,MediaQuery);this._listeners=[];this._query='';this._handleDimensionsChange=function(){_this._notifyListeners();};this._query=query;_reactNative.Dimensions.addEventListener('change',this._handleDimensionsChange);}(0,_createClass2.default)(MediaQuery,[{key:"_notifyListeners",value:function _notifyListeners(){var _this2=this;this._listeners.forEach(function(listener){listener(_this2);});}},{key:"_unmount",value:function _unmount(){_reactNative.Dimensions.removeEventListener('change',this._handleDimensionsChange);}},{key:"addListener",value:function addListener(listener){this._listeners.push(listener);}},{key:"removeListener",value:function removeListener(listener){var index=this._listeners.indexOf(listener);if(index===-1)return;this._listeners.splice(index);}},{key:"matches",get:function get(){var dims=_reactNative.Dimensions.get("window");return _cssMediaquery.default.match(this._query,_objectSpread({type:'screen'},dims,{"orientation":dims.width>=dims.height?"landscape":"portrait","device-width":dims.width,"device-height":dims.height}));}}]);return MediaQuery;}();if(window){window.matchMedia=function(mediaQueryString){return new MediaQuery(mediaQueryString);};} //# sourceMappingURL=polyfill.native.js.map