@makeswift/runtime 0.0.20 → 0.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/dist/Box.cjs.js +502 -0
  2. package/dist/Box.cjs.js.map +1 -0
  3. package/dist/Box.es.js +496 -0
  4. package/dist/Box.es.js.map +1 -0
  5. package/dist/Button.cjs.js +308 -0
  6. package/dist/Button.cjs.js.map +1 -0
  7. package/dist/Button.es.js +301 -0
  8. package/dist/Button.es.js.map +1 -0
  9. package/dist/Carousel.cjs.js +487 -0
  10. package/dist/Carousel.cjs.js.map +1 -0
  11. package/dist/Carousel.es.js +481 -0
  12. package/dist/Carousel.es.js.map +1 -0
  13. package/dist/Countdown.cjs.js +340 -0
  14. package/dist/Countdown.cjs.js.map +1 -0
  15. package/dist/Countdown.es.js +334 -0
  16. package/dist/Countdown.es.js.map +1 -0
  17. package/dist/Divider.cjs.js +115 -0
  18. package/dist/Divider.cjs.js.map +1 -0
  19. package/dist/Divider.es.js +109 -0
  20. package/dist/Divider.es.js.map +1 -0
  21. package/dist/Embed.cjs.js +129 -0
  22. package/dist/Embed.cjs.js.map +1 -0
  23. package/dist/Embed.es.js +123 -0
  24. package/dist/Embed.es.js.map +1 -0
  25. package/dist/Form.cjs.js +1705 -0
  26. package/dist/Form.cjs.js.map +1 -0
  27. package/dist/Form.es.js +1677 -0
  28. package/dist/Form.es.js.map +1 -0
  29. package/dist/Image.cjs2.js +148 -0
  30. package/dist/Image.cjs2.js.map +1 -0
  31. package/dist/Image.es2.js +141 -0
  32. package/dist/Image.es2.js.map +1 -0
  33. package/dist/Navigation.cjs.js +736 -0
  34. package/dist/Navigation.cjs.js.map +1 -0
  35. package/dist/Navigation.es.js +710 -0
  36. package/dist/Navigation.es.js.map +1 -0
  37. package/dist/Root.cjs.js +143 -0
  38. package/dist/Root.cjs.js.map +1 -0
  39. package/dist/Root.es.js +137 -0
  40. package/dist/Root.es.js.map +1 -0
  41. package/dist/SocialLinks.cjs.js +900 -0
  42. package/dist/SocialLinks.cjs.js.map +1 -0
  43. package/dist/SocialLinks.es.js +874 -0
  44. package/dist/SocialLinks.es.js.map +1 -0
  45. package/dist/Text.cjs.js +475 -0
  46. package/dist/Text.cjs.js.map +1 -0
  47. package/dist/Text.es.js +467 -0
  48. package/dist/Text.es.js.map +1 -0
  49. package/dist/Video.cjs.js +121 -0
  50. package/dist/Video.cjs.js.map +1 -0
  51. package/dist/Video.es.js +114 -0
  52. package/dist/Video.es.js.map +1 -0
  53. package/dist/builder.cjs.js +1 -0
  54. package/dist/builder.cjs.js.map +1 -1
  55. package/dist/builder.es.js +1 -0
  56. package/dist/builder.es.js.map +1 -1
  57. package/dist/color.cjs.js +8 -0
  58. package/dist/color.cjs.js.map +1 -0
  59. package/dist/color.es.js +6 -0
  60. package/dist/color.es.js.map +1 -0
  61. package/dist/components.cjs.js +81 -58
  62. package/dist/components.cjs.js.map +1 -1
  63. package/dist/components.es.js +42 -18
  64. package/dist/components.es.js.map +1 -1
  65. package/dist/control-serialization.cjs.js +1 -0
  66. package/dist/control-serialization.cjs.js.map +1 -1
  67. package/dist/control-serialization.es.js +1 -0
  68. package/dist/control-serialization.es.js.map +1 -1
  69. package/dist/controls.cjs.js +7 -5
  70. package/dist/controls.cjs.js.map +1 -1
  71. package/dist/controls.es.js +2 -1
  72. package/dist/controls.es.js.map +1 -1
  73. package/dist/cssMediaRules.cjs.js +222 -0
  74. package/dist/cssMediaRules.cjs.js.map +1 -0
  75. package/dist/cssMediaRules.es.js +213 -0
  76. package/dist/cssMediaRules.es.js.map +1 -0
  77. package/dist/descriptors.cjs.js.map +1 -1
  78. package/dist/descriptors.es.js +1 -1
  79. package/dist/descriptors.es.js.map +1 -1
  80. package/dist/image.cjs.js +6 -6
  81. package/dist/image.cjs.js.map +1 -1
  82. package/dist/image.es.js +6 -5
  83. package/dist/image.es.js.map +1 -1
  84. package/dist/index.cjs.js +1454 -7774
  85. package/dist/index.cjs.js.map +1 -1
  86. package/dist/index.cjs2.js +522 -0
  87. package/dist/index.cjs2.js.map +1 -0
  88. package/dist/index.cjs3.js +141 -0
  89. package/dist/index.cjs3.js.map +1 -0
  90. package/dist/index.cjs4.js +18 -0
  91. package/dist/index.cjs4.js.map +1 -0
  92. package/dist/index.es.js +1354 -7699
  93. package/dist/index.es.js.map +1 -1
  94. package/dist/index.es2.js +514 -0
  95. package/dist/index.es2.js.map +1 -0
  96. package/dist/index.es3.js +134 -0
  97. package/dist/index.es3.js.map +1 -0
  98. package/dist/index.es4.js +13 -0
  99. package/dist/index.es4.js.map +1 -0
  100. package/dist/main.cjs.js +1 -0
  101. package/dist/main.cjs.js.map +1 -1
  102. package/dist/main.es.js +1 -0
  103. package/dist/main.es.js.map +1 -1
  104. package/dist/next.cjs.js +20 -201
  105. package/dist/next.cjs.js.map +1 -1
  106. package/dist/next.es.js +13 -192
  107. package/dist/next.es.js.map +1 -1
  108. package/dist/placeholders.cjs.js +13 -0
  109. package/dist/placeholders.cjs.js.map +1 -0
  110. package/dist/placeholders.es.js +12 -0
  111. package/dist/placeholders.es.js.map +1 -0
  112. package/dist/react-builder-preview.cjs.js +23 -32
  113. package/dist/react-builder-preview.cjs.js.map +1 -1
  114. package/dist/react-builder-preview.es.js +13 -22
  115. package/dist/react-builder-preview.es.js.map +1 -1
  116. package/dist/react-page.cjs.js +5 -4
  117. package/dist/react-page.cjs.js.map +1 -1
  118. package/dist/react-page.es.js +3 -2
  119. package/dist/react-page.es.js.map +1 -1
  120. package/dist/react.cjs.js +17 -28
  121. package/dist/react.cjs.js.map +1 -1
  122. package/dist/react.es.js +9 -20
  123. package/dist/react.es.js.map +1 -1
  124. package/dist/types/components/builtin/Box/Box.d.ts +1 -4
  125. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  126. package/dist/types/components/builtin/Box/animations.d.ts +1 -8
  127. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  128. package/dist/types/components/builtin/Box/constants.d.ts +9 -0
  129. package/dist/types/components/builtin/Box/constants.d.ts.map +1 -0
  130. package/dist/types/components/builtin/Box/contants.d.ts +9 -0
  131. package/dist/types/components/builtin/Box/contants.d.ts.map +1 -0
  132. package/dist/types/components/builtin/Box/index.d.ts +2 -2
  133. package/dist/types/components/builtin/Box/index.d.ts.map +1 -1
  134. package/dist/types/components/builtin/Box/register.d.ts +3 -0
  135. package/dist/types/components/builtin/Box/register.d.ts.map +1 -0
  136. package/dist/types/components/builtin/Button/Button.d.ts +1 -4
  137. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  138. package/dist/types/components/builtin/Button/constants.d.ts +2 -0
  139. package/dist/types/components/builtin/Button/constants.d.ts.map +1 -0
  140. package/dist/types/components/builtin/Button/contants.d.ts +2 -0
  141. package/dist/types/components/builtin/Button/contants.d.ts.map +1 -0
  142. package/dist/types/components/builtin/Button/index.d.ts +1 -1
  143. package/dist/types/components/builtin/Button/index.d.ts.map +1 -1
  144. package/dist/types/components/builtin/Button/register.d.ts +3 -0
  145. package/dist/types/components/builtin/Button/register.d.ts.map +1 -0
  146. package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -3
  147. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  148. package/dist/types/components/builtin/Carousel/index.d.ts +1 -1
  149. package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -1
  150. package/dist/types/components/builtin/Carousel/register.d.ts +3 -0
  151. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -0
  152. package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -3
  153. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  154. package/dist/types/components/builtin/Countdown/index.d.ts +1 -1
  155. package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -1
  156. package/dist/types/components/builtin/Countdown/register.d.ts +3 -0
  157. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -0
  158. package/dist/types/components/builtin/Divider/Divider.d.ts +0 -3
  159. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  160. package/dist/types/components/builtin/Divider/index.d.ts +1 -1
  161. package/dist/types/components/builtin/Divider/index.d.ts.map +1 -1
  162. package/dist/types/components/builtin/Divider/register.d.ts +3 -0
  163. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -0
  164. package/dist/types/components/builtin/Embed/Embed.d.ts +0 -3
  165. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  166. package/dist/types/components/builtin/Embed/index.d.ts +1 -1
  167. package/dist/types/components/builtin/Embed/index.d.ts.map +1 -1
  168. package/dist/types/components/builtin/Embed/register.d.ts +3 -0
  169. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -0
  170. package/dist/types/components/builtin/Form/Form.d.ts +1 -10
  171. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  172. package/dist/types/components/builtin/Form/constants.d.ts +1 -0
  173. package/dist/types/components/builtin/Form/constants.d.ts.map +1 -0
  174. package/dist/types/components/builtin/Form/context/FormContext.d.ts +6 -0
  175. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  176. package/dist/types/components/builtin/Form/index.d.ts +1 -1
  177. package/dist/types/components/builtin/Form/index.d.ts.map +1 -1
  178. package/dist/types/components/builtin/Form/register.d.ts +3 -0
  179. package/dist/types/components/builtin/Form/register.d.ts.map +1 -0
  180. package/dist/types/components/builtin/Image/Image.d.ts +0 -3
  181. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  182. package/dist/types/components/builtin/Image/index.d.ts +1 -1
  183. package/dist/types/components/builtin/Image/index.d.ts.map +1 -1
  184. package/dist/types/components/builtin/Image/register.d.ts +3 -0
  185. package/dist/types/components/builtin/Image/register.d.ts.map +1 -0
  186. package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -3
  187. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  188. package/dist/types/components/builtin/Navigation/index.d.ts +1 -1
  189. package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -1
  190. package/dist/types/components/builtin/Navigation/register.d.ts +3 -0
  191. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -0
  192. package/dist/types/components/builtin/Root/Root.d.ts +0 -2
  193. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  194. package/dist/types/components/builtin/Root/index.d.ts +1 -1
  195. package/dist/types/components/builtin/Root/index.d.ts.map +1 -1
  196. package/dist/types/components/builtin/Root/register.d.ts +3 -0
  197. package/dist/types/components/builtin/Root/register.d.ts.map +1 -0
  198. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -3
  199. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  200. package/dist/types/components/builtin/SocialLinks/index.d.ts +1 -1
  201. package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -1
  202. package/dist/types/components/builtin/SocialLinks/register.d.ts +3 -0
  203. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -0
  204. package/dist/types/components/builtin/Text/Text.d.ts +0 -3
  205. package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
  206. package/dist/types/components/builtin/Text/index.d.ts +1 -1
  207. package/dist/types/components/builtin/Text/index.d.ts.map +1 -1
  208. package/dist/types/components/builtin/Text/register.d.ts +3 -0
  209. package/dist/types/components/builtin/Text/register.d.ts.map +1 -0
  210. package/dist/types/components/builtin/Video/Video.d.ts +0 -3
  211. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  212. package/dist/types/components/builtin/Video/index.d.ts +1 -1
  213. package/dist/types/components/builtin/Video/index.d.ts.map +1 -1
  214. package/dist/types/components/builtin/Video/register.d.ts +3 -0
  215. package/dist/types/components/builtin/Video/register.d.ts.map +1 -0
  216. package/dist/types/components/builtin/index.d.ts +1 -2
  217. package/dist/types/components/builtin/index.d.ts.map +1 -1
  218. package/dist/types/components/builtin/register.d.ts +3 -0
  219. package/dist/types/components/builtin/register.d.ts.map +1 -0
  220. package/dist/types/controls/image.d.ts +15 -3
  221. package/dist/types/controls/image.d.ts.map +1 -1
  222. package/dist/types/dynamic.d.ts +2 -0
  223. package/dist/types/dynamic.d.ts.map +1 -0
  224. package/dist/types/next/plugin.d.ts +3 -0
  225. package/dist/types/next/plugin.d.ts.map +1 -0
  226. package/dist/types/next.d.ts +12 -2
  227. package/dist/types/next.d.ts.map +1 -1
  228. package/dist/types/prop-controllers/descriptors.d.ts +2 -2
  229. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  230. package/dist/types/runtimes/react/controls/control.d.ts +2 -2
  231. package/dist/types/runtimes/react/controls/control.d.ts.map +1 -1
  232. package/dist/types/runtimes/react/controls/image.d.ts +12 -3
  233. package/dist/types/runtimes/react/controls/image.d.ts.map +1 -1
  234. package/dist/useBackgrounds.cjs.js +124 -0
  235. package/dist/useBackgrounds.cjs.js.map +1 -0
  236. package/dist/useBackgrounds.es.js +123 -0
  237. package/dist/useBackgrounds.es.js.map +1 -0
  238. package/dist/useBoxShadow.cjs.js +78 -0
  239. package/dist/useBoxShadow.cjs.js.map +1 -0
  240. package/dist/useBoxShadow.es.js +77 -0
  241. package/dist/useBoxShadow.es.js.map +1 -0
  242. package/dist/useMediaQuery.cjs.js +26 -0
  243. package/dist/useMediaQuery.cjs.js.map +1 -0
  244. package/dist/useMediaQuery.es.js +25 -0
  245. package/dist/useMediaQuery.es.js.map +1 -0
  246. package/dist/usePage.cjs.js +14 -0
  247. package/dist/usePage.cjs.js.map +1 -0
  248. package/dist/usePage.es.js +13 -0
  249. package/dist/usePage.es.js.map +1 -0
  250. package/dist/useTable.cjs.js +10 -0
  251. package/dist/useTable.cjs.js.map +1 -0
  252. package/dist/useTable.es.js +9 -0
  253. package/dist/useTable.es.js.map +1 -0
  254. package/next/plugin.js +1 -0
  255. package/package.json +4 -1
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  var textInput = require("./text-input.cjs.js");
4
- var image = require("./image.cjs.js");
4
+ var color = require("./color.cjs.js");
5
5
  var shape = require("./shape.cjs.js");
