@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,241 @@
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 { Color as ColorType } from './stylex-types-color';
11
+
12
+ // We want all in one file?
13
+ // option 1, creat interface an implement it in the class
14
+ // why? All the types have a single base definition of props
15
+ // We want on type that defines CSS Types
16
+ // Option 2: Do a union type and make
17
+
18
+ // interface ICSSType {
19
+ // toString(): string;
20
+ // }
21
+
22
+ type ValueWithDefault<+T> =
23
+ | T
24
+ | $ReadOnly<{
25
+ default: T,
26
+ [string]: ValueWithDefault<T>,
27
+ }>;
28
+
29
+ type CSSSyntax =
30
+ | '*'
31
+ | '<length>'
32
+ | '<number>'
33
+ | '<percentage>'
34
+ | '<length-percentage>'
35
+ | '<color>'
36
+ | '<image>'
37
+ | '<url>'
38
+ | '<integer>'
39
+ | '<angle>'
40
+ | '<time>'
41
+ | '<resolution>'
42
+ | '<transform-function>'
43
+ | '<custom-ident>'
44
+ | '<transform-list>';
45
+
46
+ type CSSSyntaxType = CSSSyntax | $ReadOnlyArray<CSSSyntax>;
47
+
48
+ declare export class CSSType {}
49
+
50
+ export interface ICSSType<+T: string | number> {
51
+ +value: ValueWithDefault<T>;
52
+ +syntax: CSSSyntaxType;
53
+ }
54
+
55
+ type AnguleValue = string;
56
+ declare export class Angle<+T: AnguleValue>
57
+ extends CSSType
58
+ implements ICSSType<T>
59
+ {
60
+ +value: ValueWithDefault<T>;
61
+ +syntax: CSSSyntaxType;
62
+ static +syntax: CSSSyntaxType;
63
+ constructor(value: ValueWithDefault<T>): void;
64
+ static create<T: AnguleValue = AnguleValue>(
65
+ value: ValueWithDefault<T>,
66
+ ): Angle<T>;
67
+ }
68
+ declare export const angle: $FlowFixMe;
69
+
70
+ type ColorValue = string;
71
+ declare export class Color<+T: ColorValue>
72
+ extends CSSType
73
+ implements ICSSType<T>
74
+ {
75
+ +value: ValueWithDefault<T>;
76
+ +syntax: CSSSyntaxType;
77
+ constructor(value: ValueWithDefault<T>): void;
78
+ static create<T: ColorValue = ColorValue>(
79
+ value: ValueWithDefault<T>,
80
+ ): Color<T>;
81
+ }
82
+ declare export const color: $FlowFixMe;
83
+
84
+ type URLValue = string;
85
+
86
+ declare export class Url<+T: URLValue> extends CSSType implements ICSSType<T> {
87
+ +value: ValueWithDefault<T>;
88
+ +syntax: CSSSyntaxType;
89
+ constructor(value: ValueWithDefault<T>): void;
90
+ static create<T: URLValue = URLValue>(value: ValueWithDefault<T>): Url<T>;
91
+ }
92
+ declare export const url: $FlowFixMe;
93
+
94
+ type ImageValue = string;
95
+
96
+ declare export class Image<+T: ImageValue>
97
+ extends Url<T>
98
+ implements ICSSType<T>
99
+ {
100
+ +value: ValueWithDefault<T>;
101
+ +syntax: CSSSyntaxType;
102
+ constructor(value: ValueWithDefault<T>): void;
103
+ static create<T: ImageValue = ImageValue>(
104
+ value: ValueWithDefault<T>,
105
+ ): Image<T>;
106
+ }
107
+ declare export const image: $FlowFixMe;
108
+
109
+ type IntegerValue = number;
110
+
111
+ declare export class Integer<+T: IntegerValue>
112
+ extends CSSType
113
+ implements ICSSType<T>
114
+ {
115
+ +value: ValueWithDefault<T>;
116
+ +syntax: CSSSyntaxType;
117
+ constructor(value: ValueWithDefault<T>): void;
118
+ static create<T: IntegerValue = IntegerValue>(value: T): Integer<T>;
119
+ }
120
+ declare export const integer: $FlowFixMe;
121
+
122
+ type LengthPercentageValue = string;
123
+
124
+ declare export class LengthPercentage<+T: LengthPercentageValue>
125
+ extends CSSType
126
+ implements ICSSType<string>
127
+ {
128
+ +value: ValueWithDefault<T>;
129
+ +syntax: CSSSyntaxType;
130
+ constructor(value: ValueWithDefault<T>): void;
131
+ static createLength<T: LengthPercentageValue | number>(
132
+ value: ValueWithDefault<T>,
133
+ ): LengthPercentage<string>;
134
+ static createPercentage<T: LengthPercentageValue | number>(
135
+ value: ValueWithDefault<T>,
136
+ ): LengthPercentage<string>;
137
+ }
138
+ declare export const lengthPercentage: $FlowFixMe;
139
+
140
+ type LengthValue = number | string;
141
+
142
+ declare export class Length<+T: LengthValue>
143
+ extends LengthPercentage<string>
144
+ implements ICSSType<string>
145
+ {
146
+ +value: ValueWithDefault<string>;
147
+ +syntax: CSSSyntaxType;
148
+ constructor(value: ValueWithDefault<T>): void;
149
+ static create<T: LengthValue = LengthValue>(
150
+ value: ValueWithDefault<T>,
151
+ ): Length<T>;
152
+ }
153
+ declare export const length: $FlowFixMe;
154
+
155
+ type PercentageValue = string | number;
156
+
157
+ declare export class Percentage<+T: PercentageValue>
158
+ extends LengthPercentage<string>
159
+ implements ICSSType<string>
160
+ {
161
+ +value: ValueWithDefault<string>;
162
+ +syntax: CSSSyntaxType;
163
+ constructor(value: ValueWithDefault<T>): void;
164
+ static create<T: PercentageValue = PercentageValue>(
165
+ value: ValueWithDefault<T>,
166
+ ): Percentage<T>;
167
+ }
168
+ declare export const percentage: $FlowFixMe;
169
+
170
+ type NumberValue = number;
171
+
172
+ declare export class Num<+T: NumberValue>
173
+ extends CSSType
174
+ implements ICSSType<T>
175
+ {
176
+ +value: ValueWithDefault<T>;
177
+ +syntax: CSSSyntaxType;
178
+ constructor(value: ValueWithDefault<T>): void;
179
+ static create<T: NumberValue = NumberValue>(
180
+ value: ValueWithDefault<T>,
181
+ ): Num<T>;
182
+ }
183
+ declare export const number: $FlowFixMe;
184
+
185
+ type ResolutionValue = string | 0;
186
+
187
+ declare export class Resolution<+T: ResolutionValue>
188
+ extends CSSType
189
+ implements ICSSType<T>
190
+ {
191
+ +value: ValueWithDefault<T>;
192
+ +syntax: CSSSyntaxType;
193
+ constructor(value: ValueWithDefault<T>): void;
194
+ static create<T: ResolutionValue = ResolutionValue>(
195
+ value: ValueWithDefault<T>,
196
+ ): Resolution<T>;
197
+ }
198
+ declare export const resolution: $FlowFixMe;
199
+
200
+ type TimeValue = string | 0;
201
+
202
+ declare export class Time<+T: TimeValue>
203
+ extends CSSType
204
+ implements ICSSType<T>
205
+ {
206
+ +value: ValueWithDefault<T>;
207
+ +syntax: CSSSyntaxType;
208
+ constructor(value: ValueWithDefault<T>): void;
209
+ static create<T: TimeValue = TimeValue>(value: ValueWithDefault<T>): Time<T>;
210
+ }
211
+ declare export const time: $FlowFixMe;
212
+
213
+ type TransformFunctionValue = string;
214
+
215
+ declare export class TransformFunction<+T: TransformFunctionValue>
216
+ extends CSSType
217
+ implements ICSSType<T>
218
+ {
219
+ +value: ValueWithDefault<T>;
220
+ +syntax: CSSSyntaxType;
221
+ constructor(value: ValueWithDefault<T>): void;
222
+ static create<T: TransformFunctionValue = TransformFunctionValue>(
223
+ value: ValueWithDefault<T>,
224
+ ): TransformFunction<T>;
225
+ }
226
+ declare export const transformFunction: $FlowFixMe;
227
+
228
+ type TransformListValue = string;
229
+
230
+ declare export class TransformList<T: TransformListValue>
231
+ extends CSSType
232
+ implements ICSSType<T>
233
+ {
234
+ +value: ValueWithDefault<T>;
235
+ +syntax: CSSSyntaxType;
236
+ constructor(value: ValueWithDefault<T>): void;
237
+ static create<T: TransformListValue = TransformListValue>(
238
+ value: ValueWithDefault<T>,
239
+ ): TransformList<T>;
240
+ }
241
+ declare export const transformList: $FlowFixMe;
@@ -0,0 +1,58 @@
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
+ /**
11
+ * This could be an interface, but we use a class so that we can
12
+ * use instanceof to check for it.
13
+ */
14
+ export declare class Rule<V> {}
15
+ /**
16
+ * This is a class that represents a raw style rule.
17
+ *
18
+ * It exists to track the actual CSS rule that should be compiled
19
+ * even as we transform the structure of the RawStyles object.
20
+ */
21
+ export declare class RawRule<V> extends Rule<V> {
22
+ readonly key: string;
23
+ readonly value: V;
24
+ readonly psuedos: null | undefined | ReadonlyArray<string>;
25
+ readonly atRules: null | undefined | ReadonlyArray<string>;
26
+ constructor(
27
+ key: string,
28
+ value: V,
29
+ psuedos: null | undefined | ReadonlyArray<string>,
30
+ atRules: null | undefined | ReadonlyArray<string>,
31
+ );
32
+ }
33
+ export declare class RawRuleList<V> extends Rule<V> {
34
+ readonly rules: ReadonlyArray<Rule<V>>;
35
+ constructor(rules: ReadonlyArray<Rule<V>>);
36
+ }
37
+ export declare class RawRuleRTLTuple<V1, V2> extends Rule<V1 | V2> {
38
+ readonly rules: [RawRule<V1>, RawRule<V2>];
39
+ constructor(rule1: RawRule<V1>, rule2: RawRule<V2>);
40
+ }
41
+ export declare class CompiledRule<V> extends Rule<V> {
42
+ readonly key: string;
43
+ readonly value: V;
44
+ readonly psuedos: null | undefined | ReadonlyArray<string>;
45
+ readonly atRules: null | undefined | ReadonlyArray<string>;
46
+ readonly className: string;
47
+ constructor(
48
+ key: string,
49
+ value: V,
50
+ psuedos: null | undefined | ReadonlyArray<string>,
51
+ atRules: null | undefined | ReadonlyArray<string>,
52
+ className: string,
53
+ );
54
+ }
55
+ export declare class CompiledRuleTuple2<V1, V2> extends Rule<V1 | V2> {
56
+ readonly rules: [CompiledRule<V1>, CompiledRule<V2>];
57
+ constructor(rule1: CompiledRule<V1>, rule2: CompiledRule<V2>);
58
+ }
package/lib/utils/Rule.js CHANGED
@@ -4,28 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Rule = exports.RawRuleRTLTuple = exports.RawRuleList = exports.RawRule = exports.CompiledRuleTuple2 = exports.CompiledRule = void 0;
7
- /**
8
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9
- *
10
- * This source code is licensed under the MIT license found in the
11
- * LICENSE file in the root directory of this source tree.
12
- *
13
- *
14
- */
15
-
16
- /**
17
- * This could be an interface, but we use a class so that we can
18
- * use instanceof to check for it.
19
- */
20
- // eslint-disable-next-line no-unused-vars
21
7
  class Rule {}
