@makeswift/runtime 0.0.22 → 0.1.1

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 (203) 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 +1724 -0
  26. package/dist/Form.cjs.js.map +1 -0
  27. package/dist/Form.es.js +1697 -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/components.cjs.js +79 -58
  54. package/dist/components.cjs.js.map +1 -1
  55. package/dist/components.es.js +41 -18
  56. package/dist/components.es.js.map +1 -1
  57. package/dist/cssMediaRules.cjs.js +222 -0
  58. package/dist/cssMediaRules.cjs.js.map +1 -0
  59. package/dist/cssMediaRules.es.js +213 -0
  60. package/dist/cssMediaRules.es.js.map +1 -0
  61. package/dist/descriptors.es.js +1 -1
  62. package/dist/index.cjs.js +1408 -7741
  63. package/dist/index.cjs.js.map +1 -1
  64. package/dist/index.cjs2.js +522 -0
  65. package/dist/index.cjs2.js.map +1 -0
  66. package/dist/index.cjs3.js +141 -0
  67. package/dist/index.cjs3.js.map +1 -0
  68. package/dist/index.cjs4.js +18 -0
  69. package/dist/index.cjs4.js.map +1 -0
  70. package/dist/index.es.js +1339 -7697
  71. package/dist/index.es.js.map +1 -1
  72. package/dist/index.es2.js +514 -0
  73. package/dist/index.es2.js.map +1 -0
  74. package/dist/index.es3.js +134 -0
  75. package/dist/index.es3.js.map +1 -0
  76. package/dist/index.es4.js +13 -0
  77. package/dist/index.es4.js.map +1 -0
  78. package/dist/next.cjs.js +19 -201
  79. package/dist/next.cjs.js.map +1 -1
  80. package/dist/next.es.js +12 -192
  81. package/dist/next.es.js.map +1 -1
  82. package/dist/placeholders.cjs.js +13 -0
  83. package/dist/placeholders.cjs.js.map +1 -0
  84. package/dist/placeholders.es.js +12 -0
  85. package/dist/placeholders.es.js.map +1 -0
  86. package/dist/react-builder-preview.cjs.js +23 -33
  87. package/dist/react-builder-preview.cjs.js.map +1 -1
  88. package/dist/react-builder-preview.es.js +13 -23
  89. package/dist/react-builder-preview.es.js.map +1 -1
  90. package/dist/react-page.es.js +1 -1
  91. package/dist/react.cjs.js +16 -28
  92. package/dist/react.cjs.js.map +1 -1
  93. package/dist/react.es.js +8 -20
  94. package/dist/react.es.js.map +1 -1
  95. package/dist/types/components/builtin/Box/Box.d.ts +1 -4
  96. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  97. package/dist/types/components/builtin/Box/animations.d.ts +1 -8
  98. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  99. package/dist/types/components/builtin/Box/constants.d.ts +9 -0
  100. package/dist/types/components/builtin/Box/constants.d.ts.map +1 -0
  101. package/dist/types/components/builtin/Box/index.d.ts +2 -2
  102. package/dist/types/components/builtin/Box/index.d.ts.map +1 -1
  103. package/dist/types/components/builtin/Box/register.d.ts +3 -0
  104. package/dist/types/components/builtin/Box/register.d.ts.map +1 -0
  105. package/dist/types/components/builtin/Button/Button.d.ts +1 -4
  106. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  107. package/dist/types/components/builtin/Button/contants.d.ts +2 -0
  108. package/dist/types/components/builtin/Button/contants.d.ts.map +1 -0
  109. package/dist/types/components/builtin/Button/index.d.ts +1 -1
  110. package/dist/types/components/builtin/Button/index.d.ts.map +1 -1
  111. package/dist/types/components/builtin/Button/register.d.ts +3 -0
  112. package/dist/types/components/builtin/Button/register.d.ts.map +1 -0
  113. package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -3
  114. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  115. package/dist/types/components/builtin/Carousel/index.d.ts +1 -1
  116. package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -1
  117. package/dist/types/components/builtin/Carousel/register.d.ts +3 -0
  118. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -0
  119. package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -3
  120. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  121. package/dist/types/components/builtin/Countdown/index.d.ts +1 -1
  122. package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -1
  123. package/dist/types/components/builtin/Countdown/register.d.ts +3 -0
  124. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -0
  125. package/dist/types/components/builtin/Divider/Divider.d.ts +0 -3
  126. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  127. package/dist/types/components/builtin/Divider/index.d.ts +1 -1
  128. package/dist/types/components/builtin/Divider/index.d.ts.map +1 -1
  129. package/dist/types/components/builtin/Divider/register.d.ts +3 -0
  130. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -0
  131. package/dist/types/components/builtin/Embed/Embed.d.ts +0 -3
  132. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  133. package/dist/types/components/builtin/Embed/index.d.ts +1 -1
  134. package/dist/types/components/builtin/Embed/index.d.ts.map +1 -1
  135. package/dist/types/components/builtin/Embed/register.d.ts +3 -0
  136. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -0
  137. package/dist/types/components/builtin/Form/Form.d.ts +1 -10
  138. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  139. package/dist/types/components/builtin/Form/components/Field/index.d.ts +1 -1
  140. package/dist/types/components/builtin/Form/components/Field/index.d.ts.map +1 -1
  141. package/dist/types/components/builtin/Form/context/FormContext.d.ts +6 -0
  142. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  143. package/dist/types/components/builtin/Form/index.d.ts +1 -1
  144. package/dist/types/components/builtin/Form/index.d.ts.map +1 -1
  145. package/dist/types/components/builtin/Form/register.d.ts +3 -0
  146. package/dist/types/components/builtin/Form/register.d.ts.map +1 -0
  147. package/dist/types/components/{hooks/useTable.d.ts → builtin/Form/types.d.ts} +2 -6
  148. package/dist/types/components/builtin/Form/types.d.ts.map +1 -0
  149. package/dist/types/components/builtin/Image/Image.d.ts +0 -3
  150. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  151. package/dist/types/components/builtin/Image/index.d.ts +1 -1
  152. package/dist/types/components/builtin/Image/index.d.ts.map +1 -1
  153. package/dist/types/components/builtin/Image/register.d.ts +3 -0
  154. package/dist/types/components/builtin/Image/register.d.ts.map +1 -0
  155. package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -3
  156. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  157. package/dist/types/components/builtin/Navigation/index.d.ts +1 -1
  158. package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -1
  159. package/dist/types/components/builtin/Navigation/register.d.ts +3 -0
  160. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -0
  161. package/dist/types/components/builtin/Root/Root.d.ts +0 -2
  162. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  163. package/dist/types/components/builtin/Root/index.d.ts +1 -1
  164. package/dist/types/components/builtin/Root/index.d.ts.map +1 -1
  165. package/dist/types/components/builtin/Root/register.d.ts +3 -0
  166. package/dist/types/components/builtin/Root/register.d.ts.map +1 -0
  167. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -3
  168. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  169. package/dist/types/components/builtin/SocialLinks/index.d.ts +1 -1
  170. package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -1
  171. package/dist/types/components/builtin/SocialLinks/register.d.ts +3 -0
  172. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -0
  173. package/dist/types/components/builtin/Text/Text.d.ts +0 -3
  174. package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
  175. package/dist/types/components/builtin/Text/index.d.ts +1 -1
  176. package/dist/types/components/builtin/Text/index.d.ts.map +1 -1
  177. package/dist/types/components/builtin/Text/register.d.ts +3 -0
  178. package/dist/types/components/builtin/Text/register.d.ts.map +1 -0
  179. package/dist/types/components/builtin/Video/Video.d.ts +0 -3
  180. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  181. package/dist/types/components/builtin/Video/index.d.ts +1 -1
  182. package/dist/types/components/builtin/Video/index.d.ts.map +1 -1
  183. package/dist/types/components/builtin/Video/register.d.ts +3 -0
  184. package/dist/types/components/builtin/Video/register.d.ts.map +1 -0
  185. package/dist/types/components/builtin/index.d.ts +1 -2
  186. package/dist/types/components/builtin/index.d.ts.map +1 -1
  187. package/dist/types/components/builtin/register.d.ts +3 -0
  188. package/dist/types/components/builtin/register.d.ts.map +1 -0
  189. package/dist/types/components/hooks/index.d.ts +0 -1
  190. package/dist/types/components/hooks/index.d.ts.map +1 -1
  191. package/dist/types/next.d.ts +12 -2
  192. package/dist/types/next.d.ts.map +1 -1
  193. package/dist/useBoxShadow.cjs.js +78 -0
  194. package/dist/useBoxShadow.cjs.js.map +1 -0
  195. package/dist/useBoxShadow.es.js +77 -0
  196. package/dist/useBoxShadow.es.js.map +1 -0
  197. package/dist/useMediaQuery.cjs.js +26 -0
  198. package/dist/useMediaQuery.cjs.js.map +1 -0
  199. package/dist/useMediaQuery.es.js +25 -0
  200. package/dist/useMediaQuery.es.js.map +1 -0
  201. package/next/plugin.js +1 -0
  202. package/package.json +4 -1
  203. package/dist/types/components/hooks/useTable.d.ts.map +0 -1
