Skip to main content

stylex_css/order/constants/
application_order.rs

1use stylex_structures::order_pair::OrderPair;
2
3#[derive(Debug, PartialEq, Eq, Clone, Hash)]
4pub struct Shorthands;
5
6impl Shorthands {
7  fn all(_: Option<String>) -> Result<Vec<OrderPair>, String> {
8    Err("all is not supported".into())
9  }
10  fn animation(value: Option<String>) -> Result<Vec<OrderPair>, String> {
11    let mut result = vec![
12      OrderPair("animation".to_string(), value),
13      OrderPair("animationComposition".to_string(), None),
14      OrderPair("animationName".to_string(), None),
15      OrderPair("animationDuration".to_string(), None),
16      OrderPair("animationTimingFunction".to_string(), None),
17      OrderPair("animationDelay".to_string(), None),
18      OrderPair("animationIterationCount".to_string(), None),
19      OrderPair("animationDirection".to_string(), None),
20      OrderPair("animationFillMode".to_string(), None),
21      OrderPair("animationPlayState".to_string(), None),
22      OrderPair("animationTimeline".to_string(), None),
23    ];
24
25    result.extend(Shorthands::animation_range(None)?);
26
27    Ok(result)
28  }
29
30  fn animation_range(value: Option<String>) -> Result<Vec<OrderPair>, String> {
31    let result = vec![
32      OrderPair("animationRange".to_string(), value),
33      OrderPair("animationRangeEnd".to_string(), None),
34      OrderPair("animationRangeStart".to_string(), None),
35    ];
36
37    Ok(result)
38  }
39
40  fn background(value: Option<String>) -> Result<Vec<OrderPair>, String> {
41    let mut result = vec![
42      OrderPair("background".to_string(), value),
43      OrderPair("backgroundAttachment".to_string(), None),
44      OrderPair("backgroundClip".to_string(), None),
45      OrderPair("backgroundColor".to_string(), None),
46      OrderPair("backgroundImage".to_string(), None),
47      OrderPair("backgroundOrigin".to_string(), None),
48      OrderPair("backgroundRepeat".to_string(), None),
49      OrderPair("backgroundSize".to_string(), None),
50    ];
51
52    result.extend(Shorthands::background_position(None)?);
53
54    Ok(result)
55  }
56
57  fn background_position(value: Option<String>) -> Result<Vec<OrderPair>, String> {
58    let result = vec![
59      OrderPair("backgroundPosition".to_string(), value),
60      OrderPair("backgroundPositionX".to_string(), None),
61      OrderPair("backgroundPositionY".to_string(), None),
62    ];
63
64    Ok(result)
65  }
66
67  // These will be removed later, matching the properties with React Native.
68  // For now, we're compiling them to the React Native properties.
69  fn border(value: Option<String>) -> Result<Vec<OrderPair>, String> {
70    let mut result = vec![OrderPair("border".to_string(), value)];
71
72    result.extend(Shorthands::border_width(None)?);
73    result.extend(Shorthands::border_style(None)?);
74    result.extend(Shorthands::border_color(None)?);
75
76    Ok(result)
77  }
78  fn border_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
79    let mut result = vec![OrderPair("borderInline".to_string(), value)];
80
81    result.extend(Shorthands::border_inline_width(None)?);
82    result.extend(Shorthands::border_inline_style(None)?);
83    result.extend(Shorthands::border_inline_color(None)?);
84
85    Ok(result)
86  }
87  fn border_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
88    let mut result = vec![OrderPair("borderBlock".to_string(), value)];
89
90    result.extend(Shorthands::border_block_width(None)?);
91    result.extend(Shorthands::border_block_style(None)?);
92    result.extend(Shorthands::border_block_color(None)?);
93
94    Ok(result)
95  }
96
97  fn border_top(value: Option<String>) -> Result<Vec<OrderPair>, String> {
98    let result = vec![
99      OrderPair("borderTop".to_string(), value),
100      OrderPair("borderTopWidth".to_string(), None),
101      OrderPair("borderTopStyle".to_string(), None),
102      OrderPair("borderTopColor".to_string(), None),
103    ];
104
105    Ok(result)
106  }
107  // @Deprecated
108  fn border_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
109    let mut result = vec![OrderPair("borderInlineEnd".to_string(), value)];
110
111    result.extend(Shorthands::border_inline_end_width(None)?);
112    result.extend(Shorthands::border_inline_end_style(None)?);
113    result.extend(Shorthands::border_inline_end_color(None)?);
114
115    Ok(result)
116  }
117  // @Deprecated
118  fn border_right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
119    let mut result = vec![OrderPair("borderRight".to_string(), value)];
120
121    result.extend(Shorthands::border_right_width(None)?);
122    result.extend(Shorthands::border_right_style(None)?);
123    result.extend(Shorthands::border_right_color(None)?);
124
125    Ok(result)
126  }
127  // @Deprecated
128  fn border_bottom(value: Option<String>) -> Result<Vec<OrderPair>, String> {
129    let result = vec![
130      OrderPair("borderBottom".to_string(), value),
131      OrderPair("borderBottomWidth".to_string(), None),
132      OrderPair("borderBottomStyle".to_string(), None),
133      OrderPair("borderBottomColor".to_string(), None),
134    ];
135
136    Ok(result)
137  }
138  // @Deprecated
139  fn border_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
140    let mut result = vec![OrderPair("borderInlineStart".to_string(), value)];
141
142    result.extend(Shorthands::border_inline_start_width(None)?);
143    result.extend(Shorthands::border_inline_start_style(None)?);
144    result.extend(Shorthands::border_inline_start_color(None)?);
145
146    Ok(result)
147  }
148  // @Deprecated
149  fn border_left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
150    let mut result = vec![OrderPair("borderLeft".to_string(), value)];
151
152    result.extend(Shorthands::border_left_width(None)?);
153    result.extend(Shorthands::border_left_style(None)?);
154    result.extend(Shorthands::border_left_color(None)?);
155
156    Ok(result)
157  }
158  fn border_inline_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
159    let result = vec![
160      OrderPair("borderInlineWidth".to_string(), value),
161      OrderPair("borderInlineStartWidth".to_string(), None),
162      OrderPair("borderLeftWidth".to_string(), None),
163      OrderPair("borderInlineEndWidth".to_string(), None),
164      OrderPair("borderRightWidth".to_string(), None),
165    ];
166
167    Ok(result)
168  }
169  fn border_inline_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
170    let result = vec![
171      OrderPair("borderInlineStyle".to_string(), value),
172      OrderPair("borderInlineStartStyle".to_string(), None),
173      OrderPair("borderLeftStyle".to_string(), None),
174      OrderPair("borderInlineEndStyle".to_string(), None),
175      OrderPair("borderRightStyle".to_string(), None),
176    ];
177
178    Ok(result)
179  }
180  fn border_inline_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
181    let result = vec![
182      OrderPair("borderInlineColor".to_string(), value),
183      OrderPair("borderInlineStartColor".to_string(), None),
184      OrderPair("borderLeftColor".to_string(), None),
185      OrderPair("borderInlineEndColor".to_string(), None),
186      OrderPair("borderRightColor".to_string(), None),
187    ];
188
189    Ok(result)
190  }
191  fn border_block_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
192    let result = vec![
193      OrderPair("borderBlockWidth".to_string(), value),
194      OrderPair("borderTopWidth".to_string(), None),
195      OrderPair("borderBottomWidth".to_string(), None),
196    ];
197
198    Ok(result)
199  }
200  fn border_block_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
201    let result = vec![
202      OrderPair("borderBlockStyle".to_string(), value),
203      OrderPair("borderTopStyle".to_string(), None),
204      OrderPair("borderBottomStyle".to_string(), None),
205    ];
206
207    Ok(result)
208  }
209  fn border_block_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
210    let result = vec![
211      OrderPair("borderBlockColor".to_string(), value),
212      OrderPair("borderTopColor".to_string(), None),
213      OrderPair("borderBottomColor".to_string(), None),
214    ];
215
216    Ok(result)
217  }
218  fn border_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
219    let mut result = vec![OrderPair("borderColor".to_string(), value)];
220
221    result.extend(Shorthands::border_inline_color(None)?);
222    result.extend(Shorthands::border_block_color(None)?);
223
224    Ok(result)
225  }
226  fn border_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
227    let mut result = vec![OrderPair("borderStyle".to_string(), value)];
228
229    result.extend(Shorthands::border_inline_style(None)?);
230    result.extend(Shorthands::border_block_style(None)?);
231
232    Ok(result)
233  }
234  fn border_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
235    let mut result = vec![OrderPair("borderWidth".to_string(), value)];
236
237    result.extend(Shorthands::border_inline_width(None)?);
238    result.extend(Shorthands::border_block_width(None)?);
239
240    Ok(result)
241  }
242  fn border_inline_start_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
243    let result = vec![
244      OrderPair("borderInlineStartColor".to_string(), value),
245      OrderPair("borderLeftColor".to_string(), None),
246      OrderPair("borderRightColor".to_string(), None),
247    ];
248
249    Ok(result)
250  }
251  fn border_inline_end_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
252    let result = vec![
253      OrderPair("borderInlineEndColor".to_string(), value),
254      OrderPair("borderLeftColor".to_string(), None),
255      OrderPair("borderRightColor".to_string(), None),
256    ];
257
258    Ok(result)
259  }
260  fn border_inline_start_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
261    let result = vec![
262      OrderPair("borderInlineStartStyle".to_string(), value),
263      OrderPair("borderLeftStyle".to_string(), None),
264      OrderPair("borderRightStyle".to_string(), None),
265    ];
266
267    Ok(result)
268  }
269  fn border_inline_end_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
270    let result = vec![
271      OrderPair("borderInlineEndStyle".to_string(), value),
272      OrderPair("borderLeftStyle".to_string(), None),
273      OrderPair("borderRightStyle".to_string(), None),
274    ];
275
276    Ok(result)
277  }
278  fn border_inline_start_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
279    let result = vec![
280      OrderPair("borderInlineStartWidth".to_string(), value),
281      OrderPair("borderLeftWidth".to_string(), None),
282      OrderPair("borderRightWidth".to_string(), None),
283    ];
284
285    Ok(result)
286  }
287  fn border_inline_end_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
288    let result = vec![
289      OrderPair("borderInlineEndWidth".to_string(), value),
290      OrderPair("borderLeftWidth".to_string(), None),
291      OrderPair("borderRightWidth".to_string(), None),
292    ];
293
294    Ok(result)
295  }
296  fn border_left_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
297    let result = vec![
298      OrderPair("borderLeftColor".to_string(), value),
299      OrderPair("borderInlineStartColor".to_string(), None),
300      OrderPair("borderInlineEndColor".to_string(), None),
301    ];
302
303    Ok(result)
304  }
305  fn border_right_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
306    let result = vec![
307      OrderPair("borderRightColor".to_string(), value),
308      OrderPair("borderInlineStartColor".to_string(), None),
309      OrderPair("borderInlineEndColor".to_string(), None),
310    ];
311
312    Ok(result)
313  }
314  fn border_left_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
315    let result = vec![
316      OrderPair("borderLeftStyle".to_string(), value),
317      OrderPair("borderInlineStartStyle".to_string(), None),
318      OrderPair("borderInlineEndStyle".to_string(), None),
319    ];
320
321    Ok(result)
322  }
323  fn border_right_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
324    let result = vec![
325      OrderPair("borderRightStyle".to_string(), value),
326      OrderPair("borderInlineStartStyle".to_string(), None),
327      OrderPair("borderInlineEndStyle".to_string(), None),
328    ];
329
330    Ok(result)
331  }
332  fn border_left_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
333    let result = vec![
334      OrderPair("borderLeftWidth".to_string(), value),
335      OrderPair("borderInlineStartWidth".to_string(), None),
336      OrderPair("borderInlineEndWidth".to_string(), None),
337    ];
338
339    Ok(result)
340  }
341  fn border_right_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
342    let result = vec![
343      OrderPair("borderRightWidth".to_string(), value),
344      OrderPair("borderInlineStartWidth".to_string(), None),
345      OrderPair("borderInlineEndWidth".to_string(), None),
346    ];
347
348    Ok(result)
349  }
350
351  fn border_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
352    let result = vec![
353      OrderPair("borderRadius".to_string(), value),
354      // // logical constituents
355      OrderPair("borderStartStartRadius".to_string(), None),
356      OrderPair("borderStartEndRadius".to_string(), None),
357      OrderPair("borderEndStartRadius".to_string(), None),
358      OrderPair("borderEndEndRadius".to_string(), None),
359      // physical constituents
360      OrderPair("borderTopLeftRadius".to_string(), None),
361      OrderPair("borderTopRightRadius".to_string(), None),
362      OrderPair("borderBottomLeftRadius".to_string(), None),
363      OrderPair("borderBottomRightRadius".to_string(), None),
364    ];
365
366    Ok(result)
367  }
368
369  fn border_start_start_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
370    let result = vec![
371      OrderPair("borderStartStartRadius".to_string(), value),
372      OrderPair("borderTopLeftRadius".to_string(), None),
373      OrderPair("borderTopRightRadius".to_string(), None),
374    ];
375
376    Ok(result)
377  }
378  fn border_start_end_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
379    let result = vec![
380      OrderPair("borderStartEndRadius".to_string(), value),
381      OrderPair("borderTopLeftRadius".to_string(), None),
382      OrderPair("borderTopRightRadius".to_string(), None),
383    ];
384
385    Ok(result)
386  }
387  fn border_end_start_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
388    let result = vec![
389      OrderPair("borderEndStartRadius".to_string(), value),
390      OrderPair("borderBottomLeftRadius".to_string(), None),
391      OrderPair("borderBottomRightRadius".to_string(), None),
392    ];
393
394    Ok(result)
395  }
396  fn border_end_end_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
397    let result = vec![
398      OrderPair("borderEndEndRadius".to_string(), value),
399      OrderPair("borderBottomLeftRadius".to_string(), None),
400      OrderPair("borderBottomRightRadius".to_string(), None),
401    ];
402
403    Ok(result)
404  }
405  fn border_top_left_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
406    let result = vec![
407      OrderPair("borderTopLeftRadius".to_string(), value),
408      OrderPair("borderStartStartRadius".to_string(), None),
409      OrderPair("borderStartEndRadius".to_string(), None),
410    ];
411
412    Ok(result)
413  }
414  fn border_top_right_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
415    let result = vec![
416      OrderPair("borderTopRightRadius".to_string(), value),
417      OrderPair("borderStartStartRadius".to_string(), None),
418      OrderPair("borderStartEndRadius".to_string(), None),
419    ];
420
421    Ok(result)
422  }
423  fn border_bottom_left_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
424    let result = vec![
425      OrderPair("borderBottomLeftRadius".to_string(), value),
426      OrderPair("borderEndStartRadius".to_string(), None),
427      OrderPair("borderEndEndRadius".to_string(), None),
428    ];
429
430    Ok(result)
431  }
432  fn border_bottom_right_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
433    let result = vec![
434      OrderPair("borderBottomRightRadius".to_string(), value),
435      OrderPair("borderEndStartRadius".to_string(), None),
436      OrderPair("borderEndEndRadius".to_string(), None),
437    ];
438
439    Ok(result)
440  }
441
442  fn corner_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
443    let result = vec![
444      OrderPair("cornerShape".to_string(), value),
445      OrderPair("cornerStartStartShape".to_string(), None),
446      OrderPair("cornerStartEndShape".to_string(), None),
447      OrderPair("cornerEndStartShape".to_string(), None),
448      OrderPair("cornerEndEndShape".to_string(), None),
449      OrderPair("cornerTopLeftShape".to_string(), None),
450      OrderPair("cornerTopRightShape".to_string(), None),
451      OrderPair("cornerBottomLeftShape".to_string(), None),
452      OrderPair("cornerBottomRightShape".to_string(), None),
453    ];
454
455    Ok(result)
456  }
457
458  fn corner_start_start_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
459    let result = vec![
460      OrderPair("cornerStartStartShape".to_string(), value),
461      OrderPair("cornerTopLeftShape".to_string(), None),
462      OrderPair("cornerTopRightShape".to_string(), None),
463    ];
464
465    Ok(result)
466  }
467
468  fn corner_start_end_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
469    let result = vec![
470      OrderPair("cornerStartEndShape".to_string(), value),
471      OrderPair("cornerTopLeftShape".to_string(), None),
472      OrderPair("cornerTopRightShape".to_string(), None),
473    ];
474
475    Ok(result)
476  }
477
478  fn corner_end_start_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
479    let result = vec![
480      OrderPair("cornerEndStartShape".to_string(), value),
481      OrderPair("cornerBottomLeftShape".to_string(), None),
482      OrderPair("cornerBottomRightShape".to_string(), None),
483    ];
484
485    Ok(result)
486  }
487
488  fn corner_end_end_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
489    let result = vec![
490      OrderPair("cornerEndEndShape".to_string(), value),
491      OrderPair("cornerBottomLeftShape".to_string(), None),
492      OrderPair("cornerBottomRightShape".to_string(), None),
493    ];
494
495    Ok(result)
496  }
497
498  fn corner_top_left_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
499    let result = vec![
500      OrderPair("cornerTopLeftShape".to_string(), value),
501      OrderPair("cornerStartStartShape".to_string(), None),
502      OrderPair("cornerStartEndShape".to_string(), None),
503    ];
504
505    Ok(result)
506  }
507
508  fn corner_top_right_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
509    let result = vec![
510      OrderPair("cornerTopRightShape".to_string(), value),
511      OrderPair("cornerStartStartShape".to_string(), None),
512      OrderPair("cornerStartEndShape".to_string(), None),
513    ];
514
515    Ok(result)
516  }
517
518  fn corner_bottom_left_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
519    let result = vec![
520      OrderPair("cornerBottomLeftShape".to_string(), value),
521      OrderPair("cornerEndStartShape".to_string(), None),
522      OrderPair("cornerEndEndShape".to_string(), None),
523    ];
524
525    Ok(result)
526  }
527
528  fn corner_bottom_right_shape(value: Option<String>) -> Result<Vec<OrderPair>, String> {
529    let result = vec![
530      OrderPair("cornerBottomRightShape".to_string(), value),
531      OrderPair("cornerEndStartShape".to_string(), None),
532      OrderPair("cornerEndEndShape".to_string(), None),
533    ];
534
535    Ok(result)
536  }
537
538  fn border_image(value: Option<String>) -> Result<Vec<OrderPair>, String> {
539    let result = vec![
540      OrderPair("borderImage".to_string(), value),
541      OrderPair("borderImageOutset".to_string(), None),
542      OrderPair("borderImageRepeat".to_string(), None),
543      OrderPair("borderImageSlice".to_string(), None),
544      OrderPair("borderImageSource".to_string(), None),
545      OrderPair("borderImageWidth".to_string(), None),
546    ];
547
548    Ok(result)
549  }
550
551  fn column_rule(value: Option<String>) -> Result<Vec<OrderPair>, String> {
552    let result = vec![
553      OrderPair("columnRule".to_string(), value),
554      OrderPair("columnRuleColor".to_string(), None),
555      OrderPair("columnRuleStyle".to_string(), None),
556      OrderPair("columnRuleWidth".to_string(), None),
557    ];
558
559    Ok(result)
560  }
561  fn columns(value: Option<String>) -> Result<Vec<OrderPair>, String> {
562    let result = vec![
563      OrderPair("columns".to_string(), value),
564      OrderPair("columnCount".to_string(), None),
565      OrderPair("columnWidth".to_string(), None),
566    ];
567
568    Ok(result)
569  }
570
571  fn container(value: Option<String>) -> Result<Vec<OrderPair>, String> {
572    let result = vec![
573      OrderPair("container".to_string(), value),
574      OrderPair("containerName".to_string(), None),
575      OrderPair("containerType".to_string(), None),
576    ];
577
578    Ok(result)
579  }
580
581  fn contain_intrinsic_size(value: Option<String>) -> Result<Vec<OrderPair>, String> {
582    let result = vec![
583      OrderPair("containIntrinsicSize".to_string(), value),
584      OrderPair("containIntrinsicWidth".to_string(), None),
585      OrderPair("containIntrinsicHeight".to_string(), None),
586    ];
587
588    Ok(result)
589  }
590
591  fn flex(value: Option<String>) -> Result<Vec<OrderPair>, String> {
592    let result = vec![
593      OrderPair("flex".to_string(), value),
594      OrderPair("flexGrow".to_string(), None),
595      OrderPair("flexShrink".to_string(), None),
596      OrderPair("flexBasis".to_string(), None),
597    ];
598
599    Ok(result)
600  }
601  fn flex_flow(value: Option<String>) -> Result<Vec<OrderPair>, String> {
602    let result = vec![
603      OrderPair("flexFlow".to_string(), value),
604      OrderPair("flexDirection".to_string(), None),
605      OrderPair("flexWrap".to_string(), None),
606    ];
607
608    Ok(result)
609  }
610  // @Deprecated ?
611  fn font(value: Option<String>) -> Result<Vec<OrderPair>, String> {
612    let mut result = vec![
613      OrderPair("font".to_string(), value),
614      OrderPair("fontFamily".to_string(), None),
615      OrderPair("fontSize".to_string(), None),
616      OrderPair("fontStretch".to_string(), None),
617      OrderPair("fontStyle".to_string(), None),
618      OrderPair("fontWeight".to_string(), None),
619      OrderPair("lineHeight".to_string(), None),
620    ];
621
622    result.extend(Shorthands::font_variant(None)?);
623
624    Ok(result)
625  }
626  fn font_variant(value: Option<String>) -> Result<Vec<OrderPair>, String> {
627    let result = vec![
628      OrderPair("fontVariant".to_string(), value),
629      OrderPair("fontVariantAlternates".to_string(), None),
630      OrderPair("fontVariantCaps".to_string(), None),
631      OrderPair("fontVariantEastAsian".to_string(), None),
632      OrderPair("fontVariantEmoji".to_string(), None),
633      OrderPair("fontVariantLigatures".to_string(), None),
634      OrderPair("fontVariantNumeric".to_string(), None),
635      OrderPair("fontVariantPosition".to_string(), None),
636    ];
637
638    Ok(result)
639  }
640  fn gap(value: Option<String>) -> Result<Vec<OrderPair>, String> {
641    let result = vec![
642      OrderPair("gap".to_string(), value),
643      OrderPair("rowGap".to_string(), None),
644      OrderPair("columnGap".to_string(), None),
645    ];
646
647    Ok(result)
648  }
649  fn grid(value: Option<String>) -> Result<Vec<OrderPair>, String> {
650    let mut result = vec![
651      OrderPair("grid".to_string(), value),
652      OrderPair("gridAutoRows".to_string(), None),
653      OrderPair("gridAutoColumns".to_string(), None),
654      OrderPair("gridAutoFlow".to_string(), None),
655    ];
656
657    result.extend(Shorthands::grid_template(None)?);
658
659    Ok(result)
660  }
661  fn grid_area(value: Option<String>) -> Result<Vec<OrderPair>, String> {
662    let result = vec![
663      OrderPair("gridArea".to_string(), value),
664      OrderPair("gridRow".to_string(), None),
665      OrderPair("gridRowStart".to_string(), None),
666      OrderPair("gridRowEnd".to_string(), None),
667      OrderPair("gridColumn".to_string(), None),
668      OrderPair("gridColumnStart".to_string(), None),
669      OrderPair("gridColumnEnd".to_string(), None),
670    ];
671
672    Ok(result)
673  }
674  fn grid_row(value: Option<String>) -> Result<Vec<OrderPair>, String> {
675    let result = vec![
676      OrderPair("gridRow".to_string(), value),
677      OrderPair("gridRowStart".to_string(), None),
678      OrderPair("gridRowEnd".to_string(), None),
679    ];
680
681    Ok(result)
682  }
683  fn grid_column(value: Option<String>) -> Result<Vec<OrderPair>, String> {
684    let result = vec![
685      OrderPair("gridColumn".to_string(), value),
686      OrderPair("gridColumnStart".to_string(), None),
687      OrderPair("gridColumnEnd".to_string(), None),
688    ];
689
690    Ok(result)
691  }
692  fn grid_template(value: Option<String>) -> Result<Vec<OrderPair>, String> {
693    let result = vec![
694      OrderPair("gridTemplate".to_string(), value),
695      OrderPair("gridTemplateAreas".to_string(), None),
696      OrderPair("gridTemplateColumns".to_string(), None),
697      OrderPair("gridTemplateRows".to_string(), None),
698    ];
699
700    Ok(result)
701  }
702  fn inset(value: Option<String>) -> Result<Vec<OrderPair>, String> {
703    let mut result = vec![OrderPair("inset".to_string(), value)];
704
705    result.extend(Shorthands::inset_inline(None)?);
706    result.extend(Shorthands::inset_block(None)?);
707
708    Ok(result)
709  }
710  fn inset_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
711    let result = vec![
712      OrderPair("insetInline".to_string(), value),
713      OrderPair("insetInlineStart".to_string(), None),
714      OrderPair("insetInlineEnd".to_string(), None),
715      OrderPair("left".to_string(), None),
716      OrderPair("right".to_string(), None),
717    ];
718
719    Ok(result)
720  }
721  fn inset_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
722    let result = vec![
723      OrderPair("insetBlock".to_string(), value),
724      OrderPair("top".to_string(), None),
725      OrderPair("bottom".to_string(), None),
726    ];
727
728    Ok(result)
729  }
730  fn inset_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
731    let result = vec![
732      OrderPair("insetInlineStart".to_string(), value),
733      OrderPair("left".to_string(), None),
734      OrderPair("right".to_string(), None),
735    ];
736
737    Ok(result)
738  }
739  fn inset_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
740    let result = vec![
741      OrderPair("insetInlineEnd".to_string(), value),
742      OrderPair("left".to_string(), None),
743      OrderPair("right".to_string(), None),
744    ];
745
746    Ok(result)
747  }
748  fn left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
749    let result = vec![
750      OrderPair("left".to_string(), value),
751      OrderPair("insetInlineStart".to_string(), None),
752      OrderPair("insetInlineEnd".to_string(), None),
753    ];
754
755    Ok(result)
756  }
757  fn right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
758    let result = vec![
759      OrderPair("right".to_string(), value),
760      OrderPair("insetInlineStart".to_string(), None),
761      OrderPair("insetInlineEnd".to_string(), None),
762    ];
763
764    Ok(result)
765  }
766
767  fn list_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
768    let result = vec![
769      OrderPair("listStyle".to_string(), value),
770      OrderPair("listStyleImage".to_string(), None),
771      OrderPair("listStylePosition".to_string(), None),
772      OrderPair("listStyleType".to_string(), None),
773    ];
774
775    Ok(result)
776  }
777
778  fn margin(value: Option<String>) -> Result<Vec<OrderPair>, String> {
779    let mut result = vec![OrderPair("margin".to_string(), value)];
780
781    result.extend(Shorthands::margin_inline(None)?);
782    result.extend(Shorthands::margin_block(None)?);
783
784    Ok(result)
785  }
786  fn margin_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
787    let result = vec![
788      OrderPair("marginInline".to_string(), value),
789      OrderPair("marginInlineStart".to_string(), None),
790      OrderPair("marginLeft".to_string(), None),
791      OrderPair("marginInlineEnd".to_string(), None),
792      OrderPair("marginRight".to_string(), None),
793    ];
794
795    Ok(result)
796  }
797  fn margin_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
798    let result = vec![
799      OrderPair("marginBlock".to_string(), value),
800      OrderPair("marginTop".to_string(), None),
801      OrderPair("marginBottom".to_string(), None),
802    ];
803
804    Ok(result)
805  }
806  fn margin_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
807    let result = vec![
808      OrderPair("marginInlineStart".to_string(), value),
809      OrderPair("marginLeft".to_string(), None),
810      OrderPair("marginRight".to_string(), None),
811    ];
812
813    Ok(result)
814  }
815  fn margin_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
816    let result = vec![
817      OrderPair("marginInlineEnd".to_string(), value),
818      OrderPair("marginLeft".to_string(), None),
819      OrderPair("marginRight".to_string(), None),
820    ];
821
822    Ok(result)
823  }
824  fn margin_left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
825    let result = vec![
826      OrderPair("marginLeft".to_string(), value),
827      OrderPair("marginInlineStart".to_string(), None),
828      OrderPair("marginInlineEnd".to_string(), None),
829    ];
830
831    Ok(result)
832  }
833  fn margin_right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
834    let result = vec![
835      OrderPair("marginRight".to_string(), value),
836      OrderPair("marginInlineStart".to_string(), None),
837      OrderPair("marginInlineEnd".to_string(), None),
838    ];
839
840    Ok(result)
841  }
842
843  fn mask(value: Option<String>) -> Result<Vec<OrderPair>, String> {
844    let result = vec![
845      OrderPair("mask".to_string(), value),
846      OrderPair("maskClip".to_string(), None),
847      OrderPair("maskComposite".to_string(), None),
848      OrderPair("maskImage".to_string(), None),
849      OrderPair("maskMode".to_string(), None),
850      OrderPair("maskOrigin".to_string(), None),
851      OrderPair("maskPosition".to_string(), None),
852      OrderPair("maskRepeat".to_string(), None),
853      OrderPair("maskSize".to_string(), None),
854    ];
855
856    Ok(result)
857  }
858
859  fn mask_border(value: Option<String>) -> Result<Vec<OrderPair>, String> {
860    let result = vec![
861      OrderPair("maskBorder".to_string(), value),
862      OrderPair("maskBorderMode".to_string(), None),
863      OrderPair("maskBorderOutset".to_string(), None),
864      OrderPair("maskBorderRepeat".to_string(), None),
865      OrderPair("maskBorderSlice".to_string(), None),
866      OrderPair("maskBorderSource".to_string(), None),
867      OrderPair("maskBorderWidth".to_string(), None),
868    ];
869
870    Ok(result)
871  }
872
873  fn offset(value: Option<String>) -> Result<Vec<OrderPair>, String> {
874    let result = vec![
875      OrderPair("offset".to_string(), value),
876      OrderPair("offsetAnchor".to_string(), None),
877      OrderPair("offsetDistance".to_string(), None),
878      OrderPair("offsetPath".to_string(), None),
879      OrderPair("offsetPosition".to_string(), None),
880      OrderPair("offsetRotate".to_string(), None),
881    ];
882
883    Ok(result)
884  }
885
886  fn outline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
887    let result = vec![
888      OrderPair("outline".to_string(), value),
889      OrderPair("outlineColor".to_string(), None),
890      OrderPair("outlineOffset".to_string(), None),
891      OrderPair("outlineStyle".to_string(), None),
892      OrderPair("outlineWidth".to_string(), None),
893    ];
894
895    Ok(result)
896  }
897
898  fn overflow(value: Option<String>) -> Result<Vec<OrderPair>, String> {
899    let result = vec![
900      OrderPair("overflow".to_string(), value),
901      OrderPair("overflowX".to_string(), None),
902      OrderPair("overflowY".to_string(), None),
903    ];
904
905    Ok(result)
906  }
907
908  fn padding(value: Option<String>) -> Result<Vec<OrderPair>, String> {
909    let mut result = vec![OrderPair("padding".to_string(), value)];
910
911    result.extend(Shorthands::padding_inline(None)?);
912    result.extend(Shorthands::padding_block(None)?);
913
914    Ok(result)
915  }
916
917  fn padding_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
918    let result = vec![
919      OrderPair("paddingInline".to_string(), value),
920      OrderPair("paddingStart".to_string(), None),
921      OrderPair("paddingLeft".to_string(), None),
922      OrderPair("paddingEnd".to_string(), None),
923      OrderPair("paddingRight".to_string(), None),
924    ];
925
926    Ok(result)
927  }
928  fn padding_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
929    let result = vec![
930      OrderPair("paddingBlock".to_string(), value),
931      OrderPair("paddingTop".to_string(), None),
932      OrderPair("paddingBottom".to_string(), None),
933    ];
934
935    Ok(result)
936  }
937  fn padding_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
938    let result = vec![
939      OrderPair("paddingInlineStart".to_string(), value),
940      OrderPair("paddingLeft".to_string(), None),
941      OrderPair("paddingRight".to_string(), None),
942    ];
943
944    Ok(result)
945  }
946  fn padding_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
947    let result = vec![
948      OrderPair("paddingInlineEnd".to_string(), value),
949      OrderPair("paddingLeft".to_string(), None),
950      OrderPair("paddingRight".to_string(), None),
951    ];
952
953    Ok(result)
954  }
955  fn padding_left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
956    let result = vec![
957      OrderPair("paddingLeft".to_string(), value),
958      OrderPair("paddingInlineStart".to_string(), None),
959      OrderPair("paddingInlineEnd".to_string(), None),
960    ];
961
962    Ok(result)
963  }
964  fn padding_right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
965    let result = vec![
966      OrderPair("paddingRight".to_string(), value),
967      OrderPair("paddingInlineStart".to_string(), None),
968      OrderPair("paddingInlineEnd".to_string(), None),
969    ];
970
971    Ok(result)
972  }
973  fn place_content(value: Option<String>) -> Result<Vec<OrderPair>, String> {
974    let result = vec![
975      OrderPair("placeContent".to_string(), value),
976      OrderPair("alignContent".to_string(), None),
977      OrderPair("justifyContent".to_string(), None),
978    ];
979
980    Ok(result)
981  }
982  fn place_items(value: Option<String>) -> Result<Vec<OrderPair>, String> {
983    let result = vec![
984      OrderPair("placeItems".to_string(), value),
985      OrderPair("alignItems".to_string(), None),
986      OrderPair("justifyItems".to_string(), None),
987    ];
988
989    Ok(result)
990  }
991  fn place_self(value: Option<String>) -> Result<Vec<OrderPair>, String> {
992    let result = vec![
993      OrderPair("placeSelf".to_string(), value),
994      OrderPair("alignSelf".to_string(), None),
995      OrderPair("justifySelf".to_string(), None),
996    ];
997
998    Ok(result)
999  }
1000  fn scroll_margin(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1001    let mut result = vec![OrderPair("scrollMargin".to_string(), value)];
1002
1003    result.extend(Shorthands::scroll_margin_inline(None)?);
1004    result.extend(Shorthands::scroll_margin_block(None)?);
1005
1006    Ok(result)
1007  }
1008  fn scroll_margin_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1009    let result = vec![
1010      OrderPair("scrollMarginBlock".to_string(), value),
1011      OrderPair("scrollMarginTop".to_string(), None),
1012      OrderPair("scrollMarginBottom".to_string(), None),
1013    ];
1014
1015    Ok(result)
1016  }
1017  fn scroll_margin_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1018    let result = vec![
1019      OrderPair("scrollMarginInline".to_string(), value),
1020      OrderPair("scrollMarginInlineStart".to_string(), None),
1021      OrderPair("scrollMarginInlineEnd".to_string(), None),
1022      OrderPair("scrollMarginLeft".to_string(), None),
1023      OrderPair("scrollMarginRight".to_string(), None),
1024    ];
1025
1026    Ok(result)
1027  }
1028  fn scroll_margin_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1029    let result = vec![
1030      OrderPair("scrollMarginInlineStart".to_string(), value),
1031      OrderPair("scrollMarginLeft".to_string(), None),
1032      OrderPair("scrollMarginRight".to_string(), None),
1033    ];
1034
1035    Ok(result)
1036  }
1037  fn scroll_margin_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1038    let result = vec![
1039      OrderPair("scrollMarginInlineEnd".to_string(), value),
1040      OrderPair("scrollMarginLeft".to_string(), None),
1041      OrderPair("scrollMarginRight".to_string(), None),
1042    ];
1043
1044    Ok(result)
1045  }
1046  fn scroll_margin_left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1047    let result = vec![
1048      OrderPair("scrollMarginLeft".to_string(), value),
1049      OrderPair("scrollMarginInlineStart".to_string(), None),
1050      OrderPair("scrollMarginInlineEnd".to_string(), None),
1051    ];
1052
1053    Ok(result)
1054  }
1055  fn scroll_margin_right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1056    let result = vec![
1057      OrderPair("scrollMarginRight".to_string(), value),
1058      OrderPair("scrollMarginInlineStart".to_string(), None),
1059      OrderPair("scrollMarginInlineEnd".to_string(), None),
1060    ];
1061
1062    Ok(result)
1063  }
1064  fn scroll_padding(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1065    let mut result = vec![OrderPair("scrollPadding".to_string(), value)];
1066
1067    result.extend(Shorthands::scroll_padding_block(None)?);
1068    result.extend(Shorthands::scroll_padding_inline(None)?);
1069
1070    Ok(result)
1071  }
1072  fn scroll_padding_block(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1073    let result = vec![
1074      OrderPair("scrollPaddingBlock".to_string(), value),
1075      OrderPair("scrollPaddingTop".to_string(), None),
1076      OrderPair("scrollPaddingBottom".to_string(), None),
1077    ];
1078
1079    Ok(result)
1080  }
1081  fn scroll_padding_inline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1082    let result = vec![
1083      OrderPair("scrollPaddingInline".to_string(), value),
1084      OrderPair("scrollPaddingInlineStart".to_string(), None),
1085      OrderPair("scrollPaddingInlineEnd".to_string(), None),
1086      OrderPair("scrollPaddingLeft".to_string(), None),
1087      OrderPair("scrollPaddingRight".to_string(), None),
1088    ];
1089
1090    Ok(result)
1091  }
1092  fn scroll_padding_inline_start(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1093    let result = vec![
1094      OrderPair("scrollPaddingInlineStart".to_string(), value),
1095      OrderPair("scrollPaddingLeft".to_string(), None),
1096      OrderPair("scrollPaddingRight".to_string(), None),
1097    ];
1098
1099    Ok(result)
1100  }
1101  fn scroll_padding_inline_end(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1102    let result = vec![
1103      OrderPair("scrollPaddingInlineEnd".to_string(), value),
1104      OrderPair("scrollPaddingLeft".to_string(), None),
1105      OrderPair("scrollPaddingRight".to_string(), None),
1106    ];
1107
1108    Ok(result)
1109  }
1110  fn scroll_padding_left(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1111    let result = vec![
1112      OrderPair("scrollPaddingLeft".to_string(), value),
1113      OrderPair("scrollPaddingInlineStart".to_string(), None),
1114      OrderPair("scrollPaddingInlineEnd".to_string(), None),
1115    ];
1116
1117    Ok(result)
1118  }
1119  fn scroll_padding_right(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1120    let result = vec![
1121      OrderPair("scrollPaddingRight".to_string(), value),
1122      OrderPair("scrollPaddingInlineStart".to_string(), None),
1123      OrderPair("scrollPaddingInlineEnd".to_string(), None),
1124    ];
1125
1126    Ok(result)
1127  }
1128  fn scroll_snap_type(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1129    let result = vec![
1130      OrderPair("scrollSnapType".to_string(), value),
1131      OrderPair("scrollSnapTypeX".to_string(), None),
1132      OrderPair("scrollSnapTypeY".to_string(), None),
1133    ];
1134
1135    Ok(result)
1136  }
1137  fn scroll_timeline(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1138    let result = vec![
1139      OrderPair("scrollTimeline".to_string(), value),
1140      OrderPair("scrollTimelineName".to_string(), None),
1141      OrderPair("scrollTimelineAxis".to_string(), None),
1142    ];
1143
1144    Ok(result)
1145  }
1146  fn text_decoration(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1147    let result = vec![
1148      OrderPair("textDecoration".to_string(), value),
1149      OrderPair("textDecorationColor".to_string(), None),
1150      OrderPair("textDecorationLine".to_string(), None),
1151      OrderPair("textDecorationStyle".to_string(), None),
1152      OrderPair("textDecorationThickness".to_string(), None),
1153    ];
1154
1155    Ok(result)
1156  }
1157  fn text_emphasis(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1158    let result = vec![
1159      OrderPair("textEmphasis".to_string(), value),
1160      OrderPair("textEmphasisColor".to_string(), None),
1161      OrderPair("textEmphasisStyle".to_string(), None),
1162    ];
1163
1164    Ok(result)
1165  }
1166  fn transition(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1167    let result = vec![
1168      OrderPair("transition".to_string(), value),
1169      OrderPair("transitionBehavior".to_string(), None),
1170      OrderPair("transitionDelay".to_string(), None),
1171      OrderPair("transitionDuration".to_string(), None),
1172      OrderPair("transitionProperty".to_string(), None),
1173      OrderPair("transitionTimingFunction".to_string(), None),
1174    ];
1175
1176    Ok(result)
1177  }
1178
1179  pub fn get(name: &str) -> Option<fn(Option<String>) -> Result<Vec<OrderPair>, String>> {
1180    match name {
1181      "all" => Some(Shorthands::all),
1182      "animation" => Some(Shorthands::animation),
1183      "animationRange" => Some(Shorthands::animation_range),
1184      "background" => Some(Shorthands::background),
1185      "backgroundPosition" => Some(Shorthands::background_position),
1186      "border" => Some(Shorthands::border),
1187      "borderInline" => Some(Shorthands::border_inline),
1188      "borderBlock" => Some(Shorthands::border_block),
1189      "borderTop" => Some(Shorthands::border_top),
1190      "borderInlineEnd" => Some(Shorthands::border_inline_end),
1191      "borderRight" => Some(Shorthands::border_right),
1192      "borderBottom" => Some(Shorthands::border_bottom),
1193      "borderInlineStart" => Some(Shorthands::border_inline_start),
1194      "borderLeft" => Some(Shorthands::border_left),
1195      "borderInlineWidth" => Some(Shorthands::border_inline_width),
1196      "borderInlineStyle" => Some(Shorthands::border_inline_style),
1197      "borderInlineColor" => Some(Shorthands::border_inline_color),
1198      "borderBlockWidth" => Some(Shorthands::border_block_width),
1199      "borderBlockStyle" => Some(Shorthands::border_block_style),
1200      "borderBlockColor" => Some(Shorthands::border_block_color),
1201      "borderColor" => Some(Shorthands::border_color),
1202      "borderStyle" => Some(Shorthands::border_style),
1203      "borderWidth" => Some(Shorthands::border_width),
1204      "borderInlineStartColor" => Some(Shorthands::border_inline_start_color),
1205      "borderInlineEndColor" => Some(Shorthands::border_inline_end_color),
1206      "borderInlineStartStyle" => Some(Shorthands::border_inline_start_style),
1207      "borderInlineEndStyle" => Some(Shorthands::border_inline_end_style),
1208      "borderInlineStartWidth" => Some(Shorthands::border_inline_start_width),
1209      "borderInlineEndWidth" => Some(Shorthands::border_inline_end_width),
1210      "borderLeftColor" => Some(Shorthands::border_left_color),
1211      "borderRightColor" => Some(Shorthands::border_right_color),
1212      "borderLeftStyle" => Some(Shorthands::border_left_style),
1213      "borderRightStyle" => Some(Shorthands::border_right_style),
1214      "borderLeftWidth" => Some(Shorthands::border_left_width),
1215      "borderRightWidth" => Some(Shorthands::border_right_width),
1216      "borderRadius" => Some(Shorthands::border_radius),
1217      "borderStartStartRadius" => Some(Shorthands::border_start_start_radius),
1218      "borderStartEndRadius" => Some(Shorthands::border_start_end_radius),
1219      "borderEndStartRadius" => Some(Shorthands::border_end_start_radius),
1220      "borderEndEndRadius" => Some(Shorthands::border_end_end_radius),
1221      "borderTopLeftRadius" => Some(Shorthands::border_top_left_radius),
1222      "borderTopRightRadius" => Some(Shorthands::border_top_right_radius),
1223      "borderBottomLeftRadius" => Some(Shorthands::border_bottom_left_radius),
1224      "borderBottomRightRadius" => Some(Shorthands::border_bottom_right_radius),
1225      "cornerShape" => Some(Shorthands::corner_shape),
1226      "cornerStartStartShape" => Some(Shorthands::corner_start_start_shape),
1227      "cornerStartEndShape" => Some(Shorthands::corner_start_end_shape),
1228      "cornerEndStartShape" => Some(Shorthands::corner_end_start_shape),
1229      "cornerEndEndShape" => Some(Shorthands::corner_end_end_shape),
1230      "cornerTopLeftShape" => Some(Shorthands::corner_top_left_shape),
1231      "cornerTopRightShape" => Some(Shorthands::corner_top_right_shape),
1232      "cornerBottomLeftShape" => Some(Shorthands::corner_bottom_left_shape),
1233      "cornerBottomRightShape" => Some(Shorthands::corner_bottom_right_shape),
1234      "borderImage" => Some(Shorthands::border_image),
1235      "columnRule" => Some(Shorthands::column_rule),
1236      "columns" => Some(Shorthands::columns),
1237      "container" => Some(Shorthands::container),
1238      "containIntrinsicSize" => Some(Shorthands::contain_intrinsic_size),
1239      "flex" => Some(Shorthands::flex),
1240      "flexFlow" => Some(Shorthands::flex_flow),
1241      "font" => Some(Shorthands::font),
1242      "fontVariant" => Some(Shorthands::font_variant),
1243      "gap" => Some(Shorthands::gap),
1244      "grid" => Some(Shorthands::grid),
1245      "gridArea" => Some(Shorthands::grid_area),
1246      "gridRow" => Some(Shorthands::grid_row),
1247      "gridColumn" => Some(Shorthands::grid_column),
1248      "gridTemplate" => Some(Shorthands::grid_template),
1249      "inset" => Some(Shorthands::inset),
1250      "insetInline" => Some(Shorthands::inset_inline),
1251      "insetBlock" => Some(Shorthands::inset_block),
1252      "insetInlineStart" => Some(Shorthands::inset_inline_start),
1253      "insetInlineEnd" => Some(Shorthands::inset_inline_end),
1254      "left" => Some(Shorthands::left),
1255      "right" => Some(Shorthands::right),
1256      "listStyle" => Some(Shorthands::list_style),
1257      "margin" => Some(Shorthands::margin),
1258      "marginInline" => Some(Shorthands::margin_inline),
1259      "marginBlock" => Some(Shorthands::margin_block),
1260      "marginInlineStart" => Some(Shorthands::margin_inline_start),
1261      "marginInlineEnd" => Some(Shorthands::margin_inline_end),
1262      "marginLeft" => Some(Shorthands::margin_left),
1263      "marginRight" => Some(Shorthands::margin_right),
1264      "mask" => Some(Shorthands::mask),
1265      "maskBorder" => Some(Shorthands::mask_border),
1266      "offset" => Some(Shorthands::offset),
1267      "outline" => Some(Shorthands::outline),
1268      "overflow" => Some(Shorthands::overflow),
1269      "padding" => Some(Shorthands::padding),
1270      "paddingInline" => Some(Shorthands::padding_inline),
1271      "paddingBlock" => Some(Shorthands::padding_block),
1272      "paddingInlineStart" => Some(Shorthands::padding_inline_start),
1273      "paddingInlineEnd" => Some(Shorthands::padding_inline_end),
1274      "paddingLeft" => Some(Shorthands::padding_left),
1275      "paddingRight" => Some(Shorthands::padding_right),
1276      "placeContent" => Some(Shorthands::place_content),
1277      "placeItems" => Some(Shorthands::place_items),
1278      "placeSelf" => Some(Shorthands::place_self),
1279      "scrollMargin" => Some(Shorthands::scroll_margin),
1280      "scrollMarginBlock" => Some(Shorthands::scroll_margin_block),
1281      "scrollMarginInline" => Some(Shorthands::scroll_margin_inline),
1282      "scrollMarginInlineStart" => Some(Shorthands::scroll_margin_inline_start),
1283      "scrollMarginInlineEnd" => Some(Shorthands::scroll_margin_inline_end),
1284      "scrollMarginLeft" => Some(Shorthands::scroll_margin_left),
1285      "scrollMarginRight" => Some(Shorthands::scroll_margin_right),
1286      "scrollPadding" => Some(Shorthands::scroll_padding),
1287      "scrollPaddingBlock" => Some(Shorthands::scroll_padding_block),
1288      "scrollPaddingInline" => Some(Shorthands::scroll_padding_inline),
1289      "scrollPaddingInlineStart" => Some(Shorthands::scroll_padding_inline_start),
1290      "scrollPaddingInlineEnd" => Some(Shorthands::scroll_padding_inline_end),
1291      "scrollPaddingLeft" => Some(Shorthands::scroll_padding_left),
1292      "scrollPaddingRight" => Some(Shorthands::scroll_padding_right),
1293      "scrollSnapType" => Some(Shorthands::scroll_snap_type),
1294      "scrollTimeline" => Some(Shorthands::scroll_timeline),
1295      "textDecoration" => Some(Shorthands::text_decoration),
1296      "textEmphasis" => Some(Shorthands::text_emphasis),
1297      "transition" => Some(Shorthands::transition),
1298      _ => None,
1299    }
1300  }
1301}
1302
1303#[derive(Debug, PartialEq, Eq, Clone, Hash)]
1304pub struct Aliases;
1305
1306impl Aliases {
1307  #[allow(dead_code)]
1308  fn block_size(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1309    Ok(vec![OrderPair("height".to_string(), value)])
1310  }
1311
1312  fn height(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1313    Ok(vec![OrderPair("height".to_string(), value)])
1314  }
1315
1316  fn width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1317    Ok(vec![OrderPair("width".to_string(), value)])
1318  }
1319
1320  fn min_height(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1321    Ok(vec![OrderPair("minHeight".to_string(), value)])
1322  }
1323
1324  fn min_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1325    Ok(vec![OrderPair("minWidth".to_string(), value)])
1326  }
1327
1328  fn max_height(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1329    Ok(vec![OrderPair("maxHeight".to_string(), value)])
1330  }
1331
1332  fn max_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1333    Ok(vec![OrderPair("maxWidth".to_string(), value)])
1334  }
1335
1336  fn border_top_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1337    Ok(vec![OrderPair("borderTopColor".to_string(), value)])
1338  }
1339
1340  fn border_bottom_color(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1341    Ok(vec![OrderPair("borderBottomColor".to_string(), value)])
1342  }
1343
1344  fn border_top_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1345    Ok(vec![OrderPair("borderTopStyle".to_string(), value)])
1346  }
1347
1348  fn border_bottom_style(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1349    Ok(vec![OrderPair("borderBottomStyle".to_string(), value)])
1350  }
1351
1352  fn border_top_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1353    Ok(vec![OrderPair("borderTopWidth".to_string(), value)])
1354  }
1355
1356  fn border_bottom_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1357    Ok(vec![OrderPair("borderBottomWidth".to_string(), value)])
1358  }
1359
1360  fn border_start_start_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1361    Ok(vec![OrderPair("borderStartStartRadius".to_string(), value)])
1362  }
1363
1364  fn border_start_end_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1365    Ok(vec![OrderPair("borderStartEndRadius".to_string(), value)])
1366  }
1367
1368  fn border_end_start_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1369    Ok(vec![OrderPair("borderEndStartRadius".to_string(), value)])
1370  }
1371
1372  fn border_end_end_radius(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1373    Ok(vec![OrderPair("borderEndEndRadius".to_string(), value)])
1374  }
1375
1376  fn contain_intrinsic_height(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1377    Ok(vec![OrderPair("containIntrinsicHeight".to_string(), value)])
1378  }
1379
1380  fn contain_intrinsic_width(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1381    Ok(vec![OrderPair("containIntrinsicWidth".to_string(), value)])
1382  }
1383
1384  fn row_gap(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1385    Ok(vec![OrderPair("rowGap".to_string(), value)])
1386  }
1387
1388  fn column_gap(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1389    Ok(vec![OrderPair("columnGap".to_string(), value)])
1390  }
1391
1392  fn margin_top(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1393    Ok(vec![OrderPair("marginTop".to_string(), value)])
1394  }
1395
1396  fn margin_bottom(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1397    Ok(vec![OrderPair("marginBottom".to_string(), value)])
1398  }
1399
1400  fn overflow_y(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1401    Ok(vec![OrderPair("overflowY".to_string(), value)])
1402  }
1403
1404  fn overflow_x(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1405    Ok(vec![OrderPair("overflowX".to_string(), value)])
1406  }
1407
1408  fn padding_top(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1409    Ok(vec![OrderPair("paddingTop".to_string(), value)])
1410  }
1411
1412  fn padding_bottom(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1413    Ok(vec![OrderPair("paddingBottom".to_string(), value)])
1414  }
1415
1416  fn scroll_margin_top(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1417    Ok(vec![OrderPair("scrollMarginTop".to_string(), value)])
1418  }
1419
1420  fn scroll_margin_bottom(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1421    Ok(vec![OrderPair("scrollMarginBottom".to_string(), value)])
1422  }
1423
1424  fn top(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1425    Ok(vec![OrderPair("top".to_string(), value)])
1426  }
1427
1428  fn bottom(value: Option<String>) -> Result<Vec<OrderPair>, String> {
1429    Ok(vec![OrderPair("bottom".to_string(), value)])
1430  }
1431
1432  pub fn get(name: &str) -> Option<fn(Option<String>) -> Result<Vec<OrderPair>, String>> {
1433    match name {
1434      // @Deprecated
1435      "borderHorizontal" => Shorthands::get("borderInline"),
1436      // @Deprecated
1437      "borderVertical" => Shorthands::get("borderBlock"),
1438      // @Deprecated
1439      "borderBlockStart" => Shorthands::get("borderTop"),
1440      // @Deprecated
1441      "borderEnd" => Shorthands::get("borderInlineEnd"),
1442      // @Deprecated
1443      "borderBlockEnd" => Shorthands::get("borderBottom"),
1444      // @Deprecated
1445      "borderStart" => Shorthands::get("borderInlineStart"),
1446
1447      "blockSize" => Some(Aliases::height),
1448      "inlineSize" => Some(Aliases::width),
1449      "minBlockSize" => Some(Aliases::min_height),
1450      "minInlineSize" => Some(Aliases::min_width),
1451      "maxBlockSize" => Some(Aliases::max_height),
1452      "maxInlineSize" => Some(Aliases::max_width),
1453
1454      "borderHorizontalWidth" => Shorthands::get("borderInlineWidth"),
1455      "borderHorizontalStyle" => Shorthands::get("borderInlineStyle"),
1456      "borderHorizontalColor" => Shorthands::get("borderInlineColor"),
1457      "borderVerticalWidth" => Shorthands::get("borderBlockWidth"),
1458      "borderVerticalStyle" => Shorthands::get("borderBlockStyle"),
1459      "borderVerticalColor" => Shorthands::get("borderBlockColor"),
1460
1461      "borderBlockStartColor" => Some(Aliases::border_top_color),
1462      "borderBlockEndColor" => Some(Aliases::border_bottom_color),
1463      "borderBlockStartStyle" => Some(Aliases::border_top_style),
1464      "borderBlockEndStyle" => Some(Aliases::border_bottom_style),
1465      "borderBlockStartWidth" => Some(Aliases::border_top_width),
1466      "borderBlockEndWidth" => Some(Aliases::border_bottom_width),
1467      "borderStartColor" => Shorthands::get("borderInlineStartColor"),
1468      "borderEndColor" => Shorthands::get("borderInlineEndColor"),
1469      "borderStartStyle" => Shorthands::get("borderInlineStartStyle"),
1470      "borderEndStyle" => Shorthands::get("borderInlineEndStyle"),
1471      "borderStartWidth" => Shorthands::get("borderInlineStartWidth"),
1472      "borderEndWidth" => Shorthands::get("borderInlineEndWidth"),
1473
1474      "borderTopStartRadius" => Some(Aliases::border_start_start_radius),
1475      "borderTopEndRadius" => Some(Aliases::border_start_end_radius),
1476      "borderBottomStartRadius" => Some(Aliases::border_end_start_radius),
1477      "borderBottomEndRadius" => Some(Aliases::border_end_end_radius),
1478
1479      "containIntrinsicBlockSize" => Some(Aliases::contain_intrinsic_height),
1480      "containIntrinsicInlineSize" => Some(Aliases::contain_intrinsic_width),
1481
1482      "gridGap" => Shorthands::get("gap"),
1483      "gridRowGap" => Some(Aliases::row_gap),
1484      "gridColumnGap" => Some(Aliases::column_gap),
1485
1486      "marginBlockStart" => Some(Aliases::margin_top),
1487      "marginBlockEnd" => Some(Aliases::margin_bottom),
1488      "marginStart" => Shorthands::get("marginInlineStart"),
1489      "marginEnd" => Shorthands::get("marginInlineEnd"),
1490      "marginHorizontal" => Shorthands::get("marginInline"),
1491      "marginVertical" => Shorthands::get("marginBlock"),
1492
1493      "overflowBlock" => Some(Aliases::overflow_y),
1494      "overflowInline" => Some(Aliases::overflow_x),
1495
1496      "paddingBlockStart" => Some(Aliases::padding_top),
1497      "paddingBlockEnd" => Some(Aliases::padding_bottom),
1498      "paddingStart" => Shorthands::get("paddingInlineStart"),
1499      "paddingEnd" => Shorthands::get("paddingInlineEnd"),
1500      "paddingHorizontal" => Shorthands::get("paddingInline"),
1501      "paddingVertical" => Shorthands::get("paddingBlock"),
1502
1503      "scrollMarginBlockStart" => Some(Aliases::scroll_margin_top),
1504      "scrollMarginBlockEnd" => Some(Aliases::scroll_margin_bottom),
1505
1506      "insetBlockStart" => Some(Aliases::top),
1507      "insetBlockEnd" => Some(Aliases::bottom),
1508      "start" => Shorthands::get("insetInlineStart"),
1509      "end" => Shorthands::get("insetInlineEnd"),
1510      _ => None,
1511    }
1512  }
1513}