22
-
23
- /**
24
- * This is a class that represents a raw style rule.
25
- *
26
- * It exists to track the actual CSS rule that should be compiled
27
- * even as we transform the structure of the RawStyles object.
28
- */
29
8
  exports.Rule = Rule;
30
9
  class RawRule extends Rule {
31
10
  constructor(key, value, psuedos, atRules) {
@@ -0,0 +1,64 @@
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
+ /**
11
+ * This could be an interface, but we use a class so that we can
12
+ * use instanceof to check for it.
13
+ */
14
+ // eslint-disable-next-line no-unused-vars
15
+ declare export class Rule<+V> {}
16
+
17
+ /**
18
+ * This is a class that represents a raw style rule.
19
+ *
20
+ * It exists to track the actual CSS rule that should be compiled
21
+ * even as we transform the structure of the RawStyles object.
22
+ */
23
+ declare export class RawRule<V> extends Rule<V> {
24
+ +key: string;
25
+ +value: V;
26
+ +psuedos: ?$ReadOnlyArray<string>;
27
+ +atRules: ?$ReadOnlyArray<string>;
28
+ constructor(
29
+ key: string,
30
+ value: V,
31
+ psuedos: ?$ReadOnlyArray<string>,
32
+ atRules: ?$ReadOnlyArray<string>,
33
+ ): void;
34
+ }
35
+
36
+ declare export class RawRuleList<V> extends Rule<V> {
37
+ +rules: $ReadOnlyArray<Rule<V>>;
38
+ constructor(rules: $ReadOnlyArray<Rule<V>>): void;
39
+ }
40
+
41
+ declare export class RawRuleRTLTuple<V1, V2> extends Rule<V1 | V2> {
42
+ +rules: [RawRule<V1>, RawRule<V2>];
43
+ constructor(rule1: RawRule<V1>, rule2: RawRule<V2>): void;
44
+ }
45
+
46
+ declare export class CompiledRule<V> extends Rule<V> {
47
+ +key: string;
48
+ +value: V;
49
+ +psuedos: ?$ReadOnlyArray<string>;
50
+ +atRules: ?$ReadOnlyArray<string>;
51
+ +className: string;
52
+ constructor(
53
+ key: string,
54
+ value: V,
55
+ psuedos: ?$ReadOnlyArray<string>,
56
+ atRules: ?$ReadOnlyArray<string>,
57
+ className: string,
58
+ ): void;
59
+ }
60
+
61
+ declare export class CompiledRuleTuple2<V1, V2> extends Rule<V1 | V2> {
62
+ +rules: [CompiledRule<V1>, CompiledRule<V2>];
63
+ constructor(rule1: CompiledRule<V1>, rule2: CompiledRule<V2>): void;
64
+ }
@@ -0,0 +1,11 @@
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
+ declare function dashify(str: string): string;
11
+ export default dashify;
@@ -4,14 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = dashify;
7
- /**
8
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9
- *
10
- * This source code is licensed under the MIT license found in the
11
- * LICENSE file in the root directory of this source tree.
12
- *
13
- */
14
-
15
7
  function dashify(str) {
16
8
  return str.replace(/(^|[a-z])([A-Z])/g, '$1-$2').toLowerCase();
17
9
  }
@@ -0,0 +1,10 @@
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
+ declare export default function dashify(str: string): string;
@@ -0,0 +1,11 @@
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 { StyleXOptions } from '../common-types';
11
+ export declare const defaultOptions: StyleXOptions;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultOptions = void 0;
7
+ const defaultOptions = exports.defaultOptions = {
8
+ dev: false,
9
+ runtimeInjection: false,
10
+ useRemForFontSize: true,
11
+ test: false,
12
+ classNamePrefix: 'x',
13
+ styleResolution: 'application-order'
14
+ };
@@ -0,0 +1,25 @@
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 { StyleXOptions } from '../common-types';
11
+
12
+ // {
13
+ // ...options,
14
+ // dev: !!(options as any).dev,
15
+ // test: !!(options as any).test,
16
+ // stylexSheetName: (options as any).stylexSheetName ?? undefined,
17
+ // classNamePrefix: (options as any).classNamePrefix ?? 'x',
18
+ // importSources: (options as any).importSources ?? [name, 'stylex'],
19
+ // definedStylexCSSVariables:
20
+ // (options as any).definedStylexCSSVariables ?? {},
21
+ // genConditionalClasses: !!(options as any).genConditionalClasses,
22
+ // skipShorthandExpansion: !!(options as any).skipShorthandExpansion,
23
+ // } as StyleXOptions;
24
+
25
+ declare export const defaultOptions: StyleXOptions;
@@ -0,0 +1,15 @@
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
+ declare function genFileBasedIdentifier($$PARAM_0$$: {
11
+ readonly fileName: string;
12
+ readonly exportName: string;
13
+ readonly key?: string;
14
+ }): string;
15
+ export default genFileBasedIdentifier;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = genFileBasedIdentifier;
7
+ function genFileBasedIdentifier(_ref) {
8
+ let {
9
+ fileName,
10
+ exportName,
11
+ key
12
+ } = _ref;
13
+ return `${fileName}//${exportName}${key != null ? `.${key}` : ''}`;
14
+ }
@@ -0,0 +1,14 @@
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
+ declare export default function genFileBasedIdentifier({
11
+ +fileName: string,
12
+ +exportName: string,
13
+ +key?: string,
14
+ }): string;
@@ -0,0 +1,15 @@
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
+ export declare function genCSSRule(
11
+ className: string,
12
+ decls: string,
13
+ pseudos: ReadonlyArray<string>,
14
+ atRules: ReadonlyArray<string>,
15
+ ): string;
@@ -1,24 +1,15 @@
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
-
11
1
  'use strict';
12
2
 
13
3
  Object.defineProperty(exports, "__esModule", {
14
4
  value: true
15
5
  });
16
- exports.default = generateCSSRule;
17
- function generateCSSRule(className, decls, pseudo) {
18
- if (pseudo === '::thumb') {
19
- const selector = THUMB_VARIANTS.map(suffix => '.' + className + suffix).join(', ');
20
- return `${selector}{${decls}}`;
6
+ exports.genCSSRule = genCSSRule;
7
+ const THUMB_VARIANTS = ['::-webkit-slider-thumb', '::-moz-range-thumb', '::-ms-thumb'];
8
+ function genCSSRule(className, decls, pseudos, atRules) {
9
+ const pseudo = pseudos.filter(p => p !== '::thumb').join('');
10
+ let selectorForAtRules = `.${className}` + atRules.map(() => `.${className}`).join('') + pseudo;
11
+ if (pseudos.includes('::thumb')) {
12
+ selectorForAtRules = THUMB_VARIANTS.map(suffix => selectorForAtRules + suffix).join(', ');
21
13
  }
22
- return pseudo != null && pseudo[0] === '@' ? `${pseudo}{.${className}.${className}{${decls}}}` : pseudo != null && pseudo[0] === ':' ? `.${className}${pseudo}{${decls}}` : `.${className}{${decls}}`;
23
- }
24
- const THUMB_VARIANTS = ['::-webkit-slider-thumb', '::-moz-range-thumb', '::-ms-thumb'];
14
+ return atRules.reduce((acc, atRule) => `${atRule}{${acc}}`, `${selectorForAtRules}{${decls}}`);
15
+ }
@@ -0,0 +1,15 @@
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
+ declare export function genCSSRule(
11
+ className: string,
12
+ decls: string,
13
+ pseudos: $ReadOnlyArray<string>,
14
+ atRules: $ReadOnlyArray<string>,
15
+ ): string;
@@ -0,0 +1,16 @@
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 { StyleXOptions } from '../common-types';
11
+ declare function normalizeValue(
12
+ value: string,
13
+ key: string,
14
+ $$PARAM_2$$: StyleXOptions,
15
+ ): string;
16
+ export default normalizeValue;
@@ -1,13 +1,3 @@
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
-
11
1
  'use strict';
12
2
 
13
3
  Object.defineProperty(exports, "__esModule", {
@@ -22,14 +12,17 @@ var _whitespace = _interopRequireDefault(require("./normalizers/whitespace"));
22
12
  var _zeroDimensions = _interopRequireDefault(require("./normalizers/zero-dimensions"));
23
13
  var _detectUnclosedFns = _interopRequireDefault(require("./normalizers/detect-unclosed-fns"));
24
14
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
15
+ var _convertCamelCaseValues = _interopRequireDefault(require("./normalizers/convert-camel-case-values"));
25
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
- // `Timings` should be before `LeadingZero`, because it
27
- // changes 500ms to 0.5s, then `LeadingZero` makes it .5s
28
- const normalizers = [_detectUnclosedFns.default, _whitespace.default, _timings.default, _zeroDimensions.default, _leadingZero.default, _quotes.default, _fontSizePxToRem.default];
29
- function normalizeValue(value, key) {
17
+ const normalizers = [_detectUnclosedFns.default, _whitespace.default, _timings.default, _zeroDimensions.default, _leadingZero.default, _quotes.default, _convertCamelCaseValues.default];
18
+ function normalizeValue(value, key, _ref) {
19
+ let {
20
+ useRemForFontSize
21
+ } = _ref;
30
22
  if (value == null) {
31
23
  return value;
32
24
  }
33
25
  const parsedAST = (0, _postcssValueParser.default)(value);
34
- return normalizers.reduce((ast, fn) => fn(ast, key), parsedAST).toString();
26
+ const relevantNormalizers = useRemForFontSize ? [...normalizers, _fontSizePxToRem.default] : normalizers;
27
+ return relevantNormalizers.reduce((ast, fn) => fn(ast, key), parsedAST).toString();
35
28
  }
@@ -0,0 +1,16 @@
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 { StyleXOptions } from '../common-types';
11
+
12
+ declare export default function normalizeValue(
13
+ value: string,
14
+ key: string,
15
+ StyleXOptions,
16
+ ): string;