Grid/refactor coordinate handling (#301)
1#[allow(dead_code)]
2#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3enum WritingMode {
4 Horizontal,
5 Vertical,
6}
7#[allow(dead_code)]
8fn measure_standard_text(
9 known_dimensions: taffy::geometry::Size<Option<f32>>,
10 available_space: taffy::geometry::Size<taffy::style::AvailableSpace>,
11 text_content: &str,
12 writing_mode: WritingMode,
13) -> taffy::geometry::Size<f32> {
14 use taffy::axis::AbsoluteAxis;
15 use taffy::prelude::*;
16 const ZWS: char = '\u{200B}';
17 const H_WIDTH: f32 = 10.0;
18 const H_HEIGHT: f32 = 10.0;
19 if let Size { width: Some(width), height: Some(height) } = known_dimensions {
20 return Size { width, height };
21 }
22 let inline_axis = match writing_mode {
23 WritingMode::Horizontal => AbsoluteAxis::Horizontal,
24 WritingMode::Vertical => AbsoluteAxis::Vertical,
25 };
26 let block_axis = inline_axis.other_axis();
27 let lines: Vec<&str> = text_content.split(ZWS).collect();
28 if lines.is_empty() {
29 return Size::ZERO;
30 }
31 let min_line_length: usize = lines.iter().map(|line| line.len()).max().unwrap_or(0);
32 let max_line_length: usize = lines.iter().map(|line| line.len()).sum();
33 let inline_size =
34 known_dimensions.get_abs(inline_axis).unwrap_or_else(|| match available_space.get_abs(inline_axis) {
35 AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
36 AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
37 AvailableSpace::Definite(inline_size) => {
38 inline_size.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
39 }
40 });
41 let block_size = known_dimensions.get_abs(block_axis).unwrap_or_else(|| {
42 let inline_line_length = (inline_size / H_WIDTH).floor() as usize;
43 let mut line_count = 1;
44 let mut current_line_length = 0;
45 for line in &lines {
46 if current_line_length + line.len() > inline_line_length {
47 if current_line_length > 0 {
48 line_count += 1
49 };
50 current_line_length = line.len();
51 } else {
52 current_line_length += line.len();
53 };
54 }
55 (line_count as f32) * H_HEIGHT
56 });
57 match writing_mode {
58 WritingMode::Horizontal => Size { width: inline_size, height: block_size },
59 WritingMode::Vertical => Size { width: block_size, height: inline_size },
60 }
61}
62mod absolute_layout_align_items_and_justify_content_center;
63mod absolute_layout_align_items_and_justify_content_center_and_bottom_position;
64mod absolute_layout_align_items_and_justify_content_center_and_left_position;
65mod absolute_layout_align_items_and_justify_content_center_and_right_position;
66mod absolute_layout_align_items_and_justify_content_center_and_top_position;
67mod absolute_layout_align_items_and_justify_content_flex_end;
68mod absolute_layout_align_items_center;
69mod absolute_layout_align_items_center_on_child_only;
70mod absolute_layout_child_order;
71mod absolute_layout_in_wrap_reverse_column_container;
72mod absolute_layout_in_wrap_reverse_column_container_flex_end;
73mod absolute_layout_in_wrap_reverse_row_container;
74mod absolute_layout_in_wrap_reverse_row_container_flex_end;
75mod absolute_layout_justify_content_center;
76mod absolute_layout_no_size;
77mod absolute_layout_percentage_bottom_based_on_parent_height;
78mod absolute_layout_start_top_end_bottom;
79mod absolute_layout_width_height_end_bottom;
80mod absolute_layout_width_height_start_top;
81mod absolute_layout_width_height_start_top_end_bottom;
82mod absolute_layout_within_border;
83mod align_baseline;
84mod align_baseline_child_multiline;
85mod align_baseline_nested_child;
86mod align_center_should_size_based_on_content;
87mod align_content_space_around_single_line;
88mod align_content_space_around_wrapped;
89mod align_content_space_between_single_line;
90mod align_content_space_between_wrapped;
91mod align_content_space_evenly_single_line;
92mod align_content_space_evenly_wrapped;
93mod align_flex_start_with_shrinking_children;
94mod align_flex_start_with_shrinking_children_with_stretch;
95mod align_flex_start_with_stretching_children;
96mod align_items_center;
97mod align_items_center_child_with_margin_bigger_than_parent;
98mod align_items_center_child_without_margin_bigger_than_parent;
99mod align_items_center_with_child_margin;
100mod align_items_center_with_child_top;
101mod align_items_flex_end;
102mod align_items_flex_end_child_with_margin_bigger_than_parent;
103mod align_items_flex_end_child_without_margin_bigger_than_parent;
104mod align_items_flex_start;
105mod align_items_min_max;
106mod align_items_stretch;
107mod align_self_baseline;
108mod align_self_center;
109mod align_self_flex_end;
110mod align_self_flex_end_override_flex_start;
111mod align_self_flex_start;
112mod align_strech_should_size_based_on_parent;
113mod border_center_child;
114mod border_flex_child;
115mod border_no_child;
116mod border_stretch_child;
117mod child_min_max_width_flexing;
118mod container_with_unsized_child;
119mod display_none;
120mod display_none_fixed_size;
121mod display_none_with_child;
122mod display_none_with_margin;
123mod display_none_with_position;
124mod flex_basis_and_main_dimen_set_when_flexing;
125mod flex_basis_flex_grow_column;
126mod flex_basis_flex_grow_row;
127mod flex_basis_flex_shrink_column;
128mod flex_basis_flex_shrink_row;
129mod flex_basis_larger_than_content_column;
130mod flex_basis_larger_than_content_row;
131mod flex_basis_overrides_main_size;
132mod flex_basis_slightly_smaller_then_content_with_flex_grow_large_size;
133mod flex_basis_smaller_than_content_column;
134mod flex_basis_smaller_than_content_row;
135mod flex_basis_smaller_than_main_dimen_column;
136mod flex_basis_smaller_than_main_dimen_row;
137mod flex_basis_smaller_then_content_with_flex_grow_large_size;
138mod flex_basis_smaller_then_content_with_flex_grow_small_size;
139mod flex_basis_smaller_then_content_with_flex_grow_unconstraint_size;
140mod flex_basis_smaller_then_content_with_flex_grow_very_large_size;
141mod flex_basis_unconstraint_column;
142mod flex_basis_unconstraint_row;
143mod flex_direction_column;
144mod flex_direction_column_no_height;
145mod flex_direction_column_reverse;
146mod flex_direction_row;
147mod flex_direction_row_no_width;
148mod flex_direction_row_reverse;
149mod flex_grow_child;
150mod flex_grow_flex_basis_percent_min_max;
151mod flex_grow_height_maximized;
152mod flex_grow_in_at_most_container;
153mod flex_grow_less_than_factor_one;
154mod flex_grow_root_minimized;
155mod flex_grow_shrink_at_most;
156mod flex_grow_to_min;
157mod flex_grow_within_constrained_max_column;
158mod flex_grow_within_constrained_max_row;
159mod flex_grow_within_constrained_max_width;
160mod flex_grow_within_constrained_min_column;
161mod flex_grow_within_constrained_min_max_column;
162mod flex_grow_within_constrained_min_row;
163mod flex_grow_within_max_width;
164mod flex_root_ignored;
165mod flex_shrink_by_outer_margin_with_max_size;
166mod flex_shrink_flex_grow_child_flex_shrink_other_child;
167mod flex_shrink_flex_grow_row;
168mod flex_shrink_to_zero;
169mod flex_wrap_align_stretch_fits_one_row;
170mod flex_wrap_children_with_min_main_overriding_flex_basis;
171mod flex_wrap_wrap_to_child_height;
172mod gap_column_gap_child_margins;
173mod gap_column_gap_determines_parent_width;
174mod gap_column_gap_flexible;
175mod gap_column_gap_flexible_undefined_parent;
176mod gap_column_gap_inflexible;
177mod gap_column_gap_inflexible_undefined_parent;
178mod gap_column_gap_justify_center;
179mod gap_column_gap_justify_flex_end;
180mod gap_column_gap_justify_flex_start;
181mod gap_column_gap_justify_space_around;
182mod gap_column_gap_justify_space_between;
183mod gap_column_gap_justify_space_evenly;
184mod gap_column_gap_mixed_flexible;
185mod gap_column_gap_percentage_cyclic_partially_shrinkable;
186mod gap_column_gap_percentage_cyclic_shrinkable;
187mod gap_column_gap_percentage_cyclic_unshrinkable;
188mod gap_column_gap_percentage_flexible;
189mod gap_column_gap_percentage_flexible_with_padding;
190mod gap_column_gap_percentage_inflexible;
191mod gap_column_gap_wrap_align_center;
192mod gap_column_gap_wrap_align_flex_end;
193mod gap_column_gap_wrap_align_flex_start;
194mod gap_column_gap_wrap_align_space_around;
195mod gap_column_gap_wrap_align_space_between;
196mod gap_column_gap_wrap_align_stretch;
197mod gap_column_row_gap_wrapping;
198mod gap_percentage_row_gap_wrapping;
199mod gap_row_gap_align_items_end;
200mod gap_row_gap_align_items_stretch;
201mod gap_row_gap_column_child_margins;
202mod gap_row_gap_determines_parent_height;
203mod gap_row_gap_row_wrap_child_margins;
204#[cfg(feature = "grid")]
205mod grid_absolute_align_self_sized_all;
206#[cfg(feature = "grid")]
207mod grid_absolute_column_end;
208#[cfg(feature = "grid")]
209mod grid_absolute_column_start;
210#[cfg(feature = "grid")]
211mod grid_absolute_container_bottom_left;
212#[cfg(feature = "grid")]
213mod grid_absolute_container_bottom_left_margin;
214#[cfg(feature = "grid")]
215mod grid_absolute_container_left_overrides_right;
216#[cfg(feature = "grid")]
217mod grid_absolute_container_left_right;
218#[cfg(feature = "grid")]
219mod grid_absolute_container_left_right_margin;
220#[cfg(feature = "grid")]
221mod grid_absolute_container_negative_position;
222#[cfg(feature = "grid")]
223mod grid_absolute_container_negative_position_margin;
224#[cfg(feature = "grid")]
225mod grid_absolute_container_top_bottom;
226#[cfg(feature = "grid")]
227mod grid_absolute_container_top_bottom_margin;
228#[cfg(feature = "grid")]
229mod grid_absolute_container_top_right;
230#[cfg(feature = "grid")]
231mod grid_absolute_container_top_right_margin;
232#[cfg(feature = "grid")]
233mod grid_absolute_justify_self_sized_all;
234#[cfg(feature = "grid")]
235mod grid_absolute_row_end;
236#[cfg(feature = "grid")]
237mod grid_absolute_row_start;
238#[cfg(feature = "grid")]
239mod grid_absolute_top_overrides_bottom;
240#[cfg(feature = "grid")]
241mod grid_absolute_with_padding;
242#[cfg(feature = "grid")]
243mod grid_absolute_with_padding_and_margin;
244#[cfg(feature = "grid")]
245mod grid_align_content_center;
246#[cfg(feature = "grid")]
247mod grid_align_content_end;
248#[cfg(feature = "grid")]
249mod grid_align_content_end_with_padding_border;
250#[cfg(feature = "grid")]
251mod grid_align_content_space_around;
252#[cfg(feature = "grid")]
253mod grid_align_content_space_around_with_padding_border;
254#[cfg(feature = "grid")]
255mod grid_align_content_space_between;
256#[cfg(feature = "grid")]
257mod grid_align_content_space_between_with_padding_border;
258#[cfg(feature = "grid")]
259mod grid_align_content_space_evenly;
260#[cfg(feature = "grid")]
261mod grid_align_content_space_evenly_with_padding_border;
262#[cfg(feature = "grid")]
263mod grid_align_content_start;
264#[cfg(feature = "grid")]
265mod grid_align_content_start_with_padding_border;
266#[cfg(feature = "grid")]
267mod grid_align_items_sized_center;
268#[cfg(feature = "grid")]
269mod grid_align_items_sized_end;
270#[cfg(feature = "grid")]
271mod grid_align_items_sized_start;
272#[cfg(feature = "grid")]
273mod grid_align_items_sized_stretch;
274#[cfg(feature = "grid")]
275mod grid_align_self_sized_all;
276#[cfg(feature = "grid")]
277mod grid_auto_columns_fixed_width;
278#[cfg(feature = "grid")]
279mod grid_auto_fill_fixed_size;
280#[cfg(feature = "grid")]
281mod grid_auto_fill_with_empty_auto_track;
282#[cfg(feature = "grid")]
283mod grid_auto_fit_with_empty_auto_track;
284#[cfg(feature = "grid")]
285mod grid_auto_single_item;
286#[cfg(feature = "grid")]
287mod grid_auto_single_item_fixed_width;
288#[cfg(feature = "grid")]
289mod grid_auto_single_item_fixed_width_with_definite_width;
290#[cfg(feature = "grid")]
291mod grid_basic;
292#[cfg(feature = "grid")]
293mod grid_basic_implicit_tracks;
294#[cfg(feature = "grid")]
295mod grid_basic_with_overflow;
296#[cfg(feature = "grid")]
297mod grid_basic_with_padding;
298#[cfg(feature = "grid")]
299mod grid_fit_content_points_argument;
300#[cfg(feature = "grid")]
301mod grid_fit_content_points_max_content;
302#[cfg(feature = "grid")]
303mod grid_fit_content_points_min_content;
304#[cfg(feature = "grid")]
305mod grid_fr_auto_no_sized_items;
306#[cfg(feature = "grid")]
307mod grid_fr_auto_single_item;
308#[cfg(feature = "grid")]
309mod grid_fr_fixed_size_no_content;
310#[cfg(feature = "grid")]
311mod grid_fr_fixed_size_single_item;
312#[cfg(feature = "grid")]
313mod grid_gap;
314#[cfg(feature = "grid")]
315mod grid_hidden;
316#[cfg(feature = "grid")]
317mod grid_justify_content_center;
318#[cfg(feature = "grid")]
319mod grid_justify_content_center_with_padding_border;
320#[cfg(feature = "grid")]
321mod grid_justify_content_end;
322#[cfg(feature = "grid")]
323mod grid_justify_content_end_with_padding_border;
324#[cfg(feature = "grid")]
325mod grid_justify_content_space_around;
326#[cfg(feature = "grid")]
327mod grid_justify_content_space_around_with_padding_border;
328#[cfg(feature = "grid")]
329mod grid_justify_content_space_between;
330#[cfg(feature = "grid")]
331mod grid_justify_content_space_between_with_padding_border;
332#[cfg(feature = "grid")]
333mod grid_justify_content_space_evenly;
334#[cfg(feature = "grid")]
335mod grid_justify_content_space_evenly_with_padding_border;
336#[cfg(feature = "grid")]
337mod grid_justify_content_start;
338#[cfg(feature = "grid")]
339mod grid_justify_content_start_with_padding_border;
340#[cfg(feature = "grid")]
341mod grid_justify_items_sized_center;
342#[cfg(feature = "grid")]
343mod grid_justify_items_sized_end;
344#[cfg(feature = "grid")]
345mod grid_justify_items_sized_start;
346#[cfg(feature = "grid")]
347mod grid_justify_items_sized_stretch;
348#[cfg(feature = "grid")]
349mod grid_justify_self_sized_all;
350#[cfg(feature = "grid")]
351mod grid_margins_auto_margins;
352#[cfg(feature = "grid")]
353mod grid_margins_auto_margins_override_stretch;
354#[cfg(feature = "grid")]
355mod grid_margins_fixed_center;
356#[cfg(feature = "grid")]
357mod grid_margins_fixed_end;
358#[cfg(feature = "grid")]
359mod grid_margins_fixed_start;
360#[cfg(feature = "grid")]
361mod grid_margins_fixed_stretch;
362#[cfg(feature = "grid")]
363mod grid_margins_percent_center;
364#[cfg(feature = "grid")]
365mod grid_margins_percent_end;
366#[cfg(feature = "grid")]
367mod grid_margins_percent_start;
368#[cfg(feature = "grid")]
369mod grid_margins_percent_stretch;
370#[cfg(feature = "grid")]
371mod grid_max_content_maximum_single_item;
372#[cfg(feature = "grid")]
373mod grid_max_content_single_item;
374#[cfg(feature = "grid")]
375mod grid_max_content_single_item_margin_auto;
376#[cfg(feature = "grid")]
377mod grid_max_content_single_item_margin_fixed;
378#[cfg(feature = "grid")]
379mod grid_max_content_single_item_margin_percent;
380#[cfg(feature = "grid")]
381mod grid_min_content_flex_column;
382#[cfg(feature = "grid")]
383mod grid_min_content_flex_row;
384#[cfg(feature = "grid")]
385mod grid_min_content_flex_single_item;
386#[cfg(feature = "grid")]
387mod grid_min_content_flex_single_item_margin_auto;
388#[cfg(feature = "grid")]
389mod grid_min_content_flex_single_item_margin_fixed;
390#[cfg(feature = "grid")]
391mod grid_min_content_flex_single_item_margin_percent;
392#[cfg(feature = "grid")]
393mod grid_min_content_maximum_single_item;
394#[cfg(feature = "grid")]
395mod grid_min_content_single_item;
396#[cfg(feature = "grid")]
397mod grid_min_max_column_auto;
398#[cfg(feature = "grid")]
399mod grid_min_max_column_fixed_width_above_range;
400#[cfg(feature = "grid")]
401mod grid_min_max_column_fixed_width_below_range;
402#[cfg(feature = "grid")]
403mod grid_min_max_column_fixed_width_within_range;
404#[cfg(feature = "grid")]
405mod grid_out_of_order_items;
406#[cfg(feature = "grid")]
407mod grid_percent_nested_moderate;
408#[cfg(feature = "grid")]
409mod grid_percent_nested_with_padding_margin;
410#[cfg(feature = "grid")]
411mod grid_percent_width_and_margin;
412#[cfg(feature = "grid")]
413mod grid_percent_width_and_padding;
414#[cfg(feature = "grid")]
415mod grid_placement_auto_negative;
416#[cfg(feature = "grid")]
417mod grid_placement_definite_in_secondary_axis_with_fully_definite_negative;
418#[cfg(feature = "grid")]
419mod grid_relayout_vertical_text;
420#[cfg(feature = "grid")]
421mod grid_size_child_fixed_tracks;
422mod justify_content_column_center;
423mod justify_content_column_flex_end;
424mod justify_content_column_flex_start;
425mod justify_content_column_min_height_and_margin_bottom;
426mod justify_content_column_min_height_and_margin_top;
427mod justify_content_column_space_around;
428mod justify_content_column_space_between;
429mod justify_content_column_space_evenly;
430mod justify_content_min_max;
431mod justify_content_min_width_with_padding_child_width_greater_than_parent;
432mod justify_content_min_width_with_padding_child_width_lower_than_parent;
433mod justify_content_overflow_min_max;
434mod justify_content_row_center;
435mod justify_content_row_flex_end;
436mod justify_content_row_flex_start;
437mod justify_content_row_max_width_and_margin;
438mod justify_content_row_min_width_and_margin;
439mod justify_content_row_space_around;
440mod justify_content_row_space_between;
441mod justify_content_row_space_evenly;
442mod margin_and_flex_column;
443mod margin_and_flex_row;
444mod margin_and_stretch_column;
445mod margin_and_stretch_row;
446mod margin_auto_bottom;
447mod margin_auto_bottom_and_top;
448mod margin_auto_bottom_and_top_justify_center;
449mod margin_auto_left;
450mod margin_auto_left_and_right;
451mod margin_auto_left_and_right_column;
452mod margin_auto_left_and_right_column_and_center;
453mod margin_auto_left_and_right_strech;
454mod margin_auto_left_child_bigger_than_parent;
455mod margin_auto_left_fix_right_child_bigger_than_parent;
456mod margin_auto_left_right_child_bigger_than_parent;
457mod margin_auto_left_stretching_child;
458mod margin_auto_mutiple_children_column;
459mod margin_auto_mutiple_children_row;
460mod margin_auto_right;
461mod margin_auto_top;
462mod margin_auto_top_and_bottom_strech;
463mod margin_auto_top_stretching_child;
464mod margin_bottom;
465mod margin_fix_left_auto_right_child_bigger_than_parent;
466mod margin_left;
467mod margin_right;
468mod margin_should_not_be_part_of_max_height;
469mod margin_should_not_be_part_of_max_width;
470mod margin_top;
471mod margin_with_sibling_column;
472mod margin_with_sibling_row;
473mod max_height;
474mod max_height_overrides_height;
475mod max_height_overrides_height_on_root;
476mod max_width;
477mod max_width_overrides_width;
478mod max_width_overrides_width_on_root;
479mod measure_child;
480mod measure_child_absolute;
481mod measure_child_constraint;
482mod measure_child_constraint_padding_parent;
483mod measure_child_with_flex_grow;
484mod measure_child_with_flex_shrink;
485mod measure_flex_basis_overrides_measure;
486mod measure_height_overrides_measure;
487mod measure_remeasure_child_after_growing;
488mod measure_remeasure_child_after_shrinking;
489mod measure_remeasure_child_after_stretching;
490mod measure_root;
491mod measure_stretch_overrides_measure;
492mod measure_width_overrides_measure;
493mod min_height;
494mod min_height_overrides_height;
495mod min_height_overrides_height_on_root;
496mod min_height_overrides_max_height;
497mod min_max_percent_no_width_height;
498mod min_width;
499mod min_width_overrides_max_width;
500mod min_width_overrides_width;
501mod min_width_overrides_width_on_root;
502mod nested_overflowing_child;
503mod nested_overflowing_child_in_constraint_parent;
504mod overflow_cross_axis;
505mod overflow_main_axis;
506mod padding_align_end_child;
507mod padding_center_child;
508mod padding_flex_child;
509mod padding_no_child;
510mod padding_stretch_child;
511mod parent_wrap_child_size_overflowing_parent;
512mod percent_absolute_position;
513mod percent_within_flex_grow;
514mod percentage_absolute_position;
515mod percentage_container_in_wrapping_container;
516mod percentage_flex_basis;
517mod percentage_flex_basis_cross;
518mod percentage_flex_basis_cross_max_height;
519mod percentage_flex_basis_cross_max_width;
520mod percentage_flex_basis_cross_min_height;
521mod percentage_flex_basis_cross_min_width;
522mod percentage_flex_basis_main_max_height;
523mod percentage_flex_basis_main_max_width;
524mod percentage_flex_basis_main_min_width;
525mod percentage_margin_should_calculate_based_only_on_width;
526mod percentage_moderate_complexity;
527mod percentage_multiple_nested_with_padding_margin_and_percentage_values;
528mod percentage_padding_should_calculate_based_only_on_width;
529mod percentage_position_bottom_right;
530mod percentage_position_left_top;
531mod percentage_size_based_on_parent_inner_size;
532mod percentage_size_of_flex_basis;
533mod percentage_width_height;
534mod percentage_width_height_undefined_parent_size;
535mod relative_position_should_not_nudge_siblings;
536mod rounding_flex_basis_flex_grow_row_prime_number_width;
537mod rounding_flex_basis_flex_grow_row_width_of_100;
538mod rounding_flex_basis_flex_shrink_row;
539mod rounding_flex_basis_overrides_main_size;
540mod rounding_fractial_input_1;
541mod rounding_fractial_input_2;
542mod rounding_fractial_input_3;
543mod rounding_fractial_input_4;
544mod rounding_total_fractial;
545mod rounding_total_fractial_nested;
546mod size_defined_by_child;
547mod size_defined_by_child_with_border;
548mod size_defined_by_child_with_padding;
549mod size_defined_by_grand_child;
550mod width_smaller_then_content_with_flex_grow_large_size;
551mod width_smaller_then_content_with_flex_grow_small_size;
552mod width_smaller_then_content_with_flex_grow_unconstraint_size;
553mod width_smaller_then_content_with_flex_grow_very_large_size;
554mod wrap_column;
555mod wrap_nodes_with_content_sizing_margin_cross;
556mod wrap_nodes_with_content_sizing_overflowing_margin;
557mod wrap_reverse_column;
558mod wrap_reverse_column_fixed_size;
559mod wrap_reverse_row;
560mod wrap_reverse_row_align_content_center;
561mod wrap_reverse_row_align_content_flex_start;
562mod wrap_reverse_row_align_content_space_around;
563mod wrap_reverse_row_align_content_stretch;
564mod wrap_reverse_row_single_line_different_size;
565mod wrap_row;
566mod wrap_row_align_items_center;
567mod wrap_row_align_items_flex_end;
568mod wrapped_column_max_height;
569mod wrapped_column_max_height_flex;
570mod wrapped_row_within_align_items_center;
571mod wrapped_row_within_align_items_flex_end;
572mod wrapped_row_within_align_items_flex_start;