@stylexjs/shared 0.2.0-beta.9 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. package/lib/common-types.d.ts +50 -0
  2. package/lib/common-types.js.flow +65 -0
  3. package/lib/convert-to-className.d.ts +16 -0
  4. package/lib/convert-to-className.js +17 -26
  5. package/lib/convert-to-className.js.flow +23 -0
  6. package/lib/generate-css-rule.d.ts +17 -0
  7. package/lib/generate-css-rule.js +6 -17
  8. package/lib/generate-css-rule.js.flow +17 -0
  9. package/lib/hash.d.ts +11 -0
  10. package/lib/hash.js +3 -27
  11. package/lib/hash.js.flow +10 -0
  12. package/lib/index.d.ts +42 -85
  13. package/lib/index.js +19 -27
  14. package/lib/index.js.flow +57 -3
  15. package/lib/messages.d.ts +36 -0
  16. package/lib/messages.js +28 -53
  17. package/lib/messages.js.flow +39 -0
  18. package/lib/physical-rtl/generate-ltr.d.ts +11 -0
  19. package/lib/physical-rtl/generate-ltr.js +18 -46
  20. package/lib/physical-rtl/generate-ltr.js.flow +12 -0
  21. package/lib/physical-rtl/generate-rtl.d.ts +13 -0
  22. package/lib/physical-rtl/generate-rtl.js +18 -50
  23. package/lib/physical-rtl/generate-rtl.js.flow +12 -0
  24. package/lib/preprocess-rules/PreRule.d.ts +52 -0
  25. package/lib/preprocess-rules/PreRule.js +87 -0
  26. package/lib/preprocess-rules/PreRule.js.flow +64 -0
  27. package/lib/preprocess-rules/application-order.d.ts +290 -0
  28. package/lib/preprocess-rules/application-order.js +59 -125
  29. package/lib/preprocess-rules/application-order.js.flow +241 -0
  30. package/lib/preprocess-rules/basic-validation.d.ts +13 -0
  31. package/lib/preprocess-rules/basic-validation.js +83 -0
  32. package/lib/preprocess-rules/basic-validation.js.flow +13 -0
  33. package/lib/preprocess-rules/flatten-raw-style-obj.d.ts +25 -0
  34. package/lib/preprocess-rules/flatten-raw-style-obj.js +120 -0
  35. package/lib/preprocess-rules/flatten-raw-style-obj.js.flow +27 -0
  36. package/lib/preprocess-rules/index.d.ts +18 -0
  37. package/lib/preprocess-rules/index.js +0 -9
  38. package/lib/preprocess-rules/index.js.flow +19 -0
  39. package/lib/preprocess-rules/legacy-expand-shorthands.d.ts +200 -0
  40. package/lib/preprocess-rules/legacy-expand-shorthands.js +90 -123
  41. package/lib/preprocess-rules/legacy-expand-shorthands.js.flow +179 -0
  42. package/lib/preprocess-rules/property-specificity.d.ts +89 -0
  43. package/lib/preprocess-rules/property-specificity.js +46 -74
  44. package/lib/preprocess-rules/property-specificity.js.flow +98 -0
  45. package/lib/properties/CSS Animations.json +445 -0
  46. package/lib/properties/CSS Backgrounds and Borders.json +1085 -0
  47. package/lib/properties/CSS Basic User Interface.json +365 -0
  48. package/lib/properties/CSS Box Alignment.json +245 -0
  49. package/lib/properties/CSS Box Model.json +501 -0
  50. package/lib/properties/CSS Color.json +100 -0
  51. package/lib/properties/CSS Columns.json +185 -0
  52. package/lib/properties/CSS Containment.json +203 -0
  53. package/lib/properties/CSS Counter Styles.json +56 -0
  54. package/lib/properties/CSS Display.json +20 -0
  55. package/lib/properties/CSS Flexible Box Layout.json +167 -0
  56. package/lib/properties/CSS Fonts.json +684 -0
  57. package/lib/properties/CSS Fragmentation.json +110 -0
  58. package/lib/properties/CSS Generated Content.json +38 -0
  59. package/lib/properties/CSS Grid Layout.json +500 -0
  60. package/lib/properties/CSS Images.json +91 -0
  61. package/lib/properties/CSS Inline.json +38 -0
  62. package/lib/properties/CSS Lists and Counters.json +86 -0
  63. package/lib/properties/CSS Logical Properties.json +1086 -0
  64. package/lib/properties/CSS Masking.json +399 -0
  65. package/lib/properties/CSS Miscellaneous.json +38 -0
  66. package/lib/properties/CSS Motion Path.json +132 -0
  67. package/lib/properties/CSS Overflow.json +216 -0
  68. package/lib/properties/CSS Pages.json +83 -0
  69. package/lib/properties/CSS Positioning.json +166 -0
  70. package/lib/properties/CSS Ruby.json +55 -0
  71. package/lib/properties/CSS Scroll Anchoring.json +19 -0
  72. package/lib/properties/CSS Scroll Snap.json +604 -0
  73. package/lib/properties/CSS Scrollbars.json +38 -0
  74. package/lib/properties/CSS Shapes.json +56 -0
  75. package/lib/properties/CSS Speech.json +20 -0
  76. package/lib/properties/CSS Table.json +115 -0
  77. package/lib/properties/CSS Text Decoration.json +312 -0
  78. package/lib/properties/CSS Text.json +415 -0
  79. package/lib/properties/CSS Transforms.json +188 -0
  80. package/lib/properties/CSS Transitions.json +122 -0
  81. package/lib/properties/CSS Variables.json +20 -0
  82. package/lib/properties/CSS View Transitions.json +20 -0
  83. package/lib/properties/CSS Will Change.json +20 -0
  84. package/lib/properties/CSS Writing Modes.json +92 -0
  85. package/lib/properties/Compositing and Blending.json +62 -0
  86. package/lib/properties/Filter Effects.json +38 -0
  87. package/lib/properties/MathML.json +56 -0
  88. package/lib/properties/Microsoft Extensions.json +885 -0
  89. package/lib/properties/Mozilla Extensions.json +607 -0
  90. package/lib/properties/Pointer Events.json +20 -0
  91. package/lib/properties/WebKit Extensions.json +707 -0
  92. package/lib/properties.json +10122 -0
  93. package/lib/stylex-create-theme.d.ts +26 -0
  94. package/lib/stylex-create-theme.js +62 -0
  95. package/lib/stylex-create-theme.js.flow +19 -0
  96. package/lib/stylex-create.d.ts +23 -0
  97. package/lib/stylex-create.js +30 -146
  98. package/lib/stylex-create.js.flow +30 -0
  99. package/lib/stylex-define-vars.d.ts +36 -0
  100. package/lib/stylex-define-vars.js +72 -0
  101. package/lib/stylex-define-vars.js.flow +28 -0
  102. package/lib/stylex-first-that-works.d.ts +13 -0
  103. package/lib/stylex-first-that-works.js +0 -10
  104. package/lib/stylex-first-that-works.js.flow +12 -0
  105. package/lib/stylex-include.d.ts +18 -0
  106. package/lib/stylex-include.js +0 -10
  107. package/lib/stylex-include.js.flow +20 -0
  108. package/lib/stylex-keyframes.d.ts +17 -0
  109. package/lib/stylex-keyframes.js +6 -26
  110. package/lib/stylex-keyframes.js.flow +20 -0
  111. package/lib/transform-value.d.ts +22 -0
  112. package/lib/transform-value.js +9 -23
  113. package/lib/transform-value.js.flow +25 -0
  114. package/lib/types/index.d.ts +205 -0
  115. package/lib/types/index.js +191 -0
  116. package/lib/types/index.js.flow +241 -0
  117. package/lib/utils/Rule.d.ts +58 -0
  118. package/lib/utils/Rule.js +0 -21
  119. package/lib/utils/Rule.js.flow +64 -0
  120. package/lib/utils/dashify.d.ts +11 -0
  121. package/lib/utils/dashify.js +0 -8
  122. package/lib/utils/dashify.js.flow +10 -0
  123. package/lib/utils/default-options.d.ts +11 -0
  124. package/lib/utils/default-options.js +14 -0
  125. package/lib/utils/default-options.js.flow +25 -0
  126. package/lib/utils/file-based-identifier.d.ts +15 -0
  127. package/lib/utils/file-based-identifier.js +14 -0
  128. package/lib/utils/file-based-identifier.js.flow +14 -0
  129. package/lib/utils/genCSSRule.d.ts +15 -0
  130. package/lib/utils/genCSSRule.js +9 -18
  131. package/lib/utils/genCSSRule.js.flow +15 -0
  132. package/lib/utils/normalize-value.d.ts +16 -0
  133. package/lib/utils/normalize-value.js +8 -15
  134. package/lib/utils/normalize-value.js.flow +16 -0
  135. package/lib/utils/normalizers/convert-camel-case-transition-props.d.ts +14 -0
  136. package/lib/utils/normalizers/convert-camel-case-transition-props.js +23 -0
  137. package/lib/utils/normalizers/convert-camel-case-transition-props.js.flow +13 -0
  138. package/lib/utils/normalizers/convert-camel-case-values.d.ts +14 -0
  139. package/lib/utils/normalizers/convert-camel-case-values.js +23 -0
  140. package/lib/utils/normalizers/convert-camel-case-values.js.flow +13 -0
  141. package/lib/utils/normalizers/detect-unclosed-fns.d.ts +17 -0
  142. package/lib/utils/normalizers/detect-unclosed-fns.js +0 -12
  143. package/lib/utils/normalizers/detect-unclosed-fns.js.flow +16 -0
  144. package/lib/utils/normalizers/font-size-px-to-rem.d.ts +19 -0
  145. package/lib/utils/normalizers/font-size-px-to-rem.js +9 -19
  146. package/lib/utils/normalizers/font-size-px-to-rem.js.flow +18 -0
  147. package/lib/utils/normalizers/leading-zero.d.ts +17 -0
  148. package/lib/utils/normalizers/leading-zero.js +0 -12
  149. package/lib/utils/normalizers/leading-zero.js.flow +16 -0
  150. package/lib/utils/normalizers/quotes.d.ts +18 -0
  151. package/lib/utils/normalizers/quotes.js +0 -13
  152. package/lib/utils/normalizers/quotes.js.flow +17 -0
  153. package/lib/utils/normalizers/timings.d.ts +18 -0
  154. package/lib/utils/normalizers/timings.js +0 -14
  155. package/lib/utils/normalizers/timings.js.flow +17 -0
  156. package/lib/utils/normalizers/whitespace.d.ts +19 -0
  157. package/lib/utils/normalizers/whitespace.js +0 -15
  158. package/lib/utils/normalizers/whitespace.js.flow +18 -0
  159. package/lib/utils/normalizers/zero-dimensions.d.ts +19 -0
  160. package/lib/utils/normalizers/zero-dimensions.js +0 -15
  161. package/lib/utils/normalizers/zero-dimensions.js.flow +18 -0
  162. package/lib/utils/object-utils.d.ts +66 -0
  163. package/lib/utils/object-utils.js +21 -13
  164. package/lib/utils/object-utils.js.flow +77 -0
  165. package/lib/utils/property-priorities.d.ts +11 -0
  166. package/lib/utils/property-priorities.js +516 -101
  167. package/lib/utils/property-priorities.js.flow +10 -0
  168. package/lib/utils/split-css-value.d.ts +14 -0
  169. package/lib/utils/split-css-value.js +0 -14
  170. package/lib/utils/split-css-value.js.flow +15 -0
  171. package/lib/validate.d.ts +12 -0
  172. package/lib/validate.js +1 -10
  173. package/lib/validate.js.flow +12 -0
  174. package/package.json +4 -5
  175. package/lib/expand-shorthands.d.ts +0 -5
  176. package/lib/expand-shorthands.js +0 -330
  177. package/lib/namespace-transforms/__tests__/preflatten.test.js +0 -120
  178. package/lib/namespace-transforms/preflatten.js +0 -89
  179. package/lib/preprocess-rules/expand-shorthands.js +0 -156
  180. package/lib/preprocess-rules/null-out-longhand.js +0 -310
  181. package/lib/preprocess-rules/react-native-web.js +0 -142
  182. package/lib/stylex-defaultValue.js +0 -397
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ */
9
+
10
+ import type { TStyleValue } from '../common-types';
11
+ /**
12
+ * Shorthand properties:
13
+ * - [x] all - Should be banned
14
+ * - [ ] animation
15
+ * - [ ] background
16
+ * - [-] border
17
+ * - [x] border-block-end
18
+ * - [x] border-block-start
19
+ * - [ ] border-bottom
20
+ * - [x] border-color
21
+ * - [x] border-image
22
+ * - [x] border-inline-end
23
+ * - [x] border-inline-start
24
+ * - [ ] border-left
25
+ * - [x] border-radius
26
+ * - [ ] border-right
27
+ * - [x] border-style
28
+ * - [ ] border-top
29
+ * - [x] border-width
30
+ * - [ ] column-rule
31
+ * - [ ] columns
32
+ * - [ ] flex
33
+ * - [ ] flex-flow
34
+ * - [ ] font
35
+ * - [ ] gap
36
+ * - [ ] grid
37
+ * - [ ] grid-area
38
+ * - [ ] grid-column
39
+ * - [ ] grid-row
40
+ * - [ ] grid-template
41
+ * - [ ] list-style
42
+ * - [x] margin
43
+ * - [ ] mask
44
+ * - [ ] offset
45
+ * - [ ] outline
46
+ * - [x] overflow
47
+ * - [x] padding
48
+ * - [ ] place-content
49
+ * - [ ] place-items
50
+ * - [ ] place-self
51
+ * - [ ] scroll-margin
52
+ * - [ ] scroll-padding
53
+ * - [ ] text-decoration
54
+ * - [ ] text-emphasis
55
+ * - [ ] transition
56
+ */
57
+
58
+ /**
59
+ * Shorthand properties:
60
+ * - [x] all - Should be banned
61
+ * - [ ] animation
62
+ * - [ ] background
63
+ * - [-] border
64
+ * - [x] border-block-end
65
+ * - [x] border-block-start
66
+ * - [ ] border-bottom
67
+ * - [x] border-color
68
+ * - [x] border-image
69
+ * - [x] border-inline-end
70
+ * - [x] border-inline-start
71
+ * - [ ] border-left
72
+ * - [x] border-radius
73
+ * - [ ] border-right
74
+ * - [x] border-style
75
+ * - [ ] border-top
76
+ * - [x] border-width
77
+ * - [ ] column-rule
78
+ * - [ ] columns
79
+ * - [ ] flex
80
+ * - [ ] flex-flow
81
+ * - [ ] font
82
+ * - [ ] gap
83
+ * - [ ] grid
84
+ * - [ ] grid-area
85
+ * - [ ] grid-column
86
+ * - [ ] grid-row
87
+ * - [ ] grid-template
88
+ * - [ ] list-style
89
+ * - [x] margin
90
+ * - [ ] mask
91
+ * - [ ] offset
92
+ * - [ ] outline
93
+ * - [x] overflow
94
+ * - [x] padding
95
+ * - [ ] place-content
96
+ * - [ ] place-items
97
+ * - [ ] place-self
98
+ * - [ ] scroll-margin
99
+ * - [ ] scroll-padding
100
+ * - [ ] text-decoration
101
+ * - [ ] text-emphasis
102
+ * - [ ] transition
103
+ */
104
+
105
+ type TReturn = ReadonlyArray<[string, TStyleValue]>;
106
+ declare const shorthands: {
107
+ border: (rawValue: TStyleValue) => TReturn;
108
+ borderColor: (rawValue: TStyleValue) => TReturn;
109
+ borderHorizontal: (rawValue: TStyleValue) => TReturn;
110
+ borderStyle: (rawValue: TStyleValue) => TReturn;
111
+ borderVertical: (rawValue: TStyleValue) => TReturn;
112
+ borderWidth: (rawValue: TStyleValue) => TReturn;
113
+ borderHorizontalColor: (rawValue: TStyleValue) => TReturn;
114
+ borderHorizontalStyle: (rawValue: TStyleValue) => TReturn;
115
+ borderHorizontalWidth: (rawValue: TStyleValue) => TReturn;
116
+ borderVerticalColor: (rawValue: TStyleValue) => TReturn;
117
+ borderVerticalStyle: (rawValue: TStyleValue) => TReturn;
118
+ borderVerticalWidth: (rawValue: TStyleValue) => TReturn;
119
+ borderRadius: (rawValue: TStyleValue) => TReturn;
120
+ inset: (rawValue: TStyleValue) => TReturn;
121
+ insetInline: (rawValue: TStyleValue) => TReturn;
122
+ insetBlock: (rawValue: TStyleValue) => TReturn;
123
+ start: (rawValue: TStyleValue) => TReturn;
124
+ end: (rawValue: TStyleValue) => TReturn;
125
+ left: (rawValue: TStyleValue) => TReturn;
126
+ right: (rawValue: TStyleValue) => TReturn;
127
+ gap: (rawValue: TStyleValue) => TReturn;
128
+ margin: (rawValue: TStyleValue) => TReturn;
129
+ marginHorizontal: (rawValue: TStyleValue) => TReturn;
130
+ marginStart: (rawValue: TStyleValue) => TReturn;
131
+ marginEnd: (rawValue: TStyleValue) => TReturn;
132
+ marginLeft: (rawValue: TStyleValue) => TReturn;
133
+ marginRight: (rawValue: TStyleValue) => TReturn;
134
+ marginVertical: (rawValue: TStyleValue) => TReturn;
135
+ overflow: (rawValue: TStyleValue) => TReturn;
136
+ padding: (rawValue: TStyleValue) => TReturn;
137
+ paddingHorizontal: (val: TStyleValue) => TReturn;
138
+ paddingStart: (val: TStyleValue) => TReturn;
139
+ paddingEnd: (val: TStyleValue) => TReturn;
140
+ paddingLeft: (val: TStyleValue) => TReturn;
141
+ paddingRight: (val: TStyleValue) => TReturn;
142
+ paddingVertical: (val: TStyleValue) => TReturn;
143
+ };
144
+ declare const aliases: {
145
+ insetBlockStart: (val: TStyleValue) => TReturn;
146
+ insetBlockEnd: (val: TStyleValue) => TReturn;
147
+ insetInlineStart: any;
148
+ insetInlineEnd: any;
149
+ blockSize: (val: TStyleValue) => TReturn;
150
+ inlineSize: (val: TStyleValue) => TReturn;
151
+ minBlockSize: (val: TStyleValue) => TReturn;
152
+ minInlineSize: (val: TStyleValue) => TReturn;
153
+ maxBlockSize: (val: TStyleValue) => TReturn;
154
+ maxInlineSize: (val: TStyleValue) => TReturn;
155
+ borderBlockWidth: any;
156
+ borderBlockStyle: any;
157
+ borderBlockColor: any;
158
+ borderBlockStartWidth: (val: TStyleValue) => TReturn;
159
+ borderBlockStartStyle: (val: TStyleValue) => TReturn;
160
+ borderBlockStartColor: (val: TStyleValue) => TReturn;
161
+ borderBlockEndWidth: (val: TStyleValue) => TReturn;
162
+ borderBlockEndStyle: (val: TStyleValue) => TReturn;
163
+ borderBlockEndColor: (val: TStyleValue) => TReturn;
164
+ borderInlineWidth: any;
165
+ borderInlineStyle: any;
166
+ borderInlineColor: any;
167
+ borderInlineStartWidth: (val: TStyleValue) => TReturn;
168
+ borderInlineStartStyle: (val: TStyleValue) => TReturn;
169
+ borderInlineStartColor: (val: TStyleValue) => TReturn;
170
+ borderInlineEndWidth: (val: TStyleValue) => TReturn;
171
+ borderInlineEndStyle: (val: TStyleValue) => TReturn;
172
+ borderInlineEndColor: (val: TStyleValue) => TReturn;
173
+ borderStartStartRadius: (val: TStyleValue) => TReturn;
174
+ borderStartEndRadius: (val: TStyleValue) => TReturn;
175
+ borderEndStartRadius: (val: TStyleValue) => TReturn;
176
+ borderEndEndRadius: (val: TStyleValue) => TReturn;
177
+ gridGap: any;
178
+ gridRowGap: (value: TStyleValue) => TReturn;
179
+ gridColumnGap: (value: TStyleValue) => TReturn;
180
+ marginBlock: any;
181
+ marginBlockStart: (val: TStyleValue) => TReturn;
182
+ marginBlockEnd: (val: TStyleValue) => TReturn;
183
+ marginInline: any;
184
+ marginInlineStart: (val: TStyleValue) => TReturn;
185
+ marginInlineEnd: (val: TStyleValue) => TReturn;
186
+ overflowBlock: (value: TStyleValue) => TReturn;
187
+ overflowInline: (value: TStyleValue) => TReturn;
188
+ paddingBlock: any;
189
+ paddingBlockStart: (val: TStyleValue) => TReturn;
190
+ paddingBlockEnd: (val: TStyleValue) => TReturn;
191
+ paddingInline: any;
192
+ paddingInlineStart: (val: TStyleValue) => TReturn;
193
+ paddingInlineEnd: (val: TStyleValue) => TReturn;
194
+ scrollMarginBlockStart: (value: TStyleValue) => TReturn;
195
+ scrollMarginBlockEnd: (value: TStyleValue) => TReturn;
196
+ };
197
+ declare const expansions: Omit<shorthands, keyof (aliases | {})> &
198
+ Omit<aliases, keyof ({})> & {};
199
+ declare const $$EXPORT_DEFAULT_DECLARATION$$: typeof expansions;
200
+ export default $$EXPORT_DEFAULT_DECLARATION$$;
@@ -6,147 +6,58 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _splitCssValue = _interopRequireDefault(require("../utils/split-css-value"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- /**
10
- * Copyright (c) Meta Platforms, Inc. and affiliates.
11
- *
12
- * This source code is licensed under the MIT license found in the
13
- * LICENSE file in the root directory of this source tree.
14
- *
15
- *
16
- */
17
-
18
- const borderWidthKeywords = new Set(['thin', 'medium', 'thick']);
19
- const borderStyleKeywords = new Set(['none', 'hidden', 'solid', 'dashed', 'dotted', 'double', 'groove', 'ridge', 'inside',
20
- // Non-standard
21
- 'inset', 'outset']);
22
- const globalKeywords = new Set(['initial', 'inherit', 'unset']);
23
- function borderDetector(borderParts) {
24
- const parts = borderParts.filter(Boolean).slice();
25
- let suffix = '';
26
- for (let i = 0; i < parts.length; i++) {
27
- const part = parts[i];
28
- if (typeof part === 'string' && part.endsWith('!important')) {
29
- parts[i] = part.replace('!important', '').trim();
30
- suffix = ' !important';
31
- }
32
- }
33
- if (parts.length === 1 && globalKeywords.has(parts[0])) {
34
- return [parts[0], parts[0], parts[0]];
35
- }
36
-
37
- // Find the part that starts with a number
38
- // This is most likely to be the borderWidth
39
- let width = parts.find(part => typeof part === 'number' || part.match(/^\.?\d+/) || borderWidthKeywords.has(part));
40
- if (typeof width === 'number') {
41
- width = String(width) + 'px';
42
- }
43
- // console.log('width', width);
44
- if (width != null) {
45
- parts.splice(parts.indexOf(width), 1);
46
- }
47
- if (parts.length === 0) {
48
- return [String(width) + suffix, null, null];
49
- }
50
- const style = parts.find(part => typeof part === 'string' && borderStyleKeywords.has(part));
51
- if (style != null) {
52
- parts.splice(parts.indexOf(style), 1);
53
- }
54
- if (parts.length === 2 && width == null) {
55
- width = parts[0];
56
- parts.splice(0, 1);
57
- }
58
- if (width != null && parts.length > 1) {
59
- throw new Error('Invalid border shorthand value');
60
- }
61
- const color = parts[0];
62
- return [width, style, color].map(part => part != null ? part + suffix : null);
63
- }
64
- const expansions = {
9
+ const shorthands = {
65
10
  border: rawValue => {
66
- if (typeof rawValue === 'number') {
67
- return expansions.borderWidth(rawValue);
68
- }
69
- const parts = (0, _splitCssValue.default)(rawValue);
70
- const [width, style, color] = borderDetector(parts);
71
- return [...(width != null ? expansions.borderWidth(width) : []), ...(style != null ? expansions.borderStyle(style) : []), ...(color != null ? expansions.borderColor(color) : [])];
72
- },
73
- borderTop: rawValue => {
74
- if (typeof rawValue === 'number') {
75
- return [['borderTopWidth', rawValue]];
76
- }
77
- const parts = (0, _splitCssValue.default)(rawValue);
78
- const [width, style, color] = borderDetector(parts);
79
- return [width != null ? ['borderTopWidth', width] : null, style != null ? ['borderTopStyle', style] : null, color != null ? ['borderTopColor', color] : null].filter(Boolean);
80
- },
81
- borderEnd: rawValue => {
82
- if (typeof rawValue === 'number') {
83
- return [['borderEndWidth', rawValue]];
84
- }
85
- const parts = (0, _splitCssValue.default)(rawValue);
86
- const [width, style, color] = borderDetector(parts);
87
- return [width != null ? ['borderEndWidth', width] : null, style != null ? ['borderEndStyle', style] : null, color != null ? ['borderEndColor', color] : null].filter(Boolean);
88
- },
89
- borderRight: rawValue => {
90
- if (typeof rawValue === 'number') {
91
- return [['borderRightWidth', rawValue]];
92
- }
93
- const parts = (0, _splitCssValue.default)(rawValue);
94
- const [width, style, color] = borderDetector(parts);
95
- return [width != null ? ['borderRightWidth', width] : null, style != null ? ['borderRightStyle', style] : null, color != null ? ['borderRightColor', color] : null].filter(Boolean);
96
- },
97
- borderBottom: rawValue => {
98
- if (typeof rawValue === 'number') {
99
- return [['borderBottomWidth', rawValue]];
100
- }
101
- const parts = (0, _splitCssValue.default)(rawValue);
102
- const [width, style, color] = borderDetector(parts);
103
- return [width != null ? ['borderBottomWidth', width] : null, style != null ? ['borderBottomStyle', style] : null, color != null ? ['borderBottomColor', color] : null].filter(Boolean);
104
- },
105
- borderStart: rawValue => {
106
- if (typeof rawValue === 'number') {
107
- return [['borderStartWidth', rawValue]];
108
- }
109
- const parts = (0, _splitCssValue.default)(rawValue);
110
- const [width, style, color] = borderDetector(parts);
111
- return [width != null ? ['borderStartWidth', width] : null, style != null ? ['borderStartStyle', style] : null, color != null ? ['borderStartColor', color] : null].filter(Boolean);
112
- },
113
- borderLeft: rawValue => {
114
- if (typeof rawValue === 'number') {
115
- return [['borderLeftWidth', rawValue]];
116
- }
117
- const parts = (0, _splitCssValue.default)(rawValue);
118
- const [width, style, color] = borderDetector(parts);
119
- return [width != null ? ['borderLeftWidth', width] : null, style != null ? ['borderLeftStyle', style] : null, color != null ? ['borderLeftColor', color] : null].filter(Boolean);
11
+ return [['borderTop', rawValue], ['borderEnd', rawValue], ['borderBottom', rawValue], ['borderStart', rawValue]];
120
12
  },
121
13
  borderColor: rawValue => {
122
14
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
123
15
  return [['borderTopColor', top], ['borderEndColor', right], ['borderBottomColor', bottom], ['borderStartColor', left]];
124
16
  },
125
17
  borderHorizontal: rawValue => {
126
- return [...expansions.borderStart(rawValue), ...expansions.borderEnd(rawValue)];
18
+ return [['borderStart', rawValue], ['borderEnd', rawValue]];
127
19
  },
128
20
  borderStyle: rawValue => {
129
21
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
130
22
  return [['borderTopStyle', top], ['borderEndStyle', right], ['borderBottomStyle', bottom], ['borderStartStyle', left]];
131
23
  },
132
24
  borderVertical: rawValue => {
133
- return [...expansions.borderTop(rawValue), ...expansions.borderBottom(rawValue)];
25
+ return [['borderTop', rawValue], ['borderBottom', rawValue]];
134
26
  },
135
27
  borderWidth: rawValue => {
136
28
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
137
29
  return [['borderTopWidth', top], ['borderEndWidth', right], ['borderBottomWidth', bottom], ['borderStartWidth', left]];
138
30
  },
31
+ borderHorizontalColor: rawValue => [['borderStartColor', rawValue], ['borderEndColor', rawValue]],
32
+ borderHorizontalStyle: rawValue => [['borderStartStyle', rawValue], ['borderEndStyle', rawValue]],
33
+ borderHorizontalWidth: rawValue => [['borderStartWidth', rawValue], ['borderEndWidth', rawValue]],
34
+ borderVerticalColor: rawValue => [['borderTopColor', rawValue], ['borderBottomColor', rawValue]],
35
+ borderVerticalStyle: rawValue => [['borderTopStyle', rawValue], ['borderBottomStyle', rawValue]],
36
+ borderVerticalWidth: rawValue => [['borderTopWidth', rawValue], ['borderBottomWidth', rawValue]],
139
37
  borderRadius: rawValue => {
140
38
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
141
39
  return [['borderTopStartRadius', top], ['borderTopEndRadius', right], ['borderBottomEndRadius', bottom], ['borderBottomStartRadius', left]];
142
40
  },
41
+ inset: rawValue => [['top', rawValue], ['end', rawValue], ['bottom', rawValue], ['start', rawValue]],
42
+ insetInline: rawValue => [...shorthands.start(rawValue), ...shorthands.end(rawValue)],
43
+ insetBlock: rawValue => [['top', rawValue], ['bottom', rawValue]],
44
+ start: rawValue => [['start', rawValue], ['left', null], ['right', null]],
45
+ end: rawValue => [['end', rawValue], ['left', null], ['right', null]],
46
+ left: rawValue => [['left', rawValue], ['start', null], ['end', null]],
47
+ right: rawValue => [['right', rawValue], ['start', null], ['end', null]],
48
+ gap: rawValue => {
49
+ const [row, column = row] = (0, _splitCssValue.default)(rawValue);
50
+ return [['rowGap', row], ['columnGap', column]];
51
+ },
143
52
  margin: rawValue => {
144
53
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
145
54
  return [['marginTop', top], ['marginEnd', right], ['marginBottom', bottom], ['marginStart', left]];
146
55
  },
147
- marginHorizontal: rawValue => {
148
- return [['marginStart', rawValue], ['marginEnd', rawValue]];
149
- },
56
+ marginHorizontal: rawValue => [...shorthands.marginStart(rawValue), ...shorthands.marginEnd(rawValue)],
57
+ marginStart: rawValue => [['marginStart', rawValue], ['marginLeft', null], ['marginRight', null]],
58
+ marginEnd: rawValue => [['marginEnd', rawValue], ['marginLeft', null], ['marginRight', null]],
59
+ marginLeft: rawValue => [['marginLeft', rawValue], ['marginStart', null], ['marginEnd', null]],
60
+ marginRight: rawValue => [['marginRight', rawValue], ['marginStart', null], ['marginEnd', null]],
150
61
  marginVertical: rawValue => {
151
62
  return [['marginTop', rawValue], ['marginBottom', rawValue]];
152
63
  },
@@ -158,12 +69,68 @@ const expansions = {
158
69
  const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
159
70
  return [['paddingTop', top], ['paddingEnd', right], ['paddingBottom', bottom], ['paddingStart', left]];
160
71
  },
161
- paddingHorizontal: rawValue => {
162
- return [['paddingStart', rawValue], ['paddingEnd', rawValue]];
163
- },
164
- paddingVertical: rawValue => {
165
- return [['paddingTop', rawValue], ['paddingBottom', rawValue]];
166
- }
72
+ paddingHorizontal: val => [...shorthands.paddingStart(val), ...shorthands.paddingEnd(val)],
73
+ paddingStart: val => [['paddingStart', val], ['paddingLeft', null], ['paddingRight', null]],
74
+ paddingEnd: val => [['paddingEnd', val], ['paddingLeft', null], ['paddingRight', null]],
75
+ paddingLeft: val => [['paddingLeft', val], ['paddingStart', null], ['paddingEnd', null]],
76
+ paddingRight: val => [['paddingRight', val], ['paddingStart', null], ['paddingEnd', null]],
77
+ paddingVertical: val => [['paddingTop', val], ['paddingBottom', val]]
78
+ };
79
+ const aliases = {
80
+ insetBlockStart: val => [['top', val]],
81
+ insetBlockEnd: val => [['bottom', val]],
82
+ insetInlineStart: shorthands.start,
83
+ insetInlineEnd: shorthands.end,
84
+ blockSize: val => [['height', val]],
85
+ inlineSize: val => [['width', val]],
86
+ minBlockSize: val => [['minHeight', val]],
87
+ minInlineSize: val => [['minWidth', val]],
88
+ maxBlockSize: val => [['maxHeight', val]],
89
+ maxInlineSize: val => [['maxWidth', val]],
90
+ borderBlockWidth: shorthands.borderVerticalWidth,
91
+ borderBlockStyle: shorthands.borderVerticalStyle,
92
+ borderBlockColor: shorthands.borderVerticalColor,
93
+ borderBlockStartWidth: val => [['borderTopWidth', val]],
94
+ borderBlockStartStyle: val => [['borderTopStyle', val]],
95
+ borderBlockStartColor: val => [['borderTopColor', val]],
96
+ borderBlockEndWidth: val => [['borderBottomWidth', val]],
97
+ borderBlockEndStyle: val => [['borderBottomStyle', val]],
98
+ borderBlockEndColor: val => [['borderBottomColor', val]],
99
+ borderInlineWidth: shorthands.borderHorizontalWidth,
100
+ borderInlineStyle: shorthands.borderHorizontalStyle,
101
+ borderInlineColor: shorthands.borderHorizontalColor,
102
+ borderInlineStartWidth: val => [['borderStartWidth', val]],
103
+ borderInlineStartStyle: val => [['borderStartStyle', val]],
104
+ borderInlineStartColor: val => [['borderStartColor', val]],
105
+ borderInlineEndWidth: val => [['borderEndWidth', val]],
106
+ borderInlineEndStyle: val => [['borderEndStyle', val]],
107
+ borderInlineEndColor: val => [['borderEndColor', val]],
108
+ borderStartStartRadius: val => [['borderTopStartRadius', val]],
109
+ borderStartEndRadius: val => [['borderTopEndRadius', val]],
110
+ borderEndStartRadius: val => [['borderBottomStartRadius', val]],
111
+ borderEndEndRadius: val => [['borderBottomEndRadius', val]],
112
+ gridGap: shorthands.gap,
113
+ gridRowGap: value => [['rowGap', value]],
114
+ gridColumnGap: value => [['columnGap', value]],
115
+ marginBlock: shorthands.marginVertical,
116
+ marginBlockStart: val => [['marginTop', val]],
117
+ marginBlockEnd: val => [['marginBottom', val]],
118
+ marginInline: shorthands.marginHorizontal,
119
+ marginInlineStart: val => [['marginStart', val]],
120
+ marginInlineEnd: val => [['marginEnd', val]],
121
+ overflowBlock: value => [['overflowY', value]],
122
+ overflowInline: value => [['overflowX', value]],
123
+ paddingBlock: shorthands.paddingVertical,
124
+ paddingBlockStart: val => [['paddingTop', val]],
125
+ paddingBlockEnd: val => [['paddingBottom', val]],
126
+ paddingInline: shorthands.paddingHorizontal,
127
+ paddingInlineStart: val => [['paddingStart', val]],
128
+ paddingInlineEnd: val => [['paddingEnd', val]],
129
+ scrollMarginBlockStart: value => [['scrollMarginTop', value]],
130
+ scrollMarginBlockEnd: value => [['scrollMarginBottom', value]]
131
+ };
132
+ const expansions = {
133
+ ...shorthands,
134
+ ...aliases
167
135
  };
168
- var _default = expansions;
169
- exports.default = _default;
136
+ var _default = exports.default = expansions;
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ import type { TStyleValue } from '../common-types';
11
+
12
+ // TODO: to be added later.
13
+ // const aliases = {
14
+ // marginInlineStart: (rawValue) => [['marginStart', rawValue]],
15
+ // marginInlineEnd: (rawValue) => [['marginEnd', rawValue]],
16
+ // marginInline: (rawValue) => [
17
+ // ['marginStart', rawValue],
18
+ // ['marginEnd', rawValue],
19
+ // ],
20
+ // paddingInlineStart: (rawValue) => [['paddingStart', rawValue]],
21
+ // paddingInlineEnd: (rawValue) => [['paddingEnd', rawValue]],
22
+ // paddingInline: (rawValue) => [
23
+ // ['paddingStart', rawValue],
24
+ // ['paddingEnd', rawValue],
25
+ // ],
26
+ // // 'borderInlineStart': (rawValue) => [['borderStart', rawValue]],
27
+ // // 'borderInlineEnd': (rawValue) => [['borderEnd', rawValue]],
28
+ // // // This will need to change.
29
+ // // 'borderInline': (rawValue) => [
30
+ // // ['borderStart', rawValue],
31
+ // // ['borderEnd', rawValue],
32
+ // // ],
33
+ // };
34
+
35
+ /**
36
+ * Shorthand properties:
37
+ * - [x] all - Should be banned
38
+ * - [ ] animation
39
+ * - [ ] background
40
+ * - [-] border
41
+ * - [x] border-block-end
42
+ * - [x] border-block-start
43
+ * - [ ] border-bottom
44
+ * - [x] border-color
45
+ * - [x] border-image
46
+ * - [x] border-inline-end
47
+ * - [x] border-inline-start
48
+ * - [ ] border-left
49
+ * - [x] border-radius
50
+ * - [ ] border-right
51
+ * - [x] border-style
52
+ * - [ ] border-top
53
+ * - [x] border-width
54
+ * - [ ] column-rule
55
+ * - [ ] columns
56
+ * - [ ] flex
57
+ * - [ ] flex-flow
58
+ * - [ ] font
59
+ * - [ ] gap
60
+ * - [ ] grid
61
+ * - [ ] grid-area
62
+ * - [ ] grid-column
63
+ * - [ ] grid-row
64
+ * - [ ] grid-template
65
+ * - [ ] list-style
66
+ * - [x] margin
67
+ * - [ ] mask
68
+ * - [ ] offset
69
+ * - [ ] outline
70
+ * - [x] overflow
71
+ * - [x] padding
72
+ * - [ ] place-content
73
+ * - [ ] place-items
74
+ * - [ ] place-self
75
+ * - [ ] scroll-margin
76
+ * - [ ] scroll-padding
77
+ * - [ ] text-decoration
78
+ * - [ ] text-emphasis
79
+ * - [ ] transition
80
+ */
81
+
82
+ type TReturn = $ReadOnlyArray<[string, TStyleValue]>;
83
+
84
+ declare const shorthands: {
85
+ border: (rawValue: TStyleValue) => TReturn,
86
+ borderColor: (rawValue: TStyleValue) => TReturn,
87
+ borderHorizontal: (rawValue: TStyleValue) => TReturn,
88
+ borderStyle: (rawValue: TStyleValue) => TReturn,
89
+ borderVertical: (rawValue: TStyleValue) => TReturn,
90
+ borderWidth: (rawValue: TStyleValue) => TReturn,
91
+ borderHorizontalColor: (rawValue: TStyleValue) => TReturn,
92
+ borderHorizontalStyle: (rawValue: TStyleValue) => TReturn,
93
+ borderHorizontalWidth: (rawValue: TStyleValue) => TReturn,
94
+ borderVerticalColor: (rawValue: TStyleValue) => TReturn,
95
+ borderVerticalStyle: (rawValue: TStyleValue) => TReturn,
96
+ borderVerticalWidth: (rawValue: TStyleValue) => TReturn,
97
+ borderRadius: (rawValue: TStyleValue) => TReturn,
98
+ inset: (rawValue: TStyleValue) => TReturn,
99
+ insetInline: (rawValue: TStyleValue) => TReturn,
100
+ insetBlock: (rawValue: TStyleValue) => TReturn,
101
+ start: (rawValue: TStyleValue) => TReturn,
102
+ end: (rawValue: TStyleValue) => TReturn,
103
+ left: (rawValue: TStyleValue) => TReturn,
104
+ right: (rawValue: TStyleValue) => TReturn,
105
+ gap: (rawValue: TStyleValue) => TReturn,
106
+ margin: (rawValue: TStyleValue) => TReturn,
107
+ marginHorizontal: (rawValue: TStyleValue) => TReturn,
108
+ marginStart: (rawValue: TStyleValue) => TReturn,
109
+ marginEnd: (rawValue: TStyleValue) => TReturn,
110
+ marginLeft: (rawValue: TStyleValue) => TReturn,
111
+ marginRight: (rawValue: TStyleValue) => TReturn,
112
+ marginVertical: (rawValue: TStyleValue) => TReturn,
113
+ overflow: (rawValue: TStyleValue) => TReturn,
114
+ padding: (rawValue: TStyleValue) => TReturn,
115
+ paddingHorizontal: (val: TStyleValue) => TReturn,
116
+ paddingStart: (val: TStyleValue) => TReturn,
117
+ paddingEnd: (val: TStyleValue) => TReturn,
118
+ paddingLeft: (val: TStyleValue) => TReturn,
119
+ paddingRight: (val: TStyleValue) => TReturn,
120
+ paddingVertical: (val: TStyleValue) => TReturn,
121
+ };
122
+
123
+ declare const aliases: {
124
+ insetBlockStart: (val: TStyleValue) => TReturn,
125
+ insetBlockEnd: (val: TStyleValue) => TReturn,
126
+ insetInlineStart: $FlowFixMe,
127
+ insetInlineEnd: $FlowFixMe,
128
+ blockSize: (val: TStyleValue) => TReturn,
129
+ inlineSize: (val: TStyleValue) => TReturn,
130
+ minBlockSize: (val: TStyleValue) => TReturn,
131
+ minInlineSize: (val: TStyleValue) => TReturn,
132
+ maxBlockSize: (val: TStyleValue) => TReturn,
133
+ maxInlineSize: (val: TStyleValue) => TReturn,
134
+ borderBlockWidth: $FlowFixMe,
135
+ borderBlockStyle: $FlowFixMe,
136
+ borderBlockColor: $FlowFixMe,
137
+ borderBlockStartWidth: (val: TStyleValue) => TReturn,
138
+ borderBlockStartStyle: (val: TStyleValue) => TReturn,
139
+ borderBlockStartColor: (val: TStyleValue) => TReturn,
140
+ borderBlockEndWidth: (val: TStyleValue) => TReturn,
141
+ borderBlockEndStyle: (val: TStyleValue) => TReturn,
142
+ borderBlockEndColor: (val: TStyleValue) => TReturn,
143
+ borderInlineWidth: $FlowFixMe,
144
+ borderInlineStyle: $FlowFixMe,
145
+ borderInlineColor: $FlowFixMe,
146
+ borderInlineStartWidth: (val: TStyleValue) => TReturn,
147
+ borderInlineStartStyle: (val: TStyleValue) => TReturn,
148
+ borderInlineStartColor: (val: TStyleValue) => TReturn,
149
+ borderInlineEndWidth: (val: TStyleValue) => TReturn,
150
+ borderInlineEndStyle: (val: TStyleValue) => TReturn,
151
+ borderInlineEndColor: (val: TStyleValue) => TReturn,
152
+ borderStartStartRadius: (val: TStyleValue) => TReturn,
153
+ borderStartEndRadius: (val: TStyleValue) => TReturn,
154
+ borderEndStartRadius: (val: TStyleValue) => TReturn,
155
+ borderEndEndRadius: (val: TStyleValue) => TReturn,
156
+ gridGap: $FlowFixMe,
157
+ gridRowGap: (value: TStyleValue) => TReturn,
158
+ gridColumnGap: (value: TStyleValue) => TReturn,
159
+ marginBlock: $FlowFixMe,
160
+ marginBlockStart: (val: TStyleValue) => TReturn,
161
+ marginBlockEnd: (val: TStyleValue) => TReturn,
162
+ marginInline: $FlowFixMe,
163
+ marginInlineStart: (val: TStyleValue) => TReturn,
164
+ marginInlineEnd: (val: TStyleValue) => TReturn,
165
+ overflowBlock: (value: TStyleValue) => TReturn,
166
+ overflowInline: (value: TStyleValue) => TReturn,
167
+ paddingBlock: $FlowFixMe,
168
+ paddingBlockStart: (val: TStyleValue) => TReturn,
169
+ paddingBlockEnd: (val: TStyleValue) => TReturn,
170
+ paddingInline: $FlowFixMe,
171
+ paddingInlineStart: (val: TStyleValue) => TReturn,
172
+ paddingInlineEnd: (val: TStyleValue) => TReturn,
173
+ scrollMarginBlockStart: (value: TStyleValue) => TReturn,
174
+ scrollMarginBlockEnd: (value: TStyleValue) => TReturn,
175
+ };
176
+
177
+ declare const expansions: { ...shorthands, ...aliases };
178
+
179
+ declare export default typeof expansions;