6
+ var image = require("./image.cjs.js");
6
7
  var style = require("./style.cjs.js");
7
8
  exports.Checkbox = textInput.Checkbox;
8
9
  exports.CheckboxControlType = textInput.CheckboxControlType;
@@ -14,16 +15,17 @@ exports.TextArea = textInput.TextArea;
14
15
  exports.TextAreaControlType = textInput.TextAreaControlType;
15
16
  exports.TextInput = textInput.TextInput;
16
17
  exports.TextInputControlType = textInput.TextInputControlType;
17
- exports.Color = image.Color;
18
- exports.ColorControlType = image.ColorControlType;
19
- exports.Image = image.Image;
20
- exports.ImageControlType = image.ImageControlType;
18
+ exports.Color = color.Color;
19
+ exports.ColorControlType = color.ColorControlType;
21
20
  exports.Combobox = shape.Combobox;
22
21
  exports.ComboboxControlType = shape.ComboboxControlType;
23
22
  exports.List = shape.List;
24
23
  exports.ListControlType = shape.ListControlType;
25
24
  exports.Shape = shape.Shape;
26
25
  exports.ShapeControlType = shape.ShapeControlType;
26
+ exports.Image = image.Image;
27
+ exports.ImageControlType = image.ImageControlType;
28
+ exports.ImageControlValueFormat = image.ImageControlValueFormat;
27
29
  exports.Style = style.Style;
