UNPKG

@chakra-ui/core

Version:

Responsive and accessible React UI components built with React and Emotion

199 lines (183 loc) 5.16 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } import { system, get } from "styled-system"; var isNumber = function isNumber(n) { return typeof n === "number" && !isNaN(n); }; var getWidth = function getWidth(n, scale) { return get(scale, n, !isNumber(n) || n > 1 ? n : n * 100 + "%"); }; export var config = { roundedTop: { properties: ["borderTopLeftRadius", "borderTopRightRadius"], scale: "radii" }, roundedBottom: { properties: ["borderBottomLeftRadius", "borderBottomRightRadius"], scale: "radii" }, roundedLeft: { properties: ["borderTopLeftRadius", "borderBottomLeftRadius"], scale: "radii" }, roundedRight: { properties: ["borderTopRightRadius", "borderBottomRightRadius"], scale: "radii" }, roundedTopRight: { property: "borderTopRightRadius", scale: "radii" }, roundedTopLeft: { property: "borderTopLeftRadius", scale: "radii" }, roundedBottomRight: { property: "borderBottomRightRadius", scale: "radii" }, roundedBottomLeft: { property: "borderBottomLeftRadius", scale: "radii" }, rounded: { property: "borderRadius", scale: "radii" }, d: { property: "display" }, w: { property: "width", scale: "sizes", transform: getWidth }, minW: { property: "minWidth", scale: "sizes" }, maxW: { property: "maxWidth", scale: "sizes" }, h: { property: "height", scale: "sizes" }, minH: { property: "minHeight", scale: "sizes" }, maxH: { property: "maxHeight", scale: "sizes" }, bgImg: { property: "backgroundImage" }, bgImage: { property: "backgroundImage" }, bgSize: { property: "backgroundSize" }, bgPos: { property: "backgroundPosition" }, bgRepeat: { property: "backgroundRepeat" }, pos: { property: "position" }, flexDir: { property: "flexDirection" }, shadow: { property: "boxShadow", scale: "shadows" }, textDecoration: { property: "textDecoration" }, overflowX: true, overflowY: true, textTransform: true, animation: true, appearance: true, transform: true, transformOrigin: true, visibility: true, whiteSpace: true, userSelect: true, pointerEvents: true, wordBreak: true, overflowWrap: true, textOverflow: true, boxSizing: true, cursor: true, resize: true, transition: true, listStyleType: true, listStylePosition: true, listStyleImage: true, fill: { property: "fill", scale: "colors" }, stroke: { property: "stroke", scale: "colors" }, objectFit: true, objectPosition: true, backgroundAttachment: { property: "backgroundAttachment" }, outline: true, "float": true, willChange: true }; config.bgAttachment = config.backgroundAttachment; config.textDecor = config.textDecoration; config.listStylePos = config.listStylePosition; config.listStyleImg = config.listStyleImage; var extraConfig = system(config); export default extraConfig; // Create an issue on @styled-system/css to allow custom alias to be passed to the `css` function // Transform the custom alias to a format that styled-system CSS supports var transformAlias = function transformAlias(prop, propValue) { var configKeys = Object.keys(config); var result = {}; if (configKeys.includes(prop)) { var _config$prop = config[prop], properties = _config$prop.properties, property = _config$prop.property; if (properties) { properties.forEach(function (_cssProp) { return result[_cssProp] = propValue; }); } if (property) { result[property] = propValue; } if (config[prop] === true) { result[prop] = propValue; } } else { result[prop] = propValue; } return result; }; export var transformAliasProps = function transformAliasProps(props) { var result = {}; for (var prop in props) { if (typeof props[prop] === "object" && !Array.isArray(props[prop])) { var _objectSpread2; result = _objectSpread({}, result, (_objectSpread2 = {}, _objectSpread2[prop] = transformAliasProps(props[prop]), _objectSpread2)); } else { result = _objectSpread({}, result, {}, transformAlias(prop, props[prop])); } } return result; };