81 lines
2.3 KiB
JavaScript
81 lines
2.3 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = createBreakpoints;
|
|
exports.keys = void 0;
|
|
|
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
|
|
|
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
|
|
// Sorted ASC by size. That's important.
|
|
// It can't be configured as it's used statically for propTypes.
|
|
var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.
|
|
|
|
exports.keys = keys;
|
|
|
|
function createBreakpoints(breakpoints) {
|
|
var _breakpoints$values = breakpoints.values,
|
|
values = _breakpoints$values === void 0 ? {
|
|
xs: 0,
|
|
sm: 600,
|
|
md: 960,
|
|
lg: 1280,
|
|
xl: 1920
|
|
} : _breakpoints$values,
|
|
_breakpoints$unit = breakpoints.unit,
|
|
unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,
|
|
_breakpoints$step = breakpoints.step,
|
|
step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,
|
|
other = (0, _objectWithoutProperties2.default)(breakpoints, ["values", "unit", "step"]);
|
|
|
|
function up(key) {
|
|
var value = typeof values[key] === 'number' ? values[key] : key;
|
|
return "@media (min-width:".concat(value).concat(unit, ")");
|
|
}
|
|
|
|
function down(key) {
|
|
var endIndex = keys.indexOf(key) + 1;
|
|
var upperbound = values[keys[endIndex]];
|
|
|
|
if (endIndex === keys.length) {
|
|
// xl down applies to all sizes
|
|
return up('xs');
|
|
}
|
|
|
|
var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;
|
|
return "@media (max-width:".concat(value - step / 100).concat(unit, ")");
|
|
}
|
|
|
|
function between(start, end) {
|
|
var endIndex = keys.indexOf(end) + 1;
|
|
|
|
if (endIndex === keys.length) {
|
|
return up(start);
|
|
}
|
|
|
|
return "@media (min-width:".concat(values[start]).concat(unit, ") and ") + "(max-width:".concat(values[keys[endIndex]] - step / 100).concat(unit, ")");
|
|
}
|
|
|
|
function only(key) {
|
|
return between(key, key);
|
|
}
|
|
|
|
function width(key) {
|
|
return values[key];
|
|
}
|
|
|
|
return (0, _objectSpread2.default)({
|
|
keys: keys,
|
|
values: values,
|
|
up: up,
|
|
down: down,
|
|
between: between,
|
|
only: only,
|
|
width: width
|
|
}, other);
|
|
} |