react-responsive-redux
Version:
redux integration for react-responsive
84 lines (79 loc) • 3.86 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
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) { _defineProperty(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; }
import React from 'react';
import PropTypes from 'prop-types';
import MediaQuery from 'react-responsive';
import { connect } from 'react-redux';
import { breakPoints } from './defaults';
export var MediaQueryWrapper = function MediaQueryWrapper() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var dispatch = props.dispatch,
fakeWidth = props.fakeWidth,
children = props.children,
other = _objectWithoutProperties(props, ["dispatch", "fakeWidth", "children"]);
var values = {
deviceWidth: fakeWidth,
width: fakeWidth
};
return React.createElement(MediaQuery, _extends({}, other, {
values: values
}), children);
};
MediaQueryWrapper.propTypes = {
children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
component: PropTypes.oneOfType([PropTypes.node, PropTypes.func, PropTypes.string, PropTypes.symbol]),
dispatch: PropTypes.func.isRequired,
fakeWidth: PropTypes.number.isRequired
};
MediaQueryWrapper.defaultProps = {
children: null,
component: 'div'
};
export var responsiveWrapper = function responsiveWrapper() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return connect(function (state) {
return _objectSpread({
fakeWidth: state.responsive.fakeWidth
}, props);
})(MediaQueryWrapper);
};
export var XsScreen = responsiveWrapper({
maxWidth: breakPoints.sm - 1
});
export var SmScreen = responsiveWrapper({
query: "(min-width: ".concat(breakPoints.sm, "px) and (max-width: ").concat(breakPoints.md - 1, "px)")
});
export var MdScreen = responsiveWrapper({
query: "(min-width: ".concat(breakPoints.md, "px) and (max-width: ").concat(breakPoints.lg - 1, "px)")
});
export var LgScreen = responsiveWrapper({
query: "(min-width: ".concat(breakPoints.lg, "px)")
});
export var XsScreenHidden = responsiveWrapper({
minWidth: breakPoints.sm
});
export var SmScreenHidden = responsiveWrapper({
query: "(max-width: ".concat(breakPoints.sm - 1, "px), (min-width: ").concat(breakPoints.md, "px)")
});
export var MdScreenHidden = responsiveWrapper({
query: "(max-width: ".concat(breakPoints.md - 1, "px), (min-width: ").concat(breakPoints.lg, "px)")
});
export var LgScreenHidden = responsiveWrapper({
maxWidth: breakPoints.lg - 1
});
export { XsScreen as PhoneScreen };
export { SmScreen as TabletScreen };
export var DesktopScreen = responsiveWrapper({
minWidth: breakPoints.md
});
export var MobileScreen = responsiveWrapper({
maxWidth: breakPoints.md - 1
});
export { XsScreenHidden as PhoneScreenHidden };
export { SmScreenHidden as TabletScreenHidden };
export { MobileScreen as DesktopScreenHidden };
export { DesktopScreen as MobileScreenHidden };
//# sourceMappingURL=components.js.map