@stylexjs/babel-plugin 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,736 @@
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
+ 'use strict';
9
+
10
+ jest.autoMockOff();
11
+
12
+ const { transformSync } = require('@babel/core');
13
+ const stylexPlugin = require('../src/index');
14
+
15
+ function transform(source, opts = {}) {
16
+ return transformSync(source, {
17
+ filename: opts.filename,
18
+ parserOpts: {
19
+ flow: {
20
+ all: true,
21
+ },
22
+ },
23
+ plugins: [[stylexPlugin, opts]],
24
+ }).code;
25
+ }
26
+
27
+ describe('@stylexjs/babel-plugin', () => {
28
+ /**
29
+ * CSS logical properties transform
30
+ */
31
+
32
+ describe('[transform] CSS logical properties', () => {
33
+ /* Border colors */
34
+
35
+ test('"borderBlockColor"', () => {
36
+ expect(
37
+ transform(`
38
+ import stylex from 'stylex';
39
+ const styles = stylex.create({ x: { borderBlockColor: 0 } });
40
+ const classnames = stylex(styles.x);
41
+ `)
42
+ ).toMatchInlineSnapshot(`
43
+ "import stylex from 'stylex';
44
+ stylex.inject(".x1lkbs04{border-block-color:0}", 1);
45
+ const classnames = "x1lkbs04";"
46
+ `);
47
+ });
48
+
49
+ test('"borderBlockStartColor"', () => {
50
+ expect(
51
+ transform(`
52
+ import stylex from 'stylex';
53
+ const styles = stylex.create({ x: { borderBlockStartColor: 0 } });
54
+ const classnames = stylex(styles.x);
55
+ `)
56
+ ).toMatchInlineSnapshot(`
57
+ "import stylex from 'stylex';
58
+ stylex.inject(".xk864d9{border-block-start-color:0}", 1);
59
+ const classnames = "xk864d9";"
60
+ `);
61
+ });
62
+
63
+ test('"borderBlockEndColor"', () => {
64
+ expect(
65
+ transform(`
66
+ import stylex from 'stylex';
67
+ const styles = stylex.create({ x: { borderBlockEndColor: 0 } });
68
+ const classnames = stylex(styles.x);
69
+ `)
70
+ ).toMatchInlineSnapshot(`
71
+ "import stylex from 'stylex';
72
+ stylex.inject(".xz8foqe{border-block-end-color:0}", 1);
73
+ const classnames = "xz8foqe";"
74
+ `);
75
+ });
76
+
77
+ test('"borderInlineColor"', () => {
78
+ expect(
79
+ transform(`
80
+ import stylex from 'stylex';
81
+ const styles = stylex.create({ x: { borderInlineColor: 0 } });
82
+ const classnames = stylex(styles.x);
83
+ `)
84
+ ).toMatchInlineSnapshot(`
85
+ "import stylex from 'stylex';
86
+ stylex.inject(".x1v09clb{border-inline-color:0}", 1);
87
+ const classnames = "x1v09clb";"
88
+ `);
89
+ });
90
+
91
+ test('"borderInlineStartColor"', () => {
92
+ expect(
93
+ transform(`
94
+ import stylex from 'stylex';
95
+ const styles = stylex.create({ x: { borderInlineStartColor: 0 } });
96
+ const classnames = stylex(styles.x);
97
+ `)
98
+ ).toMatchInlineSnapshot(`
99
+ "import stylex from 'stylex';
100
+ stylex.inject(".x1t19a1o{border-inline-start-color:0}", 1);
101
+ const classnames = "x1t19a1o";"
102
+ `);
103
+ });
104
+
105
+ test('"borderInlineEndColor"', () => {
106
+ expect(
107
+ transform(`
108
+ import stylex from 'stylex';
109
+ const styles = stylex.create({ x: { borderInlineEndColor: 0 } });
110
+ const classnames = stylex(styles.x);
111
+ `)
112
+ ).toMatchInlineSnapshot(`
113
+ "import stylex from 'stylex';
114
+ stylex.inject(".x14mj1wy{border-inline-end-color:0}", 1);
115
+ const classnames = "x14mj1wy";"
116
+ `);
117
+ });
118
+
119
+ /* Border styles */
120
+
121
+ test('"borderBlockStyle"', () => {
122
+ expect(
123
+ transform(`
124
+ import stylex from 'stylex';
125
+ const styles = stylex.create({ x: { borderBlockStyle: 0 } });
126
+ const classnames = stylex(styles.x);
127
+ `)
128
+ ).toMatchInlineSnapshot(`
129
+ "import stylex from 'stylex';
130
+ stylex.inject(".x7mea6a{border-block-style:0}", 1);
131
+ const classnames = "x7mea6a";"
132
+ `);
133
+ });
134
+
135
+ test('"borderBlockStartStyle"', () => {
136
+ expect(
137
+ transform(`
138
+ import stylex from 'stylex';
139
+ const styles = stylex.create({ x: { borderBlockStartStyle: 0 } });
140
+ const classnames = stylex(styles.x);
141
+ `)
142
+ ).toMatchInlineSnapshot(`
143
+ "import stylex from 'stylex';
144
+ stylex.inject(".xbg2y89{border-block-start-style:0}", 1);
145
+ const classnames = "xbg2y89";"
146
+ `);
147
+ });
148
+
149
+ test('"borderBlockEndStyle"', () => {
150
+ expect(
151
+ transform(`
152
+ import stylex from 'stylex';
153
+ const styles = stylex.create({ x: { borderBlockEndStyle: 0 } });
154
+ const classnames = stylex(styles.x);
155
+ `)
156
+ ).toMatchInlineSnapshot(`
157
+ "import stylex from 'stylex';
158
+ stylex.inject(".x1yfoggo{border-block-end-style:0}", 1);
159
+ const classnames = "x1yfoggo";"
160
+ `);
161
+ });
162
+
163
+ test('"borderInlineStyle"', () => {
164
+ expect(
165
+ transform(`
166
+ import stylex from 'stylex';
167
+ const styles = stylex.create({ x: { borderInlineStyle: 0 } });
168
+ const classnames = stylex(styles.x);
169
+ `)
170
+ ).toMatchInlineSnapshot(`
171
+ "import stylex from 'stylex';
172
+ stylex.inject(".xt8kkye{border-inline-style:0}", 1);
173
+ const classnames = "xt8kkye";"
174
+ `);
175
+ });
176
+
177
+ test('"borderInlineStartStyle"', () => {
178
+ expect(
179
+ transform(`
180
+ import stylex from 'stylex';
181
+ const styles = stylex.create({ x: { borderInlineStartStyle: 0 } });
182
+ const classnames = stylex(styles.x);
183
+ `)
184
+ ).toMatchInlineSnapshot(`
185
+ "import stylex from 'stylex';
186
+ stylex.inject(".xl8mozw{border-inline-start-style:0}", 1);
187
+ const classnames = "xl8mozw";"
188
+ `);
189
+ });
190
+
191
+ test('"borderInlineEndStyle"', () => {
192
+ expect(
193
+ transform(`
194
+ import stylex from 'stylex';
195
+ const styles = stylex.create({ x: { borderInlineEndStyle: 0 } });
196
+ const classnames = stylex(styles.x);
197
+ `)
198
+ ).toMatchInlineSnapshot(`
199
+ "import stylex from 'stylex';
200
+ stylex.inject(".x10o505a{border-inline-end-style:0}", 1);
201
+ const classnames = "x10o505a";"
202
+ `);
203
+ });
204
+
205
+ /* Border widths */
206
+
207
+ test('"borderBlockWidth"', () => {
208
+ expect(
209
+ transform(`
210
+ import stylex from 'stylex';
211
+ const styles = stylex.create({ x: { borderBlockWidth: 0 } });
212
+ const classnames = stylex(styles.x);
213
+ `)
214
+ ).toMatchInlineSnapshot(`
215
+ "import stylex from 'stylex';
216
+ stylex.inject(".x1616tdu{border-block-width:0}", 1);
217
+ const classnames = "x1616tdu";"
218
+ `);
219
+ });
220
+
221
+ test('"borderBlockStartWidth"', () => {
222
+ expect(
223
+ transform(`
224
+ import stylex from 'stylex';
225
+ const styles = stylex.create({ x: { borderBlockStartWidth: 0 } });
226
+ const classnames = stylex(styles.x);
227
+ `)
228
+ ).toMatchInlineSnapshot(`
229
+ "import stylex from 'stylex';
230
+ stylex.inject(".xnh6zc7{border-block-start-width:0}", 1);
231
+ const classnames = "xnh6zc7";"
232
+ `);
233
+ });
234
+
235
+ test('"borderBlockEndWidth"', () => {
236
+ expect(
237
+ transform(`
238
+ import stylex from 'stylex';
239
+ const styles = stylex.create({ x: { borderBlockEndWidth: 0 } });
240
+ const classnames = stylex(styles.x);
241
+ `)
242
+ ).toMatchInlineSnapshot(`
243
+ "import stylex from 'stylex';
244
+ stylex.inject(".x1fvpbjb{border-block-end-width:0}", 1);
245
+ const classnames = "x1fvpbjb";"
246
+ `);
247
+ });
248
+
249
+ test('"borderInlineWidth"', () => {
250
+ expect(
251
+ transform(`
252
+ import stylex from 'stylex';
253
+ const styles = stylex.create({ x: { borderInlineWidth: 0 } });
254
+ const classnames = stylex(styles.x);
255
+ `)
256
+ ).toMatchInlineSnapshot(`
257
+ "import stylex from 'stylex';
258
+ stylex.inject(".xuxrje7{border-inline-width:0}", 1);
259
+ const classnames = "xuxrje7";"
260
+ `);
261
+ });
262
+
263
+ test('"borderInlineStartWidth"', () => {
264
+ expect(
265
+ transform(`
266
+ import stylex from 'stylex';
267
+ const styles = stylex.create({ x: { borderInlineStartWidth: 0 } });
268
+ const classnames = stylex(styles.x);
269
+ `)
270
+ ).toMatchInlineSnapshot(`
271
+ "import stylex from 'stylex';
272
+ stylex.inject(".x14e42zd{border-inline-start-width:0}", 1);
273
+ const classnames = "x14e42zd";"
274
+ `);
275
+ });
276
+
277
+ test('"borderInlineEndWidth"', () => {
278
+ expect(
279
+ transform(`
280
+ import stylex from 'stylex';
281
+ const styles = stylex.create({ x: { borderInlineEndWidth: 0 } });
282
+ const classnames = stylex(styles.x);
283
+ `)
284
+ ).toMatchInlineSnapshot(`
285
+ "import stylex from 'stylex';
286
+ stylex.inject(".x10w94by{border-inline-end-width:0}", 1);
287
+ const classnames = "x10w94by";"
288
+ `);
289
+ });
290
+
291
+ /* Position offsets */
292
+
293
+ test('"insetBlockStart"', () => {
294
+ expect(
295
+ transform(`
296
+ import stylex from 'stylex';
297
+ const styles = stylex.create({ x: { insetBlockStart: 0 } });
298
+ const classnames = stylex(styles.x);
299
+ `)
300
+ ).toMatchInlineSnapshot(`
301
+ "import stylex from 'stylex';
302
+ stylex.inject(".xlb5a52{inset-block-start:0}", 1);
303
+ const classnames = "xlb5a52";"
304
+ `);
305
+ });
306
+
307
+ test('"insetBlock"', () => {
308
+ expect(
309
+ transform(`
310
+ import stylex from 'stylex';
311
+ const styles = stylex.create({ x: { insetBlock: 0 } });
312
+ const classnames = stylex(styles.x);
313
+ `)
314
+ ).toMatchInlineSnapshot(`
315
+ "import stylex from 'stylex';
316
+ stylex.inject(".x10no89f{inset-block:0}", 1);
317
+ const classnames = "x10no89f";"
318
+ `);
319
+ });
320
+
321
+ test('"insetBlockEnd"', () => {
322
+ expect(
323
+ transform(`
324
+ import stylex from 'stylex';
325
+ const styles = stylex.create({ x: { insetBlockEnd: 0 } });
326
+ const classnames = stylex(styles.x);
327
+ `)
328
+ ).toMatchInlineSnapshot(`
329
+ "import stylex from 'stylex';
330
+ stylex.inject(".xuufnwz{inset-block-end:0}", 1);
331
+ const classnames = "xuufnwz";"
332
+ `);
333
+ });
334
+
335
+ test('"insetBlockStart"', () => {
336
+ expect(
337
+ transform(`
338
+ import stylex from 'stylex';
339
+ const styles = stylex.create({ x: { insetBlockStart: 0 } });
340
+ const classnames = stylex(styles.x);
341
+ `)
342
+ ).toMatchInlineSnapshot(`
343
+ "import stylex from 'stylex';
344
+ stylex.inject(".xlb5a52{inset-block-start:0}", 1);
345
+ const classnames = "xlb5a52";"
346
+ `);
347
+ });
348
+
349
+ test('"insetInline"', () => {
350
+ expect(
351
+ transform(`
352
+ import stylex from 'stylex';
353
+ const styles = stylex.create({ x: { insetInline: 0 } });
354
+ const classnames = stylex(styles.x);
355
+ `)
356
+ ).toMatchInlineSnapshot(`
357
+ "import stylex from 'stylex';
358
+ stylex.inject(".x17y0mx6{inset-inline:0}", 1);
359
+ const classnames = "x17y0mx6";"
360
+ `);
361
+ });
362
+
363
+ test('"insetInlineEnd"', () => {
364
+ expect(
365
+ transform(`
366
+ import stylex from 'stylex';
367
+ const styles = stylex.create({ x: { insetInlineEnd: 0 } });
368
+ const classnames = stylex(styles.x);
369
+ `)
370
+ ).toMatchInlineSnapshot(`
371
+ "import stylex from 'stylex';
372
+ stylex.inject(".xtijo5x{inset-inline-end:0}", 1);
373
+ const classnames = "xtijo5x";"
374
+ `);
375
+ });
376
+
377
+ test('"insetInlineStart"', () => {
378
+ expect(
379
+ transform(`
380
+ import stylex from 'stylex';
381
+ const styles = stylex.create({ x: { insetInlineStart: 0 } });
382
+ const classnames = stylex(styles.x);
383
+ `)
384
+ ).toMatchInlineSnapshot(`
385
+ "import stylex from 'stylex';
386
+ stylex.inject(".x1o0tod{inset-inline-start:0}", 1);
387
+ const classnames = "x1o0tod";"
388
+ `);
389
+ });
390
+
391
+ /* Margins */
392
+
393
+ test('"marginBlock"', () => {
394
+ expect(
395
+ transform(`
396
+ import stylex from 'stylex';
397
+ const styles = stylex.create({ x: { marginBlock: 0 } });
398
+ const classnames = stylex(styles.x);
399
+ `)
400
+ ).toMatchInlineSnapshot(`
401
+ "import stylex from 'stylex';
402
+ stylex.inject(".x10im51j{margin-block:0}", 1);
403
+ const classnames = "x10im51j";"
404
+ `);
405
+ });
406
+
407
+ test('"marginBlockEnd"', () => {
408
+ expect(
409
+ transform(`
410
+ import stylex from 'stylex';
411
+ const styles = stylex.create({ x: { marginBlockEnd: 0 } });
412
+ const classnames = stylex(styles.x);
413
+ `)
414
+ ).toMatchInlineSnapshot(`
415
+ "import stylex from 'stylex';
416
+ stylex.inject(".x1g8azq5{margin-block-end:0}", 1);
417
+ const classnames = "x1g8azq5";"
418
+ `);
419
+ });
420
+
421
+ test('"marginBlockStart"', () => {
422
+ expect(
423
+ transform(`
424
+ import stylex from 'stylex';
425
+ const styles = stylex.create({ x: { marginBlockStart: 0 } });
426
+ const classnames = stylex(styles.x);
427
+ `)
428
+ ).toMatchInlineSnapshot(`
429
+ "import stylex from 'stylex';
430
+ stylex.inject(".x1rjqi9y{margin-block-start:0}", 1);
431
+ const classnames = "x1rjqi9y";"
432
+ `);
433
+ });
434
+
435
+ test('"marginInline"', () => {
436
+ expect(
437
+ transform(`
438
+ import stylex from 'stylex';
439
+ const styles = stylex.create({ x: { marginInline: 0 } });
440
+ const classnames = stylex(styles.x);
441
+ `)
442
+ ).toMatchInlineSnapshot(`
443
+ "import stylex from 'stylex';
444
+ stylex.inject(".xrxpjvj{margin-inline:0}", 1);
445
+ const classnames = "xrxpjvj";"
446
+ `);
447
+ });
448
+
449
+ test('"marginInlineEnd"', () => {
450
+ expect(
451
+ transform(`
452
+ import stylex from 'stylex';
453
+ const styles = stylex.create({ x: { marginInlineEnd: 0 } });
454
+ const classnames = stylex(styles.x);
455
+ `)
456
+ ).toMatchInlineSnapshot(`
457
+ "import stylex from 'stylex';
458
+ stylex.inject(".x14z9mp{margin-inline-end:0}", 1);
459
+ const classnames = "x14z9mp";"
460
+ `);
461
+ });
462
+
463
+ test('"marginInlineStart"', () => {
464
+ expect(
465
+ transform(`
466
+ import stylex from 'stylex';
467
+ const styles = stylex.create({ x: { marginInlineStart: 0 } });
468
+ const classnames = stylex(styles.x);
469
+ `)
470
+ ).toMatchInlineSnapshot(`
471
+ "import stylex from 'stylex';
472
+ stylex.inject(".x1lziwak{margin-inline-start:0}", 1);
473
+ const classnames = "x1lziwak";"
474
+ `);
475
+ });
476
+
477
+ /* Padding */
478
+
479
+ test('"paddingBlock"', () => {
480
+ expect(
481
+ transform(`
482
+ import stylex from 'stylex';
483
+ const styles = stylex.create({ x: { paddingBlock: 0 } });
484
+ const classnames = stylex(styles.x);
485
+ `)
486
+ ).toMatchInlineSnapshot(`
487
+ "import stylex from 'stylex';
488
+ stylex.inject(".xt970qd{padding-block:0}", 1);
489
+ const classnames = "xt970qd";"
490
+ `);
491
+ });
492
+
493
+ test('"paddingBlockEnd"', () => {
494
+ expect(
495
+ transform(`
496
+ import stylex from 'stylex';
497
+ const styles = stylex.create({ x: { paddingBlockEnd: 0 } });
498
+ const classnames = stylex(styles.x);
499
+ `)
500
+ ).toMatchInlineSnapshot(`
501
+ "import stylex from 'stylex';
502
+ stylex.inject(".x33s65n{padding-block-end:0}", 1);
503
+ const classnames = "x33s65n";"
504
+ `);
505
+ });
506
+
507
+ test('"paddingBlockStart"', () => {
508
+ expect(
509
+ transform(`
510
+ import stylex from 'stylex';
511
+ const styles = stylex.create({ x: { paddingBlockStart: 0 } });
512
+ const classnames = stylex(styles.x);
513
+ `)
514
+ ).toMatchInlineSnapshot(`
515
+ "import stylex from 'stylex';
516
+ stylex.inject(".x1wpizmb{padding-block-start:0}", 1);
517
+ const classnames = "x1wpizmb";"
518
+ `);
519
+ });
520
+
521
+ test('"paddingInline"', () => {
522
+ expect(
523
+ transform(`
524
+ import stylex from 'stylex';
525
+ const styles = stylex.create({ x: { paddingInline: 0 } });
526
+ const classnames = stylex(styles.x);
527
+ `)
528
+ ).toMatchInlineSnapshot(`
529
+ "import stylex from 'stylex';
530
+ stylex.inject(".xnjsko4{padding-inline:0}", 1);
531
+ const classnames = "xnjsko4";"
532
+ `);
533
+ });
534
+
535
+ test('"paddingInlineEnd"', () => {
536
+ expect(
537
+ transform(`
538
+ import stylex from 'stylex';
539
+ const styles = stylex.create({ x: { paddingInlineEnd: 0 } });
540
+ const classnames = stylex(styles.x);
541
+ `)
542
+ ).toMatchInlineSnapshot(`
543
+ "import stylex from 'stylex';
544
+ stylex.inject(".xyri2b{padding-inline-end:0}", 1);
545
+ const classnames = "xyri2b";"
546
+ `);
547
+ });
548
+
549
+ test('"paddingInlineStart"', () => {
550
+ expect(
551
+ transform(`
552
+ import stylex from 'stylex';
553
+ const styles = stylex.create({ x: { paddingInlineStart: 0 } });
554
+ const classnames = stylex(styles.x);
555
+ `)
556
+ ).toMatchInlineSnapshot(`
557
+ "import stylex from 'stylex';
558
+ stylex.inject(".x1c1uobl{padding-inline-start:0}", 1);
559
+ const classnames = "x1c1uobl";"
560
+ `);
561
+ });
562
+
563
+ /**
564
+ * Non-standard properties
565
+ */
566
+
567
+ test('[non-standard] "end" (aka "insetInlineEnd")', () => {
568
+ expect(
569
+ transform(`
570
+ import stylex from 'stylex';
571
+ const styles = stylex.create({ x: { end: 5 } });
572
+ const classnames = stylex(styles.x);
573
+ `)
574
+ ).toMatchInlineSnapshot(`
575
+ "import stylex from 'stylex';
576
+ stylex.inject(".xnx3k43{right:5px}", 1, ".xnx3k43{left:5px}");
577
+ const classnames = "xnx3k43";"
578
+ `);
579
+ });
580
+
581
+ test('[non-standard] "marginEnd" (aka "marginInlineEnd")', () => {
582
+ expect(
583
+ transform(`
584
+ import stylex from 'stylex';
585
+ const styles = stylex.create({ x: { marginEnd: 0 } });
586
+ const classnames = stylex(styles.x);
587
+ `)
588
+ ).toMatchInlineSnapshot(`
589
+ "import stylex from 'stylex';
590
+ stylex.inject(".x11i5rnm{margin-right:0}", 1, ".x11i5rnm{margin-left:0}");
591
+ const classnames = "x11i5rnm";"
592
+ `);
593
+ });
594
+
595
+ test('[non-standard] "marginHorizontal" (aka "marginInline")', () => {
596
+ expect(
597
+ transform(`
598
+ import stylex from 'stylex';
599
+ const styles = stylex.create({ x: { marginHorizontal: 0 } });
600
+ const classnames = stylex(styles.x);
601
+ `)
602
+ ).toMatchInlineSnapshot(`
603
+ "import stylex from 'stylex';
604
+ stylex.inject(".x1mh8g0r{margin-left:0}", 1, ".x1mh8g0r{margin-right:0}");
605
+ stylex.inject(".x11i5rnm{margin-right:0}", 1, ".x11i5rnm{margin-left:0}");
606
+ const classnames = "x1mh8g0r x11i5rnm";"
607
+ `);
608
+ });
609
+
610
+ test('[non-standard] "marginStart" (aka "marginInlineStart")', () => {
611
+ expect(
612
+ transform(`
613
+ import stylex from 'stylex';
614
+ const styles = stylex.create({ x: { marginStart: 0 } });
615
+ const classnames = stylex(styles.x);
616
+ `)
617
+ ).toMatchInlineSnapshot(`
618
+ "import stylex from 'stylex';
619
+ stylex.inject(".x1mh8g0r{margin-left:0}", 1, ".x1mh8g0r{margin-right:0}");
620
+ const classnames = "x1mh8g0r";"
621
+ `);
622
+ });
623
+
624
+ test('[non-standard] "marginVertical" (aka "marginBlock")', () => {
625
+ expect(
626
+ transform(`
627
+ import stylex from 'stylex';
628
+ const styles = stylex.create({ x: { marginVertical: 0 } });
629
+ const classnames = stylex(styles.x);
630
+ `)
631
+ ).toMatchInlineSnapshot(`
632
+ "import stylex from 'stylex';
633
+ stylex.inject(".xdj266r{margin-top:0}", 1);
634
+ stylex.inject(".xat24cr{margin-bottom:0}", 1);
635
+ const classnames = "xdj266r xat24cr";"
636
+ `);
637
+ });
638
+
639
+ test('[non-standard] "paddingEnd" (aka "paddingInlineEnd")', () => {
640
+ expect(
641
+ transform(`
642
+ import stylex from 'stylex';
643
+ const styles = stylex.create({ x: { paddingEnd: 0 } });
644
+ const classnames = stylex(styles.x);
645
+ `)
646
+ ).toMatchInlineSnapshot(`
647
+ "import stylex from 'stylex';
648
+ stylex.inject(".x4uap5{padding-right:0}", 1, ".x4uap5{padding-left:0}");
649
+ const classnames = "x4uap5";"
650
+ `);
651
+ });
652
+
653
+ test('[non-standard] "paddingHorizontal" (aka "paddingInline")', () => {
654
+ expect(
655
+ transform(`
656
+ import stylex from 'stylex';
657
+ const styles = stylex.create({ x: { paddingHorizontal: 0 } });
658
+ const classnames = stylex(styles.x);
659
+ `)
660
+ ).toMatchInlineSnapshot(`
661
+ "import stylex from 'stylex';
662
+ stylex.inject(".xkhd6sd{padding-left:0}", 1, ".xkhd6sd{padding-right:0}");
663
+ stylex.inject(".x4uap5{padding-right:0}", 1, ".x4uap5{padding-left:0}");
664
+ const classnames = "xkhd6sd x4uap5";"
665
+ `);
666
+ });
667
+
668
+ test('[non-standard] "paddingStart" (aka "paddingInlineStart")', () => {
669
+ expect(
670
+ transform(`
671
+ import stylex from 'stylex';
672
+ const styles = stylex.create({ x: { paddingStart: 0 } });
673
+ const classnames = stylex(styles.x);
674
+ `)
675
+ ).toMatchInlineSnapshot(`
676
+ "import stylex from 'stylex';
677
+ stylex.inject(".xkhd6sd{padding-left:0}", 1, ".xkhd6sd{padding-right:0}");
678
+ const classnames = "xkhd6sd";"
679
+ `);
680
+ });
681
+
682
+ test('[non-standard] "paddingVertical" (aka "paddingBlock")', () => {
683
+ expect(
684
+ transform(`
685
+ import stylex from 'stylex';
686
+ const styles = stylex.create({ x: { paddingVertical: 0 } });
687
+ const classnames = stylex(styles.x);
688
+ `)
689
+ ).toMatchInlineSnapshot(`
690
+ "import stylex from 'stylex';
691
+ stylex.inject(".xexx8yu{padding-top:0}", 1);
692
+ stylex.inject(".x18d9i69{padding-bottom:0}", 1);
693
+ const classnames = "xexx8yu x18d9i69";"
694
+ `);
695
+ });
696
+
697
+ test('[non-standard] "start" (aka "insetInlineStart")', () => {
698
+ expect(
699
+ transform(`
700
+ import stylex from 'stylex';
701
+ const styles = stylex.create({ x: { start: 5 } });
702
+ const classnames = stylex(styles.x);
703
+ `)
704
+ ).toMatchInlineSnapshot(`
705
+ "import stylex from 'stylex';
706
+ stylex.inject(".xq7jlbq{left:5px}", 1, ".xq7jlbq{right:5px}");
707
+ const classnames = "xq7jlbq";"
708
+ `);
709
+ });
710
+
711
+ /**
712
+ * Legacy transforms
713
+ */
714
+
715
+ test('[legacy] short-form property value flipping', () => {
716
+ expect(
717
+ transform(`
718
+ import stylex from 'stylex';
719
+ const styles = stylex.create({
720
+ four: {
721
+ margin: '1 2 3 4',
722
+ }
723
+ });
724
+ stylex(styles.four);
725
+ `)
726
+ ).toMatchInlineSnapshot(`
727
+ "import stylex from 'stylex';
728
+ stylex.inject(".x14bfre8{margin-top:1}", 1);
729
+ stylex.inject(".xhi7eei{margin-right:2}", 1, ".xhi7eei{margin-left:2}");
730
+ stylex.inject(".x1p2gmtr{margin-bottom:3}", 1);
731
+ stylex.inject(".x15l52qr{margin-left:4}", 1, ".x15l52qr{margin-right:4}");
732
+ "x14bfre8 xhi7eei x1p2gmtr x15l52qr";"
733
+ `);
734
+ });
735
+ });
736
+ });