UNPKG

react-styled-flexboxgrid

Version:

Grid system based on styled-components and flexbox for React

88 lines (69 loc) 3.22 kB
"use strict"; exports.__esModule = true; exports["default"] = config; exports.DIMENSION_NAMES = exports.BASE_CONF = void 0; var _styledComponents = require("styled-components"); function _templateObject() { var data = _taggedTemplateLiteralLoose(["\n @media ", " {\n ", "\n }\n "]); _templateObject = function _templateObject() { return data; }; return data; } function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; } 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; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var THEME_CONF = 'flexboxgrid'; var BASE_CONF = { gridSize: 12, gutterWidth: 1, outerMargin: 2, mediaQuery: 'only screen', container: { sm: 46, md: 61, lg: 76 }, breakpoints: { xs: 0, sm: 48, md: 64, lg: 75 } }; exports.BASE_CONF = BASE_CONF; var configCache = []; var makeCacheId = function makeCacheId(props) { return JSON.stringify(props.theme && props.theme[THEME_CONF] || {}); }; var resolveConfig = function resolveConfig(props) { var themeConf = props.theme && props.theme[THEME_CONF] || {}; var conf = _objectSpread({}, BASE_CONF, {}, themeConf, { container: _objectSpread({}, BASE_CONF.container, {}, themeConf.container), breakpoints: _objectSpread({}, BASE_CONF.breakpoints, {}, themeConf.breakpoints) }); conf.media = Object.keys(conf.breakpoints).reduce(function (media, breakpoint) { var breakpointWidth = conf.breakpoints[breakpoint]; media[breakpoint] = makeMedia([conf.mediaQuery, breakpoint !== 0 && "(min-width: " + breakpointWidth + "em)"].filter(Boolean).join(' and ')); return media; }, {}); return conf; }; var DIMENSION_NAMES = ['xs', 'sm', 'md', 'lg']; exports.DIMENSION_NAMES = DIMENSION_NAMES; function config(props) { var cacheId = makeCacheId(props); if (configCache[0] === cacheId) { return configCache[1]; } var conf = resolveConfig(props); configCache[0] = cacheId; configCache[1] = conf; return conf; } function makeMedia(media) { return function () { return (0, _styledComponents.css)(_templateObject(), media, _styledComponents.css.apply(void 0, arguments)); }; }