UNPKG

5.54 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _react = require("react");
7
8var _ = require(".");
9
10exports.css = _.css;
11exports.stylesheet = _.stylesheet;
12
13var _jsx = require("./jsx");
14
15// eslint-disable-next-line import/no-extraneous-dependencies
16// eslint-disable-next-line no-control-regex
17const reWords = /[A-Z\xc0-\xd6\xd8-\xde]?[a-z\xdf-\xf6\xf8-\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde]|$)|(?:[A-Z\xc0-\xd6\xd8-\xde]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde](?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])|$)|[A-Z\xc0-\xd6\xd8-\xde]?(?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\xc0-\xd6\xd8-\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\d*(?:1ST|2ND|3RD|(?![123])\dTH)(?=\b|[a-z_])|\d*(?:1st|2nd|3rd|(?![123])\dth)(?=\b|[A-Z_])|\d+|(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?)*/g;
18
19const camelCase = str => (str.match(reWords) || []).reduce((acc, next) => acc + (!acc ? next : next[0].toUpperCase() + next.slice(1)), '');
20
21function propsToStyles(props, styles, hasModifiers) {
22 const componentClassName = styles.cls2 || styles.cls1;
23 let className = props.className ? `${props.className} ${componentClassName}` : componentClassName;
24
25 if (hasModifiers) {
26 Object.keys(props).forEach(propName => {
27 const propValue = props[propName];
28 const typeOf = typeof propValue;
29
30 if (typeOf === 'boolean' || propValue == null) {
31 if (styles[propName]) {
32 if (propValue) {
33 className += ` ${styles[propName]}`;
34 }
35
36 delete props[propName];
37 } else {
38 const camelPropName = camelCase(propName);
39
40 if (styles[camelPropName]) {
41 if (propValue) {
42 className += ` ${styles[camelPropName]}`;
43 }
44
45 delete props[propName];
46 }
47 }
48 } else if (typeOf === 'string' || typeOf === 'number') {
49 const propKey = `${propName}-${propValue}`;
50
51 if (styles[propKey]) {
52 className += ` ${styles[propKey]}`;
53 delete props[propName];
54 } else {
55 const camelPropKey = camelCase(propKey);
56
57 if (styles[camelPropKey]) {
58 className += ` ${styles[camelPropKey]}`;
59 delete props[propName];
60 }
61 }
62 }
63 });
64 }
65
66 return className;
67}
68
69function styled(type, options, settings) {
70 if (process.env.NODE_ENV !== "production") {
71 if (settings == null) throw new Error('This styled() template tag was mistakenly evaluated at runtime. ' + 'Make sure astroturf is properly configured to compile this file');
72 if (typeof settings === 'string') throw new Error('It looks like you have incompatible astroturf versions in your app. ' + 'This runtime expects styles compiled with a newer version of astroturf, ' + 'ensure that your versions are properly deduped and upgraded. ');
73 }
74
75 const {
76 displayName,
77 attrs,
78 vars,
79 variants,
80 styles
81 } = settings;
82 options = options || {
83 allowAs: typeof type === 'string'
84 }; // always passthrough if the type is a styled component
85
86 const allowAs = type.isAstroturf ? false : options.allowAs;
87 const hasModifiers = Object.keys(styles).some(className => className !== (styles.cls2 || styles.cls1));
88 const decorated = /*#__PURE__*/(0, _react.forwardRef)((rawProps, ref) => {
89 const props = attrs ? attrs(rawProps) : rawProps;
90 const childProps = Object.assign({}, props, {
91 ref
92 });
93 if (allowAs) delete childProps.as;
94 childProps.style = (0, _jsx.varsToStyles)(childProps, vars);
95 childProps.className = propsToStyles(childProps, styles, hasModifiers);
96 if (variants) childProps.className += ` ${(0, _jsx.resolveVariants)(variants)}`;
97 return /*#__PURE__*/(0, _react.createElement)(allowAs && props.as ? props.as : type, childProps);
98 });
99 decorated.displayName = displayName;
100
101 decorated.withComponent = nextType => styled(nextType, options, settings);
102
103 decorated.isAstroturf = true;
104 return decorated;
105}
106
107var _default = styled;
108exports.default = _default;
\No newline at end of file