@@ -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":"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"}
@@ -192,5 +192,5 @@ var descriptors = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePro
192
192
  WidthControlValueFormats,
193
193
  Width
194
194
  }, Symbol.toStringTag, { value: "Module" }));
195
- export { Backgrounds as B, Checkbox as C, Date as D, ElementID as E, Font as F, GapY as G, Image as I, Link as L, Margin as M, Number as N, Padding as P, ResponsiveIconRadioGroup as R, Shadows as S, Types as T, Video as V, Width as W, Border as a, BorderRadius as b, GapX as c, descriptors as d, ResponsiveSelect as e, ResponsiveNumber as f, Grid as g, TextInput as h, ResponsiveColor as i, TextStyle as j, ResponsiveOpacity as k, Images as l, ResponsiveLength as m, TextArea as n, Table as o, TableFormFields as p, NavigationLinks as q, SocialLinks as r, RichText as s, WidthControlValueFormats as t };
195
+ export { Backgrounds as B, Checkbox as C, Date as D, ElementID as E, Font as F, GapY as G, Images as I, Link as L, Margin as M, Number as N, Padding as P, ResponsiveIconRadioGroup as R, Shadows as S, Types as T, Video as V, Width as W, Border as a, BorderRadius as b, GapX as c, descriptors as d, ResponsiveSelect as e, ResponsiveNumber as f, Grid as g, TextInput as h, ResponsiveColor as i, TextStyle as j, ResponsiveLength as k, TextArea as l, Table as m, TableFormFields as n, Image as o, ResponsiveOpacity as p, NavigationLinks as q, SocialLinks as r, RichText as s, WidthControlValueFormats as t };
196
196
  //# sourceMappingURL=descriptors.es.js.map