@quarkly/atomize
Version:
Library for creating atomic react components
58 lines (44 loc) • 2.03 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.getBreakpoints = exports.createBreakpointRule = exports.themeGet = exports.variantGet = exports.getFromTheme = void 0;
var _memoize2 = _interopRequireDefault(require("lodash/fp/memoize"));
var _isUndefined2 = _interopRequireDefault(require("lodash/fp/isUndefined"));
var _get2 = _interopRequireDefault(require("lodash/fp/get"));
var _themeDefault = _interopRequireDefault(require("../constants/themeDefault"));
var getFromTheme = function getFromTheme(props, key) {
return (0, _get2["default"])(key, props.theme) || (0, _get2["default"])(key, _themeDefault["default"]);
};
exports.getFromTheme = getFromTheme;
var variantGet = function variantGet(props, key, name) {
var variants = getFromTheme(props, key);
if ((0, _isUndefined2["default"])(variants)) return name;
var value = (0, _get2["default"])(name, variants);
return (0, _isUndefined2["default"])(value) ? name : value;
};
exports.variantGet = variantGet;
var themeGet = function themeGet(props, key, def) {
var value = getFromTheme(props, key);
return (0, _isUndefined2["default"])(value) ? def : value;
};
exports.themeGet = themeGet;
var createBreakpointRule = function createBreakpointRule(point) {
return point.map(function (_ref) {
var type = _ref.type,
value = _ref.value;
return value === true ? "(" + type + ")" : "(" + type + ": " + value + "px)";
}).join(' and ');
};
exports.createBreakpointRule = createBreakpointRule;
var getBreakpoints = (0, _memoize2["default"])(function (props) {
var breakpoints = getFromTheme(props, 'breakpoints');
return Object.entries(breakpoints).reduce(function (acc, _ref2) {
var key = _ref2[0],
point = _ref2[1];
acc[key] = "@media " + createBreakpointRule(point);
return acc;
}, {});
});
exports.getBreakpoints = getBreakpoints;
var _default = _themeDefault["default"];
exports["default"] = _default;