@stylexjs/shared 0.2.0-beta.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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;