28
30
  exports.StyleControlProperty = style.StyleControlProperty;
29
31
  exports.StyleControlType = style.StyleControlType;
@@ -1 +1 @@
1
- {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  export { b as Checkbox, C as CheckboxControlType, c as Number, N as NumberControlType, d as Select, S as SelectControlType, e as TextArea, T as TextAreaControlType, f as TextInput, a as TextInputControlType } from "./text-input.es.js";
2
- export { a as Color, C as ColorControlType, b as Image, I as ImageControlType } from "./image.es.js";
2
+ export { a as Color, C as ColorControlType } from "./color.es.js";
3
3
  export { a as Combobox, C as ComboboxControlType, b as List, L as ListControlType, c as Shape, S as ShapeControlType } from "./shape.es.js";
4
+ export { b as Image, I as ImageControlType, a as ImageControlValueFormat } from "./image.es.js";
4
5
  export { b as Style, a as StyleControlProperty, S as StyleControlType } from "./style.es.js";
5
6
  //# sourceMappingURL=controls.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var styled = require("styled-components");
3
+ var next = require("./index.cjs.js");
4
+ const getIndexes = (spans, index) => {
5
+ const flattened = spans.reduce((a, s) => a.concat(s), []);
6
+ if (index < 0 || index > flattened.length)
7
+ throw new RangeError();
8
+ let remainder = index;
9
+ let rowIndex = 0;
10
+ while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {
11
+ remainder -= spans[rowIndex].length;
12
+ rowIndex += 1;
13
+ }
14
+ return [rowIndex, remainder];
15
+ };
16
+ function cssMediaRules(responsiveValues, join, strategy) {
17
+ return (props) => next.join(typeof responsiveValues === "function" ? responsiveValues(props) : responsiveValues, join, strategy).reduce((acc, { deviceId, value }) => {
18
+ const device = next.getDevice(deviceId);
19
+ const mediaQuery = next.getDeviceMediaQuery(device);
20
+ return styled.css`
21
+ ${acc}${mediaQuery} {
22
+ ${value}
23
+ }
24
+ `;
25
+ }, styled.css``);
26
+ }
27
+ function cssWidth(defaultValue = "100%") {
28
+ return (props) => styled.css`
29
+ max-width: 100%;
30
+ ${cssMediaRules([props.width], ([width = defaultValue]) => styled.css`
31
+ width: ${typeof width === "object" ? `${width.value}${width.unit}` : width};
32
+ `)}
33
+ `;
34
+ }
35
+ function getMarginSide(marginSide) {
36
+ return typeof marginSide === "object" ? `${marginSide.value}${marginSide.unit}` : marginSide;
37
+ }
38
+ function cssMargin(defaultValue = {}) {
39
+ const defaultMarginTop = defaultValue.marginTop === void 0 ? 0 : defaultValue.marginTop;
40
+ const defaultMarginRight = defaultValue.marginRight === void 0 ? "auto" : defaultValue.marginRight;
41
+ const defaultMarginBottom = defaultValue.marginBottom === void 0 ? 0 : defaultValue.marginBottom;
42
+ const defaultMarginLeft = defaultValue.marginLeft === void 0 ? "auto" : defaultValue.marginLeft;
43
+ return (props) => styled.css`
44
+ ${cssMediaRules([props.margin], ([
45
+ {
46
+ marginTop,
47
+ marginRight,
48
+ marginBottom,
49
+ marginLeft
50
+ } = {}
51
+ ]) => styled.css`
52
+ margin-top: ${getMarginSide(marginTop || defaultMarginTop)};
53
+ margin-right: ${getMarginSide(marginRight || defaultMarginRight)};
54
+ margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};
55
+ margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};
56
+ `)}
57
+ `;
58
+ }
59
+ function getPaddingSide(paddingSide) {
60
+ return typeof paddingSide === "object" ? `${paddingSide.value}${paddingSide.unit}` : paddingSide;
61
+ }
62
+ function cssPadding(defaultValue = {}) {
63
+ const defaultPaddingTop = defaultValue.paddingTop === void 0 ? 0 : defaultValue.paddingTop;
64
+ const defaultPaddingRight = defaultValue.paddingRight === void 0 ? 0 : defaultValue.paddingRight;
65
+ const defaultPaddingBottom = defaultValue.paddingBottom === void 0 ? 0 : defaultValue.paddingBottom;
66
+ const defaultPaddingLeft = defaultValue.paddingLeft === void 0 ? 0 : defaultValue.paddingLeft;
67
+ return (props) => styled.css`
68
+ ${cssMediaRules([props.padding], ([
69
+ {
70
+ paddingTop,
71
+ paddingRight,
72
+ paddingBottom,
73
+ paddingLeft
74
+ } = {}
75
+ ]) => styled.css`
76
+ padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};
77
+ padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};
78
+ padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};
79
+ padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};
80
+ `)}
81
+ `;
82
+ }
83
+ const defaultBorderSide = { width: 0, style: "solid", color: null };
84
+ const getBorderSide = ({ width, style, color }) => `${width != null ? width : 0}px ${style} ${color != null ? next.colorToString(color) : "black"}`;
85
+ function cssBorder(defaultValue = {}) {
86
+ const defaultBorderTop = defaultValue.borderTop === void 0 ? defaultBorderSide : defaultValue.borderTop;
87
+ const defaultBorderRight = defaultValue.borderRight === void 0 ? defaultBorderSide : defaultValue.borderRight;
88
+ const defaultBorderBottom = defaultValue.borderBottom === void 0 ? defaultBorderSide : defaultValue.borderBottom;
89
+ const defaultBorderLeft = defaultValue.borderLeft === void 0 ? defaultBorderSide : defaultValue.borderLeft;
90
+ return (props) => styled.css`
91
+ ${cssMediaRules([props.border], ([
92
+ {
93
+ borderTop,
94
+ borderRight,
95
+ borderBottom,
96
+ borderLeft
97
+ } = {}
98
+ ]) => styled.css`
99
+ border-top: ${getBorderSide(borderTop || defaultBorderTop)};
100
+ border-right: ${getBorderSide(borderRight || defaultBorderRight)};
101
+ border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};
102
+ border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};
103
+ `)}
104
+ `;
105
+ }
106
+ function getBorderRadiusCorner(borderRadiusCorner) {
107
+ return typeof borderRadiusCorner === "object" ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}` : borderRadiusCorner;
108
+ }
109
+ function cssBorderRadius(defaultValue = {}) {
110
+ const defaultBorderTopLeftRadius = defaultValue.borderTopLeftRadius === void 0 ? 0 : defaultValue.borderTopLeftRadius;
111
+ const defaultBorderTopRightRadius = defaultValue.borderTopRightRadius === void 0 ? 0 : defaultValue.borderTopRightRadius;
112
+ const defaultPaddingBottom = defaultValue.borderBottomLeftRadius === void 0 ? 0 : defaultValue.borderBottomLeftRadius;
113
+ const defaultPaddingLeft = defaultValue.borderBottomRightRadius === void 0 ? 0 : defaultValue.borderBottomRightRadius;
114
+ return (props) => styled.css`
115
+ ${cssMediaRules([props.borderRadius], ([
116
+ {
117
+ borderTopLeftRadius,
118
+ borderTopRightRadius,
119
+ borderBottomLeftRadius,
120
+ borderBottomRightRadius
121
+ } = {}
122
+ ]) => styled.css`
123
+ border-top-left-radius: ${getBorderRadiusCorner(borderTopLeftRadius || defaultBorderTopLeftRadius)};
124
+ border-top-right-radius: ${getBorderRadiusCorner(borderTopRightRadius || defaultBorderTopRightRadius)};
125
+ border-bottom-left-radius: ${getBorderRadiusCorner(borderBottomLeftRadius || defaultPaddingBottom)};
126
+ border-bottom-right-radius: ${getBorderRadiusCorner(borderBottomRightRadius || defaultPaddingLeft)};
127
+ `)}
128
+ `;
129
+ }
130
+ const getBoxShadow = (shadows) => shadows.map(({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) => `${inset ? "inset " : ""}${offsetX.toFixed(1)}px ${offsetY.toFixed(1)}px ${blurRadius}px ${spreadRadius}px ${color != null ? next.colorToString(color) : "rgba(0,0,0,0.2)"}`).filter(Boolean).join();
131
+ function cssBoxShadow(defaultValue = []) {
132
+ return (props) => styled.css`
133
+ ${cssMediaRules([props.boxShadow], ([boxShadow = defaultValue]) => styled.css`
134
+ box-shadow: ${getBoxShadow(boxShadow)};
135
+ `)}
136
+ `;
137
+ }
138
+ const floor = (d) => (v) => Math.floor(10 ** d * v) / 10 ** d;
139
+ function cssGridItem() {
140
+ return (props) => styled.css`
141
+ display: flex;
142
+
143
+ /* TODO: A default span of 12 won't work once the column count is modifiable. */
144
+ ${cssMediaRules([props.grid, props.columnGap, props.rowGap], ([
145
+ { spans, count } = { spans: [[12]], count: 12 },
146
+ columnGap = { value: 0, unit: "px" },
147
+ rowGap = { value: 0, unit: "px" }
148
+ ]) => {
149
+ const [rowIndex, columnIndex] = getIndexes(spans, props.index);
150
+ const firstCol = columnIndex === 0;
151
+ const lastCol = columnIndex === spans[rowIndex].length - 1;
152
+ const span = spans[rowIndex][columnIndex];
153
+ const fraction = floor(5)(span / count);
154
+ const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`;
155
+ const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${columnGap.unit} / 2`;
156
+ const iePrecisionError = "0.01px";
157
+ const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`;
158
+ const firstRow = rowIndex === 0;
159
+ const lastRow = rowIndex === spans.length - 1;
160
+ return span === 0 ? { display: "none" } : {
161
+ flexBasis,
162
+ minWidth: flexBasis,
163
+ maxWidth: flexBasis,
164
+ paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,
165
+ paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,
166
+ paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,
167
+ paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`
168
+ };
169
+ })}
170
+ `;
171
+ }
172
+ function cssTextStyle(defaultValue = {
173
+ fontFamily: null,
174
+ letterSpacing: null,
175
+ fontSize: null,
176
+ fontWeight: null,
177
+ textTransform: [],
178
+ fontStyle: []
179
+ }) {
180
+ return (props) => styled.css`
181
+ ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {
182
+ const {
183
+ fontSize,
184
+ fontWeight,
185
+ fontStyle = [],
186
+ textTransform = [],
187
+ letterSpacing,
188
+ fontFamily
189
+ } = textStyle;
190
+ return styled.css`
191
+ ${fontFamily != null ? styled.css`
192
+ font-family: '${fontFamily}';
193
+ ` : ""};
194
+ ${fontWeight != null ? styled.css`
195
+ font-weight: ${fontWeight};
196
+ ` : ""};
197
+ ${letterSpacing != null ? styled.css`
198
+ letter-spacing: ${letterSpacing}px;
199
+ ` : ""};
200
+ ${fontSize != null ? styled.css`
201
+ font-size: ${`${fontSize.value}${fontSize.unit}`};
202
+ ` : ""};
203
+ ${textTransform.includes("uppercase") ? styled.css`
204
+ text-transform: uppercase;
205
+ ` : ""};
206
+ ${fontStyle.includes("italic") ? styled.css`
207
+ font-style: italic;
208
+ ` : ""};
209
+ `;
210
+ })}
211
+ `;
212
+ }
213
+ exports.cssBorder = cssBorder;
214
+ exports.cssBorderRadius = cssBorderRadius;
215
+ exports.cssBoxShadow = cssBoxShadow;
216
+ exports.cssGridItem = cssGridItem;
217
+ exports.cssMargin = cssMargin;
218
+ exports.cssMediaRules = cssMediaRules;
219
+ exports.cssPadding = cssPadding;
220
+ exports.cssTextStyle = cssTextStyle;
221
+ exports.cssWidth = cssWidth;
222
+ //# sourceMappingURL=cssMediaRules.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssMediaRules.cjs.js","sources":["../src/components/utils/columns.ts","../src/components/utils/cssMediaRules.ts"],"sourcesContent":["export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["joinResponsiveValues","getDevice","getDeviceMediaQuery","css","colorToString"],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { css } from "styled-components";
2
+ import { H as join, I as getDevice, J as getDeviceMediaQuery, o as colorToString } from "./index.es.js";
3
+ const getIndexes = (spans, index) => {
4
+ const flattened = spans.reduce((a, s) => a.concat(s), []);
5
+ if (index < 0 || index > flattened.length)
6
+ throw new RangeError();
7
+ let remainder = index;
8
+ let rowIndex = 0;
9
+ while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {
10
+ remainder -= spans[rowIndex].length;
11
+ rowIndex += 1;
12
+ }
13
+ return [rowIndex, remainder];
14
+ };
15
+ function cssMediaRules(responsiveValues, join$1, strategy) {
16
+ return (props) => join(typeof responsiveValues === "function" ? responsiveValues(props) : responsiveValues, join$1, strategy).reduce((acc, { deviceId, value }) => {
17
+ const device = getDevice(deviceId);
18
+ const mediaQuery = getDeviceMediaQuery(device);
19
+ return css`
20
+ ${acc}${mediaQuery} {
21
+ ${value}
22
+ }
23
+ `;
24
+ }, css``);
25
+ }
26
+ function cssWidth(defaultValue = "100%") {
27
+ return (props) => css`
28
+ max-width: 100%;
29
+ ${cssMediaRules([props.width], ([width = defaultValue]) => css`
30
+ width: ${typeof width === "object" ? `${width.value}${width.unit}` : width};
31
+ `)}
32
+ `;
33
+ }
34
+ function getMarginSide(marginSide) {
35
+ return typeof marginSide === "object" ? `${marginSide.value}${marginSide.unit}` : marginSide;
36
+ }
37
+ function cssMargin(defaultValue = {}) {
38
+ const defaultMarginTop = defaultValue.marginTop === void 0 ? 0 : defaultValue.marginTop;
39
+ const defaultMarginRight = defaultValue.marginRight === void 0 ? "auto" : defaultValue.marginRight;
40
+ const defaultMarginBottom = defaultValue.marginBottom === void 0 ? 0 : defaultValue.marginBottom;
41
+ const defaultMarginLeft = defaultValue.marginLeft === void 0 ? "auto" : defaultValue.marginLeft;
42
+ return (props) => css`
43
+ ${cssMediaRules([props.margin], ([
44
+ {
45
+ marginTop,
46
+ marginRight,
47
+ marginBottom,
48
+ marginLeft
49
+ } = {}
50
+ ]) => css`
51
+ margin-top: ${getMarginSide(marginTop || defaultMarginTop)};
52
+ margin-right: ${getMarginSide(marginRight || defaultMarginRight)};
53
+ margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};
54
+ margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};
55
+ `)}
56
+ `;
57
+ }
58
+ function getPaddingSide(paddingSide) {
59
+ return typeof paddingSide === "object" ? `${paddingSide.value}${paddingSide.unit}` : paddingSide;
60
+ }
61
+ function cssPadding(defaultValue = {}) {
62
+ const defaultPaddingTop = defaultValue.paddingTop === void 0 ? 0 : defaultValue.paddingTop;
63
+ const defaultPaddingRight = defaultValue.paddingRight === void 0 ? 0 : defaultValue.paddingRight;
64
+ const defaultPaddingBottom = defaultValue.paddingBottom === void 0 ? 0 : defaultValue.paddingBottom;
65
+ const defaultPaddingLeft = defaultValue.paddingLeft === void 0 ? 0 : defaultValue.paddingLeft;
66
+ return (props) => css`
67
+ ${cssMediaRules([props.padding], ([
68
+ {
69
+ paddingTop,
70
+ paddingRight,
71
+ paddingBottom,
72
+ paddingLeft
73
+ } = {}
74
+ ]) => css`
75
+ padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};
76
+ padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};
77
+ padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};
78
+ padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};
79
+ `)}
80
+ `;
81
+ }
82
+ const defaultBorderSide = { width: 0, style: "solid", color: null };
83
+ const getBorderSide = ({ width, style, color }) => `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : "black"}`;
84
+ function cssBorder(defaultValue = {}) {
85
+ const defaultBorderTop = defaultValue.borderTop === void 0 ? defaultBorderSide : defaultValue.borderTop;
86
+ const defaultBorderRight = defaultValue.borderRight === void 0 ? defaultBorderSide : defaultValue.borderRight;
87
+ const defaultBorderBottom = defaultValue.borderBottom === void 0 ? defaultBorderSide : defaultValue.borderBottom;
88
+ const defaultBorderLeft = defaultValue.borderLeft === void 0 ? defaultBorderSide : defaultValue.borderLeft;
89
+ return (props) => css`
90
+ ${cssMediaRules([props.border], ([
91
+ {
92
+ borderTop,
93
+ borderRight,
94
+ borderBottom,
95
+ borderLeft
96
+ } = {}
97
+ ]) => css`
98
+ border-top: ${getBorderSide(borderTop || defaultBorderTop)};
99
+ border-right: ${getBorderSide(borderRight || defaultBorderRight)};
100
+ border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};
101
+ border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};
102
+ `)}
103
+ `;
104
+ }
105
+ function getBorderRadiusCorner(borderRadiusCorner) {
106
+ return typeof borderRadiusCorner === "object" ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}` : borderRadiusCorner;
107
+ }
108
+ function cssBorderRadius(defaultValue = {}) {
109
+ const defaultBorderTopLeftRadius = defaultValue.borderTopLeftRadius === void 0 ? 0 : defaultValue.borderTopLeftRadius;
110
+ const defaultBorderTopRightRadius = defaultValue.borderTopRightRadius === void 0 ? 0 : defaultValue.borderTopRightRadius;
111
+ const defaultPaddingBottom = defaultValue.borderBottomLeftRadius === void 0 ? 0 : defaultValue.borderBottomLeftRadius;
112
+ const defaultPaddingLeft = defaultValue.borderBottomRightRadius === void 0 ? 0 : defaultValue.borderBottomRightRadius;
113
+ return (props) => css`
114
+ ${cssMediaRules([props.borderRadius], ([
115
+ {
116
+ borderTopLeftRadius,
117
+ borderTopRightRadius,
118
+ borderBottomLeftRadius,
119
+ borderBottomRightRadius
120
+ } = {}
121
+ ]) => css`
122
+ border-top-left-radius: ${getBorderRadiusCorner(borderTopLeftRadius || defaultBorderTopLeftRadius)};
123
+ border-top-right-radius: ${getBorderRadiusCorner(borderTopRightRadius || defaultBorderTopRightRadius)};
124
+ border-bottom-left-radius: ${getBorderRadiusCorner(borderBottomLeftRadius || defaultPaddingBottom)};
125
+ border-bottom-right-radius: ${getBorderRadiusCorner(borderBottomRightRadius || defaultPaddingLeft)};
126
+ `)}
127
+ `;
128
+ }
129
+ const getBoxShadow = (shadows) => shadows.map(({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) => `${inset ? "inset " : ""}${offsetX.toFixed(1)}px ${offsetY.toFixed(1)}px ${blurRadius}px ${spreadRadius}px ${color != null ? colorToString(color) : "rgba(0,0,0,0.2)"}`).filter(Boolean).join();
130
+ function cssBoxShadow(defaultValue = []) {
131
+ return (props) => css`
132
+ ${cssMediaRules([props.boxShadow], ([boxShadow = defaultValue]) => css`
133
+ box-shadow: ${getBoxShadow(boxShadow)};
134
+ `)}
135
+ `;
136
+ }
137
+ const floor = (d) => (v) => Math.floor(10 ** d * v) / 10 ** d;
138
+ function cssGridItem() {
139
+ return (props) => css`
140
+ display: flex;
141
+
142
+ /* TODO: A default span of 12 won't work once the column count is modifiable. */
143
+ ${cssMediaRules([props.grid, props.columnGap, props.rowGap], ([
144
+ { spans, count } = { spans: [[12]], count: 12 },
145
+ columnGap = { value: 0, unit: "px" },
146
+ rowGap = { value: 0, unit: "px" }
147
+ ]) => {
148
+ const [rowIndex, columnIndex] = getIndexes(spans, props.index);
149
+ const firstCol = columnIndex === 0;
150
+ const lastCol = columnIndex === spans[rowIndex].length - 1;
151
+ const span = spans[rowIndex][columnIndex];
152
+ const fraction = floor(5)(span / count);
153
+ const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`;
154
+ const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${columnGap.unit} / 2`;
155
+ const iePrecisionError = "0.01px";
156
+ const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`;
157
+ const firstRow = rowIndex === 0;
158
+ const lastRow = rowIndex === spans.length - 1;
159
+ return span === 0 ? { display: "none" } : {
160
+ flexBasis,
161
+ minWidth: flexBasis,
162
+ maxWidth: flexBasis,
163
+ paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,
164
+ paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,
165
+ paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,
166
+ paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`
167
+ };
168
+ })}
169
+ `;
170
+ }
171
+ function cssTextStyle(defaultValue = {
172
+ fontFamily: null,
173
+ letterSpacing: null,
174
+ fontSize: null,
175
+ fontWeight: null,
176
+ textTransform: [],
177
+ fontStyle: []
178
+ }) {
179
+ return (props) => css`
180
+ ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {
181
+ const {
182
+ fontSize,
183
+ fontWeight,
184
+ fontStyle = [],
185
+ textTransform = [],
186
+ letterSpacing,
187
+ fontFamily
188
+ } = textStyle;
189
+ return css`
190
+ ${fontFamily != null ? css`
191
+ font-family: '${fontFamily}';
192
+ ` : ""};
193
+ ${fontWeight != null ? css`
194
+ font-weight: ${fontWeight};
195
+ ` : ""};
196
+ ${letterSpacing != null ? css`
197
+ letter-spacing: ${letterSpacing}px;
198
+ ` : ""};
199
+ ${fontSize != null ? css`
200
+ font-size: ${`${fontSize.value}${fontSize.unit}`};
201
+ ` : ""};
202
+ ${textTransform.includes("uppercase") ? css`
203
+ text-transform: uppercase;
204
+ ` : ""};
205
+ ${fontStyle.includes("italic") ? css`
206
+ font-style: italic;
207
+ ` : ""};
208
+ `;
209
+ })}
210
+ `;
211
+ }
212
+ export { cssWidth as a, cssMargin as b, cssMediaRules as c, cssPadding as d, cssBorder as e, cssBorderRadius as f, cssBoxShadow as g, cssGridItem as h, cssTextStyle as i };
213
+ //# sourceMappingURL=cssMediaRules.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssMediaRules.es.js","sources":["../src/components/utils/columns.ts","../src/components/utils/cssMediaRules.ts"],"sourcesContent":["export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["join","joinResponsiveValues"],"mappings":";;AAAa,MAAA,aAAa,CAAC,OAA6B,UAAoC;AACpF,QAAA,YAAY,MAAM,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAE,CAAA;AAEpD,MAAA,QAAQ,KAAK,QAAQ,UAAU;AAAQ,UAAM,IAAI,WAAW;AAEhE,MAAI,YAAY;AAChB,MAAI,WAAW;AAEf,SAAO,WAAW,MAAM,SAAS,KAAK,aAAa,MAAM,UAAU,QAAQ;AACzE,iBAAa,MAAM,UAAU;AACjB,gBAAA;AAAA,EACd;AAEO,SAAA,CAAC,UAAU,SAAS;AAC7B;ACoCE,uBAAA,kBACAA,QAGA,UACwB;AACxB,SAAO,WACLC,KACE,OAAO,qBAAqB,aAAa,iBAAiB,KAAK,IAAI,kBACnED,QACA,QACF,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,YAAY;AAC/B,UAAA,SAAS,UAAU,QAAQ;AAC3B,UAAA,aAAa,oBAAoB,MAAM;AAEtC,WAAA;AAAA,UACH,MAAM;AAAA,YACJ;AAAA;AAAA;AAAA,EAAA,GAGL,KAAiB;AACxB;AAEO,kBACL,eAA6D,QAChB;AAC7C,SAAO,CAAS,UAAA;AAAA;AAAA,MAEZ,cACA,CAAC,MAAM,KAAK,GACZ,CAAC,CAAC,QAAQ,kBAAkB;AAAA,iBACjB,OAAO,UAAU,WAAW,GAAG,MAAM,QAAQ,MAAM,SAAS;AAAA,OAEzE;AAAA;AAEJ;AAEA,uBAAuB,YAA2D;AAChF,SAAO,OAAO,eAAe,WAAW,GAAG,WAAW,QAAQ,WAAW,SAAS;AACpF;AAGE,mBAAA,eAKI,IAC2C;AAC/C,QAAM,mBAAmB,aAAa,cAAc,SAAY,IAAI,aAAa;AACjF,QAAM,qBACJ,aAAa,gBAAgB,SAAY,SAAS,aAAa;AACjE,QAAM,sBACJ,aAAa,iBAAiB,SAAY,IAAI,aAAa;AAC7D,QAAM,oBAAoB,aAAa,eAAe,SAAY,SAAS,aAAa;AAExF,SAAO,CAAS,UAAA;AAAA,MACZ,cACA,CAAC,MAAM,MAAM,GACb,CAAC;AAAA,IACC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,CAAC;AAAA,QACD;AAAA,sBACU,cAAc,aAAa,gBAAgB;AAAA,wBACzC,cAAc,eAAe,kBAAkB;AAAA,yBAC9C,cAAc,gBAAgB,mBAAmB;AAAA,uBACnD,cAAc,cAAc,iBAAiB;AAAA,OAEhE;AAAA;AAEJ;AAEA,wBAAwB,aAA6D;AACnF,SAAO,OAAO,gBAAgB,WAAW,GAAG,YAAY,QAAQ,YAAY,SAAS;AACvF;AAGE,oBAAA,eAKI,IAC6C;AACjD,QAAM,oBAAoB,aAAa,eAAe,SAAY,IAAI,aAAa;AACnF,QAAM,sBACJ,aAAa,iBAAiB,SAAY,IAAI,aAAa;AAC7D,QAAM,uBACJ,aAAa,kBAAkB,SAAY,IAAI,aAAa;AAC9D,QAAM,qBAAqB,aAAa,gBAAgB,SAAY,IAAI,aAAa;AAErF,SAAO,CAAS,UAAA;AAAA,MACZ,cACA,CAAC,MAAM,OAAO,GACd,CAAC;AAAA,IACC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,CAAC;AAAA,QACD;AAAA,uBACW,eAAe,cAAc,iBAAiB;AAAA,yBAC5C,eAAe,gBAAgB,mBAAmB;AAAA,0BACjD,eAAe,iBAAiB,oBAAoB;AAAA,wBACtD,eAAe,eAAe,kBAAkB;AAAA,OAEpE;AAAA;AAEJ;AAEA,MAAM,oBAAoB,EAAE,OAAO,GAAG,OAAO,SAAS,OAAO;AAE7D,MAAM,gBAAgB,CAAC,EAAE,OAAO,OAAO,YACrC,GAAG,SAAS,OAAO,QAAQ,OAAO,SAAS,SAAS,OAAO,cAAc,KAAK,IAAI;AAGlF,mBAAA,eAKI,IAC2E;AAC/E,QAAM,mBACJ,aAAa,cAAc,SAAY,oBAAoB,aAAa;AAC1E,QAAM,qBACJ,aAAa,gBAAgB,SAAY,oBAAoB,aAAa;AAC5E,QAAM,sBACJ,aAAa,iBAAiB,SAAY,oBAAoB,aAAa;AAC7E,QAAM,oBACJ,aAAa,eAAe,SAAY,oBAAoB,aAAa;AAE3E,SAAO,CAAS,UAAA;AAAA,MACZ,cACA,CAAC,MAAM,MAAM,GACb,CAAC;AAAA,IACC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,CAAC;AAAA,QACD;AAAA,sBACU,cAAc,aAAa,gBAAgB;AAAA,wBACzC,cAAc,eAAe,kBAAkB;AAAA,yBAC9C,cAAc,gBAAgB,mBAAmB;AAAA,uBACnD,cAAc,cAAc,iBAAiB;AAAA,OAEhE;AAAA;AAEJ;AAEA,+BACE,oBACA;AACA,SAAO,OAAO,uBAAuB,WACjC,GAAG,mBAAmB,QAAQ,mBAAmB,SACjD;AACN;AAGE,yBAAA,eAKI,IACuD;AAC3D,QAAM,6BACJ,aAAa,wBAAwB,SAAY,IAAI,aAAa;AACpE,QAAM,8BACJ,aAAa,yBAAyB,SAAY,IAAI,aAAa;AACrE,QAAM,uBACJ,aAAa,2BAA2B,SAAY,IAAI,aAAa;AACvE,QAAM,qBACJ,aAAa,4BAA4B,SAAY,IAAI,aAAa;AAExE,SAAO,CAAS,UAAA;AAAA,MACZ,cACA,CAAC,MAAM,YAAY,GACnB,CAAC;AAAA,IACC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,CAAC;AAAA,QACD;AAAA,kCACsB,sBACxB,uBAAuB,0BACzB;AAAA,mCAC2B,sBACzB,wBAAwB,2BAC1B;AAAA,qCAC6B,sBAC3B,0BAA0B,oBAC5B;AAAA,sCAC8B,sBAC5B,2BAA2B,kBAC7B;AAAA,OAEJ;AAAA;AAEJ;AAEA,MAAM,eAAe,CAAC,YACpB,QACG,IACC,CAAC,EAAE,SAAS,EAAE,OAAO,SAAS,SAAS,YAAY,cAAc,cAC/D,GAAG,QAAQ,WAAW,KAAK,QAAQ,QAAQ,CAAC,OAAO,QAAQ,QACzD,CACF,OAAO,gBAAgB,kBACrB,SAAS,OAAO,cAAc,KAAK,IAAI,mBAE7C,EACC,OAAO,OAAO,EACd;AAGH,sBAAA,eAA8B,IACuD;AACrF,SAAO,CAAS,UAAA;AAAA,MACZ,cACA,CAAC,MAAM,SAAS,GAChB,CAAC,CAAC,YAAY,kBAAkB;AAAA,sBAChB,aAAa,SAAS;AAAA,OAExC;AAAA;AAEJ;AAEA,MAAM,QACJ,CAAC,MACD,CAAC,MACC,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,MAAM;AAOrB,uBAAA;AACb,SAAO,CAAS,UAAA;AAAA;AAAA;AAAA;AAAA,MAIZ,cACA,CAAC,MAAM,MAAM,MAAM,WAAW,MAAM,MAAM,GAC1C,CAAC;AAAA,IACC,EAAE,OAAO,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG;AAAA,IAC9C,YAAY,EAAE,OAAO,GAAG,MAAM,KAAK;AAAA,IACnC,SAAS,EAAE,OAAO,GAAG,MAAM,KAAK;AAAA,QAC5B;AACJ,UAAM,CAAC,UAAU,eAAe,WAAW,OAAO,MAAM,KAAK;AAC7D,UAAM,WAAW,gBAAgB;AACjC,UAAM,UAAU,gBAAgB,MAAM,UAAU,SAAS;AACnD,UAAA,OAAO,MAAM,UAAU;AAC7B,UAAM,WAAW,MAAM,CAAC,EAAE,OAAO,KAAK;AACtC,UAAM,QAAQ,GAAG,sBAAsB,UAAU,QAAQ,UAAU;AAC7D,UAAA,cAAc,GAAG,OAAO,QAAQ,IAAI,OAAO,OAAO,OAAO,UAAU,QACvE,UAAU;AAEZ,UAAM,mBAAmB;AACnB,UAAA,YAAY,QAAQ,WAAW,iBAAiB;AACtD,UAAM,WAAW,aAAa;AACxB,UAAA,UAAU,aAAa,MAAM,SAAS;AAE5C,WAAO,SAAS,IACZ,EAAE,SAAS,WACX;AAAA,MACE;AAAA,MACA,UAAU;AAAA,MAGV,UAAU;AAAA,MACV,aAAa,WAAW,IAAI,GAAG,UAAU,QAAQ,IAAI,UAAU;AAAA,MAC/D,cAAc,UAAU,IAAI,GAAG,UAAU,QAAQ,IAAI,UAAU;AAAA,MAC/D,YAAY,WAAW,IAAI,GAAG,OAAO,QAAQ,IAAI,OAAO;AAAA,MACxD,eAAe,UAAU,IAAI,GAAG,OAAO,QAAQ,IAAI,OAAO;AAAA,IAAA;AAAA,EAC5D,CAER;AAAA;AAEJ;AAEO,sBACL,eAOI;AAAA,EACF,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe,CAAC;AAAA,EAChB,WAAW,CAAC;AACd,GACuE;AACvE,SAAO,CAAS,UAAA;AAAA,MACZ,cAAc,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,kBAAkB;AAC3D,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA,YAAY,CAAC;AAAA,MACb,gBAAgB,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,QACE;AAEG,WAAA;AAAA,UACH,cAAc,OACZ;AAAA,8BACkB;AAAA,gBAElB;AAAA,UACF,cAAc,OACZ;AAAA,6BACiB;AAAA,gBAEjB;AAAA,UACF,iBAAiB,OACf;AAAA,gCACoB;AAAA,gBAEpB;AAAA,UACF,YAAY,OACV;AAAA,2BACe,GAAG,SAAS,QAAQ,SAAS;AAAA,gBAE5C;AAAA,UACF,cAAc,SAAS,WAAW,IAChC;AAAA;AAAA,gBAGA;AAAA,UACF,UAAU,SAAS,QAAQ,IACzB;AAAA;AAAA,gBAGA;AAAA;AAAA,EAAA,CAEP;AAAA;AAEL;;"}