libcss: branch lcneves/flexbox-tidy updated. release/0.6.1-47-g4afb0ff
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/libcss.git/shortlog/4afb0ffb86a1acc23f7a7d...
...commit http://git.netsurf-browser.org/libcss.git/commit/4afb0ffb86a1acc23f7a7de3...
...tree http://git.netsurf-browser.org/libcss.git/tree/4afb0ffb86a1acc23f7a7de3d6...
The branch, lcneves/flexbox-tidy has been updated
discards 444a0f1d5d526b98e0f081632ad1c91dd16abfe7 (commit)
discards d2ad58ac520a7f1eb9b26f445406b9523a61861c (commit)
discards 1b287446df4d447c50079f719410813aebc1709a (commit)
discards 5bf8791ea5613c3ea29a4c9d57853753240bbf81 (commit)
discards 0144cb925052d5043fe7abfa56f37804f2e32aab (commit)
via 4afb0ffb86a1acc23f7a7de3d649a7b8d39ca7b2 (commit)
via 4d5719ae49f3522b3459fa8f40f49579f9acb01b (commit)
via b515446d5dcef0b514c1b864767891fc9bf64a7d (commit)
via 1bada65849e099e9e7cc579d53cc5a364869c28b (commit)
via 44a822f89696cf4be97531286b47a16a9e2f7f46 (commit)
via d351b7c543912294bb0815b744153cd92dba8e3b (commit)
This update added new revisions after undoing existing revisions. That is
to say, the old revision is not a strict subset of the new revision. This
situation occurs when you --force push a change and generate a repository
containing something like this:
* -- * -- B -- O -- O -- O (444a0f1d5d526b98e0f081632ad1c91dd16abfe7)
\
N -- N -- N (4afb0ffb86a1acc23f7a7de3d649a7b8d39ca7b2)
When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=4afb0ffb86a1acc23f7a...
commit 4afb0ffb86a1acc23f7a7de3d649a7b8d39ca7b2
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
Fixes use of spaces instead of tabs for whitespace.
diff --git a/test/dump_computed.h b/test/dump_computed.h
index c33704a..2a8b009 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -283,8 +283,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* background-image */
val = css_computed_background_image(style, &url);
- if (val == CSS_BACKGROUND_IMAGE_INHERIT) {
- wrote = snprintf(ptr, *len, "background-image: inherit\n");
+ if (val == CSS_BACKGROUND_IMAGE_INHERIT) {
+ wrote = snprintf(ptr, *len, "background-image: inherit\n");
} else if (val == CSS_BACKGROUND_IMAGE_IMAGE && url != NULL) {
wrote = snprintf(ptr, *len, "background-image: url('%.*s')\n",
(int) lwc_string_length(url),
@@ -301,10 +301,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
val = css_computed_background_position(style, &len1, &unit1,
&len2, &unit2);
if (val == CSS_BACKGROUND_POSITION_INHERIT) {
- wrote = snprintf(ptr, *len, "background-position: inherit\n");
- ptr += wrote;
- *len -= wrote;
- } else if (val == CSS_BACKGROUND_POSITION_SET) {
+ wrote = snprintf(ptr, *len, "background-position: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
+ } else if (val == CSS_BACKGROUND_POSITION_SET) {
wrote = snprintf(ptr, *len, "background-position: ");
ptr += wrote;
*len -= wrote;
@@ -372,10 +372,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* border-spacing */
val = css_computed_border_spacing(style, &len1, &unit1, &len2, &unit2);
- if (val == CSS_BORDER_SPACING_INHERIT) {
- wrote = snprintf(ptr, *len, "border-spacing: inherit\n");
- ptr += wrote;
- *len -= wrote;
+ if (val == CSS_BORDER_SPACING_INHERIT) {
+ wrote = snprintf(ptr, *len, "border-spacing: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
} else if (val == CSS_BORDER_SPACING_SET) {
wrote = snprintf(ptr, *len, "border-spacing: ");
ptr += wrote;
@@ -1035,13 +1035,13 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* color */
val = css_computed_color(style, &color);
- if (val == CSS_COLOR_INHERIT) {
- wrote = snprintf(ptr, *len, "color: inherit\n");
+ if (val == CSS_COLOR_INHERIT) {
+ wrote = snprintf(ptr, *len, "color: inherit\n");
} else if (val == CSS_COLOR_COLOR) {
wrote = snprintf(ptr, *len, "color: #%08x\n", color);
}
- ptr += wrote;
- *len -= wrote;
+ ptr += wrote;
+ *len -= wrote;
/* column-count */
val = css_computed_column_count(style, &integer);
@@ -1122,8 +1122,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
color);
break;
}
- ptr += wrote;
- *len -= wrote;
+ ptr += wrote;
+ *len -= wrote;
/* column-rule-style */
val = css_computed_column_rule_style(style);
@@ -1357,9 +1357,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* counter-increment */
val = css_computed_counter_increment(style, &counter);
- if (val == CSS_COUNTER_INCREMENT_INHERIT) {
- wrote = snprintf(ptr, *len, "counter-increment: inherit\n");
- } else if (counter == NULL) {
+ if (val == CSS_COUNTER_INCREMENT_INHERIT) {
+ wrote = snprintf(ptr, *len, "counter-increment: inherit\n");
+ } else if (counter == NULL) {
wrote = snprintf(ptr, *len, "counter-increment: none\n");
} else {
wrote = snprintf(ptr, *len, "counter-increment:");
@@ -1387,8 +1387,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* counter-reset */
val = css_computed_counter_reset(style, &counter);
- if (val == CSS_COUNTER_RESET_INHERIT) {
- wrote = snprintf(ptr, *len, "counter-reset: inherit\n");
+ if (val == CSS_COUNTER_RESET_INHERIT) {
+ wrote = snprintf(ptr, *len, "counter-reset: inherit\n");
} else if (counter == NULL) {
wrote = snprintf(ptr, *len, "counter-reset: none\n");
} else {
@@ -1657,9 +1657,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* flex-grow */
val = css_computed_flex_grow(style, &len1);
switch (val) {
- case CSS_FLEX_GROW_INHERIT:
- wrote = snprintf(ptr, *len, "flex-grow: inherit\n");
- break;
+ case CSS_FLEX_GROW_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-grow: inherit\n");
+ break;
case CSS_FLEX_GROW_SET:
wrote = snprintf(ptr, *len, "flex-grow: ");
ptr += wrote;
@@ -1681,9 +1681,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* flex-shrink */
val = css_computed_flex_shrink(style, &len1);
switch (val) {
- case CSS_FLEX_SHRINK_INHERIT:
- wrote = snprintf(ptr, *len, "flex-shrink: inherit\n");
- break;
+ case CSS_FLEX_SHRINK_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-shrink: inherit\n");
+ break;
case CSS_FLEX_SHRINK_SET:
wrote = snprintf(ptr, *len, "flex-shrink: ");
ptr += wrote;
@@ -1749,10 +1749,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* font-family */
val = css_computed_font_family(style, &string_list);
if (val == CSS_FONT_FAMILY_INHERIT) {
- wrote = snprintf(ptr, *len, "font-family: inherit\n");
- ptr += wrote;
- *len -= wrote;
- } else {
+ wrote = snprintf(ptr, *len, "font-family: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
+ } else {
wrote = snprintf(ptr, *len, "font-family:");
ptr += wrote;
*len -= wrote;
@@ -2085,8 +2085,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* list-style-image */
val = css_computed_list_style_image(style, &url);
- if (val == CSS_LIST_STYLE_IMAGE_INHERIT) {
- wrote = snprintf(ptr, *len, "list-style-image: inherit\n");
+ if (val == CSS_LIST_STYLE_IMAGE_INHERIT) {
+ wrote = snprintf(ptr, *len, "list-style-image: inherit\n");
} else if (url != NULL) {
wrote = snprintf(ptr, *len, "list-style-image: url('%.*s')\n",
(int) lwc_string_length(url),
@@ -2344,10 +2344,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
switch (val) {
case CSS_MIN_HEIGHT_INHERIT:
wrote = snprintf(ptr, *len, "min-height: inherit\n");
- break;
+ break;
case CSS_MIN_HEIGHT_AUTO:
wrote = snprintf(ptr, *len, "min-height: auto\n");
- break;
+ break;
case CSS_MIN_HEIGHT_SET:
wrote = snprintf(ptr, *len, "min-height: ");
ptr += wrote;
@@ -2369,12 +2369,12 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* min-width */
val = css_computed_min_width(style, &len1, &unit1);
switch (val) {
- case CSS_MIN_WIDTH_INHERIT:
- wrote = snprintf(ptr, *len, "min-width: inherit\n");
- break;
- case CSS_MIN_WIDTH_AUTO:
- wrote = snprintf(ptr, *len, "min-width: auto\n");
- break;
+ case CSS_MIN_WIDTH_INHERIT:
+ wrote = snprintf(ptr, *len, "min-width: inherit\n");
+ break;
+ case CSS_MIN_WIDTH_AUTO:
+ wrote = snprintf(ptr, *len, "min-width: auto\n");
+ break;
case CSS_MIN_WIDTH_SET:
wrote = snprintf(ptr, *len, "min-width: ");
ptr += wrote;
@@ -2396,9 +2396,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* opacity */
val = css_computed_opacity(style, &len1);
switch (val) {
- case CSS_OPACITY_INHERIT:
- wrote = snprintf(ptr, *len, "opacity: inherit\n");
- break;
+ case CSS_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "opacity: inherit\n");
+ break;
case CSS_OPACITY_SET:
wrote = snprintf(ptr, *len, "opacity: ");
ptr += wrote;
@@ -2578,9 +2578,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-top */
val = css_computed_padding_top(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-top: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-top: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-top: ");
ptr += wrote;
@@ -2602,9 +2602,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-right */
val = css_computed_padding_right(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-right: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-right: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-right: ");
ptr += wrote;
@@ -2626,9 +2626,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-bottom */
val = css_computed_padding_bottom(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-bottom: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-bottom: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-bottom: ");
ptr += wrote;
@@ -2650,9 +2650,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-left */
val = css_computed_padding_left(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-left: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-left: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-left: ");
ptr += wrote;
@@ -2815,8 +2815,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* text-decoration */
val = css_computed_text_decoration(style);
- if (val == CSS_TEXT_DECORATION_INHERIT) {
- wrote = snprintf(ptr, *len, "text-decoration: inherit\n");
+ if (val == CSS_TEXT_DECORATION_INHERIT) {
+ wrote = snprintf(ptr, *len, "text-decoration: inherit\n");
ptr += wrote;
*len -= wrote;
} else if (val == CSS_TEXT_DECORATION_NONE) {
@@ -2857,9 +2857,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* text-indent */
val = css_computed_text_indent(style, &len1, &unit1);
switch (val) {
- case CSS_TEXT_INDENT_INHERIT:
- wrote = snprintf(ptr, *len, "text-indent: inherit\n");
- break;
+ case CSS_TEXT_INDENT_INHERIT:
+ wrote = snprintf(ptr, *len, "text-indent: inherit\n");
+ break;
case CSS_TEXT_INDENT_SET:
wrote = snprintf(ptr, *len, "text-indent: ");
ptr += wrote;
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=4d5719ae49f3522b3459...
commit 4d5719ae49f3522b3459fa8f40f49579f9acb01b
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
Tests: Add support and selection tests for the flexbox properties.
diff --git a/test/data/select/tests1.dat b/test/data/select/tests1.dat
index ff8bbe1..ea0d237 100644
--- a/test/data/select/tests1.dat
+++ b/test/data/select/tests1.dat
@@ -6,6 +6,9 @@ div { display: block; }
div { display: inline; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -49,6 +52,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -56,6 +64,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -71,6 +80,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -110,6 +120,9 @@ p { display: block; }
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -153,6 +166,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -160,6 +178,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -175,6 +194,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -218,6 +238,9 @@ div#foo { background-color: #bbc; }
div#foo { float: right; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -261,6 +284,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -268,6 +296,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -283,6 +312,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -327,6 +357,9 @@ div#foo { background-color: #bbc; }
div p.green { float: left !important; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -370,6 +403,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -377,6 +415,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -392,6 +431,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -436,6 +476,9 @@ div.moose > div { border-top-style: none; }
div.moose > div + div { border-top-style: solid; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -479,6 +522,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -486,6 +534,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -501,6 +550,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -545,6 +595,9 @@ div.moose > div { border-top-style: none; }
div.moose > div + div { border-top-style: solid; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -588,6 +641,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -595,6 +653,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -610,6 +669,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -644,6 +704,9 @@ z-index: auto
div { color: currentColor; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -687,6 +750,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -694,6 +762,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -709,6 +778,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -744,6 +814,9 @@ div { background-color: #000; }
div:active { background-color: #bbc; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #ff000000
background-image: none
@@ -787,6 +860,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -794,6 +872,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -809,6 +888,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -844,6 +924,9 @@ z-index: auto
p:first-child { background-color: #bbc; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #ffbbbbcc
background-image: none
@@ -887,6 +970,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -894,6 +982,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -909,6 +998,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -943,6 +1033,9 @@ z-index: auto
div { quotes: "a" "b" }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -986,6 +1079,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -993,6 +1091,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1008,6 +1107,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1047,6 +1147,9 @@ div, p { display: block; }
div p + p { background-attachment: fixed; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: fixed
background-color: #00000000
background-image: none
@@ -1090,6 +1193,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1097,6 +1205,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1112,6 +1221,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1151,6 +1261,9 @@ div, p { display: block; }
div p + p { background-attachment: fixed; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1194,6 +1307,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1201,6 +1319,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1216,6 +1335,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1256,6 +1376,9 @@ div p { background-attachment: scroll; }
div p + p { background-attachment: fixed; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1299,6 +1422,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1306,6 +1434,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1321,6 +1450,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1364,6 +1494,9 @@ div p + p { background-image: url("Sonic2.png"); background-position: center; }
div p + p { background-image: url("Sonic_the_Hedgehog.png"); background-position: bottom right; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: url('Sonic_the_Hedgehog.png')
@@ -1407,6 +1540,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1414,6 +1552,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1429,6 +1568,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1471,6 +1611,9 @@ div p + p { background-image: url("Sonic2.png"); }
div p + p { background-image: url("Sonic_the_Hedgehog.png"); background-repeat: repeat}
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: url('Sonic_the_Hedgehog.png')
@@ -1514,6 +1657,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1521,6 +1669,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1536,6 +1685,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1584,6 +1734,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1627,6 +1780,11 @@ cursor: auto
direction: ltr
display: table-row
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1634,6 +1792,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1649,6 +1808,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1697,6 +1857,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1740,6 +1903,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1747,6 +1915,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1762,6 +1931,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1810,6 +1980,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1853,6 +2026,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1860,6 +2038,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1875,6 +2054,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -1927,6 +2107,9 @@ td,th {border-top-style: none;border-right-style: hidden;border-bottom-style: do
tr > td {border-top-width: thin;border-right-width: medium;border-bottom-width: thick;border-left-width: 2px;}
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -1970,6 +2153,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -1977,6 +2165,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -1992,6 +2181,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2043,6 +2233,9 @@ td,th {border-top-style: solid;border-right-style: double;border-bottom-style: g
tr > td {border-top-width: 0;border-right-width: 2em;border-bottom-width: thick;border-left-width: -2px;}
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2086,6 +2279,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2093,6 +2291,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2108,6 +2307,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2157,6 +2357,9 @@ td,th {display:table-cell;}
.hedgehog > tr > td {border-style:inset outset;}
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2200,6 +2403,11 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2207,6 +2415,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2222,6 +2431,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2270,6 +2480,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2313,6 +2526,11 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2320,6 +2538,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2335,6 +2554,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2383,6 +2603,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2426,6 +2649,11 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2433,6 +2661,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2448,6 +2677,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2496,6 +2726,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #ff1122ee
background-image: url('sonic-the-hedgehog.png')
@@ -2539,6 +2772,11 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2546,6 +2784,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2561,6 +2800,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2609,6 +2849,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2652,6 +2895,11 @@ cursor: crosshair
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2659,6 +2907,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2674,6 +2923,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2722,6 +2972,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2765,6 +3018,11 @@ cursor: default
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2772,6 +3030,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2787,6 +3046,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2835,6 +3095,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2878,6 +3141,11 @@ cursor: pointer
direction: ltr
display: table
empty-cells: hide
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2885,6 +3153,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -2900,6 +3169,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -2948,6 +3218,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -2991,6 +3264,11 @@ cursor: move
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -2998,6 +3276,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3013,6 +3292,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3061,6 +3341,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3104,6 +3387,11 @@ cursor: e-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -3111,6 +3399,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3126,6 +3415,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3174,6 +3464,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3217,6 +3510,11 @@ cursor: ne-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -3224,6 +3522,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3239,6 +3538,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3287,6 +3587,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3330,6 +3633,11 @@ cursor: nw-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 14.391pt
@@ -3337,6 +3645,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3352,6 +3661,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3400,6 +3710,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3443,6 +3756,11 @@ cursor: n-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 14.391pt
@@ -3450,6 +3768,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3465,6 +3784,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3513,6 +3833,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3556,6 +3879,11 @@ cursor: se-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 24pt
@@ -3563,6 +3891,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3578,6 +3907,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3626,6 +3956,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3669,6 +4002,11 @@ cursor: sw-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 18pt
@@ -3676,6 +4014,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3691,6 +4030,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3739,6 +4079,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3782,6 +4125,11 @@ cursor: s-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 13.500pt
@@ -3789,6 +4137,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3804,6 +4153,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3852,6 +4202,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -3895,6 +4248,11 @@ cursor: w-resize
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -3902,6 +4260,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -3917,6 +4276,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -3965,6 +4325,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4008,6 +4371,11 @@ cursor: text
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 9.750pt
@@ -4015,6 +4383,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4030,6 +4399,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4078,6 +4448,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4121,6 +4494,11 @@ cursor: wait
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 7.500pt
@@ -4128,6 +4506,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4143,6 +4522,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4191,6 +4571,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4234,6 +4617,11 @@ cursor: help
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 6.750pt
@@ -4241,6 +4629,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4256,6 +4645,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4304,6 +4694,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4347,6 +4740,11 @@ cursor: progress
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 40px
@@ -4354,6 +4752,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4369,6 +4768,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 0.500
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4417,6 +4817,9 @@ td,th {display:table-cell;}
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4460,6 +4863,11 @@ cursor: url('sonic-team.png') pointer
direction: ltr
display: table
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4467,6 +4875,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4482,6 +4891,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4523,6 +4933,9 @@ div#foo { background-color: #bbc; letter-spacing: 200%; }
div#foo p { letter-spacing: 300%; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4566,6 +4979,11 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4573,6 +4991,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4588,6 +5007,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4629,6 +5049,9 @@ div#foo { background-color: #bbc; letter-spacing: 20mm; }
div#foo p { letter-spacing: 300px; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4672,6 +5095,11 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4679,6 +5107,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: 300px
line-height: normal
@@ -4694,6 +5123,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4735,6 +5165,9 @@ div#foo p { letter-spacing: inherit; }
div p { letter-spacing: horizontal-tb; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4778,6 +5211,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4785,6 +5223,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4800,6 +5239,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4838,6 +5278,9 @@ p{display: block;}
p{column-count: 2; column-rule-color: #bbc; column-rule-style: solid; column-rule-width: 2px; column-span: all; column-width: 6em;}
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4881,6 +5324,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4888,6 +5336,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -4903,6 +5352,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -4942,6 +5392,9 @@ p { display: block; break-after: avoid; break-before: column; }
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -4985,6 +5438,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -4992,6 +5450,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -5007,6 +5466,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -5046,6 +5506,9 @@ p { display: block; break-after: avoid-page; break-before: always; }
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -5089,6 +5552,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -5096,6 +5564,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -5111,6 +5580,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -5150,6 +5620,9 @@ p { display: block; break-after: avoid-page; break-before: always; break-inside:
#author
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -5193,6 +5666,11 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -5200,6 +5678,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -5215,6 +5694,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -5250,6 +5730,9 @@ div { box-sizing: inherit; }
#user
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -5293,6 +5776,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -5300,6 +5788,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -5315,6 +5804,7 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
@@ -5351,6 +5841,9 @@ div { box-sizing: inherit; }
div { box-sizing: border-box; }
#errors
#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
background-attachment: scroll
background-color: #00000000
background-image: none
@@ -5394,6 +5887,11 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
float: none
font-family: sans-serif
font-size: 12pt
@@ -5401,6 +5899,7 @@ font-style: normal
font-variant: normal
font-weight: normal
height: auto
+justify-content: flex-start
left: auto
letter-spacing: normal
line-height: normal
@@ -5416,6 +5915,5720 @@ max-width: none
min-height: 0px
min-width: 0px
opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: space-between; align-items: stretch; align-self: flex-start; }
+#user
+#errors
+#expected
+align-content: space-between
+align-items: stretch
+align-self: flex-start
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: stretch; align-items: flex-start; align-self: flex-end; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: flex-start
+align-self: flex-end
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: flex-start; align-items: flex-end; align-self: center; }
+#user
+#errors
+#expected
+align-content: flex-start
+align-items: flex-end
+align-self: center
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: flex-end; align-items: center; align-self: baseline; }
+#user
+#errors
+#expected
+align-content: flex-end
+align-items: center
+align-self: baseline
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: center; align-items: baseline; align-self: auto; }
+#user
+#errors
+#expected
+align-content: center
+align-items: baseline
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { align-content: flex-end; }
+p { align-content: inherit; align-items: stretch; align-self: flex-start; }
+| div*
+#ua
+div { align-content: center; align-items: center; align-self: center; }
+p { align-content: inherit; align-items: inherit; align-self: inherit; }
+#user
+#errors
+#expected
+align-content: center
+align-items: center
+align-self: center
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: space-around; align-items: stretch; align-self: stretch; }
+#user
+#errors
+#expected
+align-content: space-around
+align-items: stretch
+align-self: stretch
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: space-evenly; align-items: flex-start; align-self: stretch; }
+#user
+#errors
+#expected
+align-content: space-evenly
+align-items: flex-start
+align-self: stretch
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { align-content: center; align-items: center; align-self: center; }
+#user
+div { align-content: flex-end; align-items: flex-end; align-self: flex-end; }
+#errors
+#expected
+align-content: flex-end
+align-items: flex-end
+align-self: flex-end
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+#
+#tree
+| div*
+#ua
+div { flex: 2 3 10px; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 10px
+flex-direction: row
+flex-grow: 2.000
+flex-shrink: 3.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: auto; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 1.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: none; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 0.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 0; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 0 0; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 0 0 0; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 0.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 3; }
+#user
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 3.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 3px; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 3px
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 2 3em; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 3em
+flex-direction: row
+flex-grow: 2.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 20 30; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 20.000
+flex-shrink: 30.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 2 2 2px; }
+#user
+div { flex: 3 3; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 3.000
+flex-shrink: 3.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 2 2 2px; }
+#user
+div { flex-grow: 3; flex-shrink: 3; flex-basis: 3px; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 3px
+flex-direction: row
+flex-grow: 3.000
+flex-shrink: 3.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 0 0 0; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 0px
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 0.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-grow: 2; flex-basis: 20rem; }
+#user
+div { flex: none; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 0.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+| p
+#ua
+div { flex: 3 3 3%; }
+p { flex: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 3%
+flex-direction: row
+flex-grow: 3.000
+flex-shrink: 3.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { flex: 3 3 3%; }
+p { flex: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 3%
+flex-direction: row
+flex-grow: 3.000
+flex-shrink: 3.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: nowrap; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: wrap; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: wrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: wrap-reverse; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: wrap-reverse
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: row; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: column; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: column
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: row-reverse; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row-reverse
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: column-reverse; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: column-reverse
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-flow: column-reverse wrap-reverse; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: column-reverse
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: wrap-reverse
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { flex-flow: column wrap; }
+p {flex-flow: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: column
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: wrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { flex-flow: row-reverse wrap-reverse; }
+p { flex-direction: inherit; flex-wrap: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row-reverse
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: wrap-reverse
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex-basis: 4.5em; flex-grow: 2.37; flex-shrink: 0.899; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 4.500em
+flex-direction: row
+flex-grow: 2.370
+flex-shrink: 0.899
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: flex-start; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: flex-end; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-end
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: center; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: center
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: space-between; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-between
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: space-around; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-around
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: space-evenly; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-evenly
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { justify-content: space-around; }
+#user
+div { justify-content: space-evenly; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-evenly
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { justify-content: center; }
+p { justify-content: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: center
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { order: 0; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { order: 5; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 5
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { order: -5; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: -5
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { order: 7; }
+p { order: inherit; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: 7
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { flex: 2.3 3.78 4.5em; flex-flow: column wrap; align-content: space-around; align-items: center; align-self: flex-end; justify-content: space-evenly; order: -1; }
+#errors
+#expected
+align-content: space-around
+align-items: center
+align-self: flex-end
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 4.500em
+flex-direction: column
+flex-grow: 2.300
+flex-shrink: 3.780
+flex-wrap: wrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-evenly
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: -1
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div
+| p*
+#ua
+div { flex: 2.3 3.78 4.5em; flex-flow: column wrap; align-content: space-around; align-items: center; align-self: flex-end; justify-content: space-evenly; order: -1; }
+p { flex: inherit; flex-flow: inherit; align-content: inherit; align-items: inherit; align-self: inherit; justify-content: inherit; order: inherit; }
+#errors
+#expected
+align-content: space-around
+align-items: center
+align-self: flex-end
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline
+empty-cells: show
+flex-basis: 4.500em
+flex-direction: column
+flex-grow: 2.300
+flex-shrink: 3.780
+flex-wrap: wrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: space-evenly
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+opacity: 1.000
+order: -1
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { display: flex; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: flex
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: auto
+min-width: auto
+opacity: 1.000
+order: 0
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow-x: visible
+overflow-y: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: static
+quotes: none
+right: auto
+table-layout: auto
+text-align: default
+text-decoration: none
+text-indent: 0px
+text-transform: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+visibility: visible
+white-space: normal
+width: auto
+word-spacing: normal
+writing-mode: horizontal-tb
+z-index: auto
+#reset
+
+#tree
+| div*
+#ua
+div { display: inline-flex; }
+#errors
+#expected
+align-content: stretch
+align-items: stretch
+align-self: auto
+background-attachment: scroll
+background-color: #00000000
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-collapse: separate
+border-spacing: 0px 0px
+border-top-color: #ff000000
+border-right-color: #ff000000
+border-bottom-color: #ff000000
+border-left-color: #ff000000
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: 2px
+border-right-width: 2px
+border-bottom-width: 2px
+border-left-width: 2px
+bottom: auto
+box-sizing: content-box
+break-after: auto
+break-before: auto
+break-inside: auto
+caption-side: top
+clear: none
+clip: auto
+color: #ff000000
+column-count: auto
+column-fill: balance
+column-gap: normal
+column-rule-color: #ff000000
+column-rule-style: none
+column-rule-width: 2px
+column-span: none
+column-width: auto
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+direction: ltr
+display: inline-flex
+empty-cells: show
+flex-basis: auto
+flex-direction: row
+flex-grow: 0.000
+flex-shrink: 1.000
+flex-wrap: nowrap
+float: none
+font-family: sans-serif
+font-size: 12pt
+font-style: normal
+font-variant: normal
+font-weight: normal
+height: auto
+justify-content: flex-start
+left: auto
+letter-spacing: normal
+line-height: normal
+list-style-image: none
+list-style-position: outside
+list-style-type: disc
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: auto
+min-width: auto
+opacity: 1.000
+order: 0
outline-color: invert
outline-style: none
outline-width: 2px
diff --git a/test/dump_computed.h b/test/dump_computed.h
index c9d699d..c33704a 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -153,6 +153,99 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
lwc_string **string_list = NULL;
int32_t integer = 0;
+ /* align-content */
+ val = css_computed_align_content(style);
+ switch (val) {
+ case CSS_ALIGN_CONTENT_INHERIT:
+ wrote = snprintf(ptr, *len, "align-content: inherit\n");
+ break;
+ case CSS_ALIGN_CONTENT_STRETCH:
+ wrote = snprintf(ptr, *len, "align-content: stretch\n");
+ break;
+ case CSS_ALIGN_CONTENT_FLEX_START:
+ wrote = snprintf(ptr, *len, "align-content: flex-start\n");
+ break;
+ case CSS_ALIGN_CONTENT_FLEX_END:
+ wrote = snprintf(ptr, *len, "align-content: flex-end\n");
+ break;
+ case CSS_ALIGN_CONTENT_CENTER:
+ wrote = snprintf(ptr, *len, "align-content: center\n");
+ break;
+ case CSS_ALIGN_CONTENT_SPACE_BETWEEN:
+ wrote = snprintf(ptr, *len, "align-content: space-between\n");
+ break;
+ case CSS_ALIGN_CONTENT_SPACE_AROUND:
+ wrote = snprintf(ptr, *len, "align-content: space-around\n");
+ break;
+ case CSS_ALIGN_CONTENT_SPACE_EVENLY:
+ wrote = snprintf(ptr, *len, "align-content: space-evenly\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* align-items */
+ val = css_computed_align_items(style);
+ switch (val) {
+ case CSS_ALIGN_ITEMS_INHERIT:
+ wrote = snprintf(ptr, *len, "align-items: inherit\n");
+ break;
+ case CSS_ALIGN_ITEMS_STRETCH:
+ wrote = snprintf(ptr, *len, "align-items: stretch\n");
+ break;
+ case CSS_ALIGN_ITEMS_FLEX_START:
+ wrote = snprintf(ptr, *len, "align-items: flex-start\n");
+ break;
+ case CSS_ALIGN_ITEMS_FLEX_END:
+ wrote = snprintf(ptr, *len, "align-items: flex-end\n");
+ break;
+ case CSS_ALIGN_ITEMS_CENTER:
+ wrote = snprintf(ptr, *len, "align-items: center\n");
+ break;
+ case CSS_ALIGN_ITEMS_BASELINE:
+ wrote = snprintf(ptr, *len, "align-items: baseline\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* align-self */
+ val = css_computed_align_self(style);
+ switch (val) {
+ case CSS_ALIGN_SELF_INHERIT:
+ wrote = snprintf(ptr, *len, "align-self: inherit\n");
+ break;
+ case CSS_ALIGN_SELF_STRETCH:
+ wrote = snprintf(ptr, *len, "align-self: stretch\n");
+ break;
+ case CSS_ALIGN_SELF_FLEX_START:
+ wrote = snprintf(ptr, *len, "align-self: flex-start\n");
+ break;
+ case CSS_ALIGN_SELF_FLEX_END:
+ wrote = snprintf(ptr, *len, "align-self: flex-end\n");
+ break;
+ case CSS_ALIGN_SELF_CENTER:
+ wrote = snprintf(ptr, *len, "align-self: center\n");
+ break;
+ case CSS_ALIGN_SELF_BASELINE:
+ wrote = snprintf(ptr, *len, "align-self: baseline\n");
+ break;
+ case CSS_ALIGN_SELF_AUTO:
+ wrote = snprintf(ptr, *len, "align-self: auto\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* background-attachment */
val = css_computed_background_attachment(style);
switch (val) {
@@ -1474,6 +1567,12 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
case CSS_DISPLAY_NONE:
wrote = snprintf(ptr, *len, "display: none\n");
break;
+ case CSS_DISPLAY_FLEX:
+ wrote = snprintf(ptr, *len, "display: flex\n");
+ break;
+ case CSS_DISPLAY_INLINE_FLEX:
+ wrote = snprintf(ptr, *len, "display: inline-flex\n");
+ break;
default:
wrote = 0;
break;
@@ -1500,6 +1599,131 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* flex-basis */
+ val = css_computed_flex_basis(style, &len1, &unit1);
+ switch (val) {
+ case CSS_FLEX_BASIS_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-basis: inherit\n");
+ break;
+ case CSS_FLEX_BASIS_AUTO:
+ wrote = snprintf(ptr, *len, "flex-basis: auto\n");
+ break;
+ case CSS_FLEX_BASIS_CONTENT:
+ wrote = snprintf(ptr, *len, "flex-basis: content\n");
+ break;
+ case CSS_FLEX_BASIS_SET:
+ wrote = snprintf(ptr, *len, "flex-basis: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_unit(len1, unit1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* flex-direction */
+ val = css_computed_flex_direction(style);
+ switch (val) {
+ case CSS_FLEX_DIRECTION_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-direction: inherit\n");
+ break;
+ case CSS_FLEX_DIRECTION_ROW:
+ wrote = snprintf(ptr, *len, "flex-direction: row\n");
+ break;
+ case CSS_FLEX_DIRECTION_ROW_REVERSE:
+ wrote = snprintf(ptr, *len, "flex-direction: row-reverse\n");
+ break;
+ case CSS_FLEX_DIRECTION_COLUMN:
+ wrote = snprintf(ptr, *len, "flex-direction: column\n");
+ break;
+ case CSS_FLEX_DIRECTION_COLUMN_REVERSE:
+ wrote = snprintf(ptr, *len, "flex-direction: column-reverse\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* flex-grow */
+ val = css_computed_flex_grow(style, &len1);
+ switch (val) {
+ case CSS_FLEX_GROW_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-grow: inherit\n");
+ break;
+ case CSS_FLEX_GROW_SET:
+ wrote = snprintf(ptr, *len, "flex-grow: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* flex-shrink */
+ val = css_computed_flex_shrink(style, &len1);
+ switch (val) {
+ case CSS_FLEX_SHRINK_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-shrink: inherit\n");
+ break;
+ case CSS_FLEX_SHRINK_SET:
+ wrote = snprintf(ptr, *len, "flex-shrink: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
+ /* flex-wrap */
+ val = css_computed_flex_wrap(style);
+ switch (val) {
+ case CSS_FLEX_WRAP_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-wrap: inherit\n");
+ break;
+ case CSS_FLEX_WRAP_NOWRAP:
+ wrote = snprintf(ptr, *len, "flex-wrap: nowrap\n");
+ break;
+ case CSS_FLEX_WRAP_WRAP:
+ wrote = snprintf(ptr, *len, "flex-wrap: wrap\n");
+ break;
+ case CSS_FLEX_WRAP_WRAP_REVERSE:
+ wrote = snprintf(ptr, *len, "flex-wrap: wrap-reverse\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* float */
val = css_computed_float(style);
switch (val) {
@@ -1736,6 +1960,37 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* justify-content */
+ val = css_computed_justify_content(style);
+ switch (val) {
+ case CSS_JUSTIFY_CONTENT_INHERIT:
+ wrote = snprintf(ptr, *len, "justify-content: inherit\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_FLEX_START:
+ wrote = snprintf(ptr, *len, "justify-content: flex-start\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_FLEX_END:
+ wrote = snprintf(ptr, *len, "justify-content: flex-end\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_CENTER:
+ wrote = snprintf(ptr, *len, "justify-content: center\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_SPACE_BETWEEN:
+ wrote = snprintf(ptr, *len, "justify-content: space-between\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_SPACE_AROUND:
+ wrote = snprintf(ptr, *len, "justify-content: space-around\n");
+ break;
+ case CSS_JUSTIFY_CONTENT_SPACE_EVENLY:
+ wrote = snprintf(ptr, *len, "justify-content: space-evenly\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* left */
val = css_computed_left(style, &len1, &unit1);
switch (val) {
@@ -2090,6 +2345,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
case CSS_MIN_HEIGHT_INHERIT:
wrote = snprintf(ptr, *len, "min-height: inherit\n");
break;
+ case CSS_MIN_HEIGHT_AUTO:
+ wrote = snprintf(ptr, *len, "min-height: auto\n");
+ break;
case CSS_MIN_HEIGHT_SET:
wrote = snprintf(ptr, *len, "min-height: ");
ptr += wrote;
@@ -2114,6 +2372,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
case CSS_MIN_WIDTH_INHERIT:
wrote = snprintf(ptr, *len, "min-width: inherit\n");
break;
+ case CSS_MIN_WIDTH_AUTO:
+ wrote = snprintf(ptr, *len, "min-width: auto\n");
+ break;
case CSS_MIN_WIDTH_SET:
wrote = snprintf(ptr, *len, "min-width: ");
ptr += wrote;
@@ -2156,6 +2417,22 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* order */
+ val = css_computed_order(style, &integer);
+ switch (val) {
+ case CSS_ORDER_INHERIT:
+ wrote = snprintf(ptr, *len, "order: inherit\n");
+ break;
+ case CSS_ORDER_SET:
+ wrote = snprintf(ptr, *len, "order: %d\n", integer);
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* outline-color */
val = css_computed_outline_color(style, &color);
switch (val) {
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=b515446d5dcef0b514c1...
commit b515446d5dcef0b514c1b864767891fc9bf64a7d
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
Tests: Add support and parsing tests for the flexbox properties.
diff --git a/test/data/parse2/INDEX b/test/data/parse2/INDEX
index 1afb4da..9a4c02b 100644
--- a/test/data/parse2/INDEX
+++ b/test/data/parse2/INDEX
@@ -20,3 +20,4 @@ outline.dat Outline property tests
overflow.dat Overflow property tests
padding.dat Padding property tests
multicol.dat Multi-column layout property tests
+flexbox.dat Flexbox properties and shorthands tests
diff --git a/test/data/parse2/flexbox.dat b/test/data/parse2/flexbox.dat
new file mode 100644
index 0000000..99ac2df
--- /dev/null
+++ b/test/data/parse2/flexbox.dat
@@ -0,0 +1,1713 @@
+#data
+* { align-content: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { align-content: inherit; }
+#errors
+#expected
+| *
+| align-content: inherit
+#reset
+
+#data
+* { align-content: stretch; }
+#errors
+#expected
+| *
+| align-content: stretch
+#reset
+
+#data
+* { align-content: flex-start; }
+#errors
+#expected
+| *
+| align-content: flex-start
+#reset
+
+#data
+* { align-content: flex-end; }
+#errors
+#expected
+| *
+| align-content: flex-end
+#reset
+
+#data
+* { align-content: center; }
+#errors
+#expected
+| *
+| align-content: center
+#reset
+
+#data
+* { align-content: space-between; }
+#errors
+#expected
+| *
+| align-content: space-between
+#reset
+
+#data
+* { align-content: space-around; }
+#errors
+#expected
+| *
+| align-content: space-around
+#reset
+
+#data
+* { align-content: space-evenly; }
+#errors
+#expected
+| *
+| align-content: space-evenly
+#reset
+
+#data
+* { align-content: inherit !important; }
+#errors
+#expected
+| *
+| align-content: inherit !important
+#reset
+
+#data
+* { align-content: stretch !important; }
+#errors
+#expected
+| *
+| align-content: stretch !important
+#reset
+
+#data
+* { align-content: flex-start !important; }
+#errors
+#expected
+| *
+| align-content: flex-start !important
+#reset
+
+#data
+* { align-content: flex-end !important; }
+#errors
+#expected
+| *
+| align-content: flex-end !important
+#reset
+
+#data
+* { align-content: center !important; }
+#errors
+#expected
+| *
+| align-content: center !important
+#reset
+
+#data
+* { align-content: space-between !important; }
+#errors
+#expected
+| *
+| align-content: space-between !important
+#reset
+
+#data
+* { align-content: space-around !important; }
+#errors
+#expected
+| *
+| align-content: space-around !important
+#reset
+
+#data
+* { align-content: space-evenly !important; }
+#errors
+#expected
+| *
+| align-content: space-evenly !important
+#reset
+
+#data
+* { align-items: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { align-items: inherit; }
+#errors
+#expected
+| *
+| align-items: inherit
+#reset
+
+#data
+* { align-items: stretch; }
+#errors
+#expected
+| *
+| align-items: stretch
+#reset
+
+#data
+* { align-items: flex-start; }
+#errors
+#expected
+| *
+| align-items: flex-start
+#reset
+
+#data
+* { align-items: flex-end; }
+#errors
+#expected
+| *
+| align-items: flex-end
+#reset
+
+#data
+* { align-items: center; }
+#errors
+#expected
+| *
+| align-items: center
+#reset
+
+#data
+* { align-items: baseline; }
+#errors
+#expected
+| *
+| align-items: baseline
+#reset
+
+#data
+* { align-items: inherit !important; }
+#errors
+#expected
+| *
+| align-items: inherit !important
+#reset
+
+#data
+* { align-items: stretch !important; }
+#errors
+#expected
+| *
+| align-items: stretch !important
+#reset
+
+#data
+* { align-items: flex-start !important; }
+#errors
+#expected
+| *
+| align-items: flex-start !important
+#reset
+
+#data
+* { align-items: flex-end !important; }
+#errors
+#expected
+| *
+| align-items: flex-end !important
+#reset
+
+#data
+* { align-items: center !important; }
+#errors
+#expected
+| *
+| align-items: center !important
+#reset
+
+#data
+* { align-items: baseline !important; }
+#errors
+#expected
+| *
+| align-items: baseline !important
+#reset
+
+#data
+* { align-self: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { align-self: inherit; }
+#errors
+#expected
+| *
+| align-self: inherit
+#reset
+
+#data
+* { align-self: stretch; }
+#errors
+#expected
+| *
+| align-self: stretch
+#reset
+
+#data
+* { align-self: flex-start; }
+#errors
+#expected
+| *
+| align-self: flex-start
+#reset
+
+#data
+* { align-self: flex-end; }
+#errors
+#expected
+| *
+| align-self: flex-end
+#reset
+
+#data
+* { align-self: center; }
+#errors
+#expected
+| *
+| align-self: center
+#reset
+
+#data
+* { align-self: baseline; }
+#errors
+#expected
+| *
+| align-self: baseline
+#reset
+
+#data
+* { align-self: auto; }
+#errors
+#expected
+| *
+| align-self: auto
+#reset
+
+#data
+* { align-self: inherit !important; }
+#errors
+#expected
+| *
+| align-self: inherit !important
+#reset
+
+#data
+* { align-self: stretch !important; }
+#errors
+#expected
+| *
+| align-self: stretch !important
+#reset
+
+#data
+* { align-self: flex-start !important; }
+#errors
+#expected
+| *
+| align-self: flex-start !important
+#reset
+
+#data
+* { align-self: flex-end !important; }
+#errors
+#expected
+| *
+| align-self: flex-end !important
+#reset
+
+#data
+* { align-self: center !important; }
+#errors
+#expected
+| *
+| align-self: center !important
+#reset
+
+#data
+* { align-self: baseline !important; }
+#errors
+#expected
+| *
+| align-self: baseline !important
+#reset
+
+#data
+* { align-self: auto !important; }
+#errors
+#expected
+| *
+| align-self: auto !important
+#reset
+
+#data
+* { flex-basis: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-basis: inherit; }
+#errors
+#expected
+| *
+| flex-basis: inherit
+#reset
+
+#data
+* { flex-basis: auto; }
+#errors
+#expected
+| *
+| flex-basis: auto
+#reset
+
+#data
+* { flex-basis: content; }
+#errors
+#expected
+| *
+| flex-basis: content
+#reset
+
+#data
+* { flex-basis: 0; }
+#errors
+#expected
+| *
+| flex-basis: 0px
+#reset
+
+#data
+* { flex-basis: 10px; }
+#errors
+#expected
+| *
+| flex-basis: 10px
+#reset
+
+#data
+* { flex-basis: 10em; }
+#errors
+#expected
+| *
+| flex-basis: 10em
+#reset
+
+#data
+* { flex-basis: 10invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-basis: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-basis: inherit !important; }
+#errors
+#expected
+| *
+| flex-basis: inherit !important
+#reset
+
+#data
+* { flex-basis: auto !important; }
+#errors
+#expected
+| *
+| flex-basis: auto !important
+#reset
+
+#data
+* { flex-basis: content !important; }
+#errors
+#expected
+| *
+| flex-basis: content !important
+#reset
+
+#data
+* { flex-basis: 0 !important; }
+#errors
+#expected
+| *
+| flex-basis: 0px !important
+#reset
+
+#data
+* { flex-basis: 10px !important; }
+#errors
+#expected
+| *
+| flex-basis: 10px !important
+#reset
+
+#data
+* { flex-basis: 10em !important; }
+#errors
+#expected
+| *
+| flex-basis: 10em !important
+#reset
+
+#data
+* { flex-basis: 10invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-direction: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-direction: inherit; }
+#errors
+#expected
+| *
+| flex-direction: inherit
+#reset
+
+#data
+* { flex-direction: row; }
+#errors
+#expected
+| *
+| flex-direction: row
+#reset
+
+#data
+* { flex-direction: row-reverse; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse
+#reset
+
+#data
+* { flex-direction: column; }
+#errors
+#expected
+| *
+| flex-direction: column
+#reset
+
+#data
+* { flex-direction: column-reverse; }
+#errors
+#expected
+| *
+| flex-direction: column-reverse
+#reset
+
+#data
+* { flex-direction: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-direction: inherit !important; }
+#errors
+#expected
+| *
+| flex-direction: inherit !important
+#reset
+
+#data
+* { flex-direction: row !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+#reset
+
+#data
+* { flex-direction: row-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse !important
+#reset
+
+#data
+* { flex-direction: column !important; }
+#errors
+#expected
+| *
+| flex-direction: column !important
+#reset
+
+#data
+* { flex-direction: column-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: column-reverse !important
+#reset
+
+#data
+* { flex-grow: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: 10px; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: -2; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: inherit; }
+#errors
+#expected
+| *
+| flex-grow: inherit
+#reset
+
+#data
+* { flex-grow: 0; }
+#errors
+#expected
+| *
+| flex-grow: 0
+#reset
+
+#data
+* { flex-grow: 0.5; }
+#errors
+#expected
+| *
+| flex-grow: 0.500
+#reset
+
+#data
+* { flex-grow: 1; }
+#errors
+#expected
+| *
+| flex-grow: 1
+#reset
+
+#data
+* { flex-grow: 3.5; }
+#errors
+#expected
+| *
+| flex-grow: 3.500
+#reset
+
+#data
+* { flex-grow: 20; }
+#errors
+#expected
+| *
+| flex-grow: 20
+#reset
+
+#data
+* { flex-grow: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: 10px !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: -2 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-grow: inherit !important; }
+#errors
+#expected
+| *
+| flex-grow: inherit !important
+#reset
+
+#data
+* { flex-grow: 0 !important; }
+#errors
+#expected
+| *
+| flex-grow: 0 !important
+#reset
+
+#data
+* { flex-grow: 0.5 !important; }
+#errors
+#expected
+| *
+| flex-grow: 0.500 !important
+#reset
+
+#data
+* { flex-grow: 1 !important; }
+#errors
+#expected
+| *
+| flex-grow: 1 !important
+#reset
+
+#data
+* { flex-grow: 3.5 !important; }
+#errors
+#expected
+| *
+| flex-grow: 3.500 !important
+#reset
+
+#data
+* { flex-grow: 20 !important; }
+#errors
+#expected
+| *
+| flex-grow: 20 !important
+#reset
+
+#data
+* { flex-shrink: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: 10px; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: -2; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: inherit; }
+#errors
+#expected
+| *
+| flex-shrink: inherit
+#reset
+
+#data
+* { flex-shrink: 0; }
+#errors
+#expected
+| *
+| flex-shrink: 0
+#reset
+
+#data
+* { flex-shrink: 0.5; }
+#errors
+#expected
+| *
+| flex-shrink: 0.500
+#reset
+
+#data
+* { flex-shrink: 1; }
+#errors
+#expected
+| *
+| flex-shrink: 1
+#reset
+
+#data
+* { flex-shrink: 3.5; }
+#errors
+#expected
+| *
+| flex-shrink: 3.500
+#reset
+
+#data
+* { flex-shrink: 20; }
+#errors
+#expected
+| *
+| flex-shrink: 20
+#reset
+
+#data
+* { flex-shrink: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: 10px !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: -2 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-shrink: inherit !important; }
+#errors
+#expected
+| *
+| flex-shrink: inherit !important
+#reset
+
+#data
+* { flex-shrink: 0 !important; }
+#errors
+#expected
+| *
+| flex-shrink: 0 !important
+#reset
+
+#data
+* { flex-shrink: 0.5 !important; }
+#errors
+#expected
+| *
+| flex-shrink: 0.500 !important
+#reset
+
+#data
+* { flex-shrink: 1 !important; }
+#errors
+#expected
+| *
+| flex-shrink: 1 !important
+#reset
+
+#data
+* { flex-shrink: 3.5 !important; }
+#errors
+#expected
+| *
+| flex-shrink: 3.500 !important
+#reset
+
+#data
+* { flex-shrink: 20 !important; }
+#errors
+#expected
+| *
+| flex-shrink: 20 !important
+#reset
+
+#data
+* { flex-wrap: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-wrap: inherit; }
+#errors
+#expected
+| *
+| flex-wrap: inherit
+#reset
+
+#data
+* { flex-wrap: nowrap; }
+#errors
+#expected
+| *
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-wrap: wrap; }
+#errors
+#expected
+| *
+| flex-wrap: wrap
+#reset
+
+#data
+* { flex-wrap: wrap-reverse; }
+#errors
+#expected
+| *
+| flex-wrap: wrap-reverse
+#reset
+
+#data
+* { flex-wrap: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-wrap: inherit !important; }
+#errors
+#expected
+| *
+| flex-wrap: inherit !important
+#reset
+
+#data
+* { flex-wrap: nowrap !important; }
+#errors
+#expected
+| *
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-wrap: wrap !important; }
+#errors
+#expected
+| *
+| flex-wrap: wrap !important
+#reset
+
+#data
+* { flex-wrap: wrap-reverse !important; }
+#errors
+#expected
+| *
+| flex-wrap: wrap-reverse !important
+#reset
+
+#data
+* { justify-content: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { justify-content: inherit; }
+#errors
+#expected
+| *
+| justify-content: inherit
+#reset
+
+#data
+* { justify-content: stretch; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { justify-content: flex-start; }
+#errors
+#expected
+| *
+| justify-content: flex-start
+#reset
+
+#data
+* { justify-content: flex-end; }
+#errors
+#expected
+| *
+| justify-content: flex-end
+#reset
+
+#data
+* { justify-content: center; }
+#errors
+#expected
+| *
+| justify-content: center
+#reset
+
+#data
+* { justify-content: space-between; }
+#errors
+#expected
+| *
+| justify-content: space-between
+#reset
+
+#data
+* { justify-content: space-around; }
+#errors
+#expected
+| *
+| justify-content: space-around
+#reset
+
+#data
+* { justify-content: space-evenly; }
+#errors
+#expected
+| *
+| justify-content: space-evenly
+#reset
+
+#data
+* { justify-content: inherit !important; }
+#errors
+#expected
+| *
+| justify-content: inherit !important
+#reset
+
+#data
+* { justify-content: stretch !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { justify-content: flex-start !important; }
+#errors
+#expected
+| *
+| justify-content: flex-start !important
+#reset
+
+#data
+* { justify-content: flex-end !important; }
+#errors
+#expected
+| *
+| justify-content: flex-end !important
+#reset
+
+#data
+* { justify-content: center !important; }
+#errors
+#expected
+| *
+| justify-content: center !important
+#reset
+
+#data
+* { justify-content: space-between !important; }
+#errors
+#expected
+| *
+| justify-content: space-between !important
+#reset
+
+#data
+* { justify-content: space-around !important; }
+#errors
+#expected
+| *
+| justify-content: space-around !important
+#reset
+
+#data
+* { justify-content: space-evenly !important; }
+#errors
+#expected
+| *
+| justify-content: space-evenly !important
+#reset
+
+#data
+* { order: invalid; }
+#errors
+#expected
+| *
+#reset
+#
+#data
+* { order: 0.5; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { order: 10px; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { order: inherit; }
+#errors
+#expected
+| *
+| order: inherit
+#reset
+
+#data
+* { order: 0; }
+#errors
+#expected
+| *
+| order: 0
+#reset
+
+#data
+* { order: -2; }
+#errors
+#expected
+| *
+| order: -2
+#reset
+
+#data
+* { order: 1; }
+#errors
+#expected
+| *
+| order: 1
+#reset
+
+#data
+* { order: 10000; }
+#errors
+#expected
+| *
+| order: 10000
+#reset
+
+#data
+* { order: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { order: 0.5 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { order: 10px !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { order: inherit !important; }
+#errors
+#expected
+| *
+| order: inherit !important
+#reset
+
+#data
+* { order: 0 !important; }
+#errors
+#expected
+| *
+| order: 0 !important
+#reset
+
+#data
+* { order: -2 !important; }
+#errors
+#expected
+| *
+| order: -2 !important
+#reset
+
+#data
+* { order: 1 !important; }
+#errors
+#expected
+| *
+| order: 1 !important
+#reset
+
+#data
+* { order: 10000 !important; }
+#errors
+#expected
+| *
+| order: 10000 !important
+#reset
+
+#data
+* { flex: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: -1; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: 2 2 2px 2; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: inherit; }
+#errors
+#expected
+| *
+| flex-grow: inherit
+| flex-shrink: inherit
+| flex-basis: inherit
+#reset
+
+#data
+* { flex: 0; }
+#errors
+#expected
+| *
+| flex-grow: 0
+| flex-shrink: 1
+| flex-basis: 0px
+#reset
+
+#data
+* { flex: 2; }
+#errors
+#expected
+| *
+| flex-grow: 2
+| flex-shrink: 1
+| flex-basis: 0px
+#reset
+
+#data
+* { flex: 3em; }
+#errors
+#expected
+| *
+| flex-grow: 0
+| flex-shrink: 1
+| flex-basis: 3em
+#reset
+
+#data
+* { flex: 3 4; }
+#errors
+#expected
+| *
+| flex-grow: 3
+| flex-shrink: 4
+| flex-basis: 0px
+#reset
+
+#data
+* { flex: 2.5 3.75; }
+#errors
+#expected
+| *
+| flex-grow: 2.500
+| flex-shrink: 3.750
+| flex-basis: 0px
+#reset
+
+#data
+* { flex: 10 20 30px; }
+#errors
+#expected
+| *
+| flex-grow: 10
+| flex-shrink: 20
+| flex-basis: 30px
+#reset
+
+#data
+* { flex: none; }
+#errors
+#expected
+| *
+| flex-grow: 0
+| flex-shrink: 0
+| flex-basis: auto
+#reset
+
+#data
+* { flex: auto; }
+#errors
+#expected
+| *
+| flex-grow: 1
+| flex-shrink: 1
+| flex-basis: auto
+#reset
+
+#data
+* { flex: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: -1 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: 2 2 2px 2 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex: inherit !important; }
+#errors
+#expected
+| *
+| flex-grow: inherit !important
+| flex-shrink: inherit !important
+| flex-basis: inherit !important
+#reset
+
+#data
+* { flex: 0 !important; }
+#errors
+#expected
+| *
+| flex-grow: 0 !important
+| flex-shrink: 1 !important
+| flex-basis: 0px !important
+#reset
+
+#data
+* { flex: 2 !important; }
+#errors
+#expected
+| *
+| flex-grow: 2 !important
+| flex-shrink: 1 !important
+| flex-basis: 0px !important
+#reset
+
+#data
+* { flex: 3em !important; }
+#errors
+#expected
+| *
+| flex-grow: 0 !important
+| flex-shrink: 1 !important
+| flex-basis: 3em !important
+#reset
+
+#data
+* { flex: 3 4 !important; }
+#errors
+#expected
+| *
+| flex-grow: 3 !important
+| flex-shrink: 4 !important
+| flex-basis: 0px !important
+#reset
+
+#data
+* { flex: 2.5 3.75 !important; }
+#errors
+#expected
+| *
+| flex-grow: 2.500 !important
+| flex-shrink: 3.750 !important
+| flex-basis: 0px !important
+#reset
+
+#data
+* { flex: 10 20 30px !important; }
+#errors
+#expected
+| *
+| flex-grow: 10 !important
+| flex-shrink: 20 !important
+| flex-basis: 30px !important
+#reset
+
+#data
+* { flex: none !important; }
+#errors
+#expected
+| *
+| flex-grow: 0 !important
+| flex-shrink: 0 !important
+| flex-basis: auto !important
+#reset
+
+#data
+* { flex: auto !important; }
+#errors
+#expected
+| *
+| flex-grow: 1 !important
+| flex-shrink: 1 !important
+| flex-basis: auto !important
+#reset
+
+#data
+* { flex-flow: invalid; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: 1; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: wrap 0; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: inherit; }
+#errors
+#expected
+| *
+| flex-direction: inherit
+| flex-wrap: inherit
+#reset
+
+#data
+* { flex-flow: row; }
+#errors
+#expected
+| *
+| flex-direction: row
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: column; }
+#errors
+#expected
+| *
+| flex-direction: column
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: row-reverse; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: column-reverse; }
+#errors
+#expected
+| *
+| flex-direction: column-reverse
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: nowrap; }
+#errors
+#expected
+| *
+| flex-direction: row
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: wrap; }
+#errors
+#expected
+| *
+| flex-direction: row
+| flex-wrap: wrap
+#reset
+
+#data
+* { flex-flow: wrap-reverse; }
+#errors
+#expected
+| *
+| flex-direction: row
+| flex-wrap: wrap-reverse
+#reset
+
+#data
+* { flex-flow: column wrap; }
+#errors
+#expected
+| *
+| flex-direction: column
+| flex-wrap: wrap
+#reset
+
+#data
+* { flex-flow: row-reverse wrap-reverse; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse
+| flex-wrap: wrap-reverse
+#reset
+
+#data
+* { flex-flow: row nowrap; }
+#errors
+#expected
+| *
+| flex-direction: row
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: column nowrap; }
+#errors
+#expected
+| *
+| flex-direction: column
+| flex-wrap: nowrap
+#reset
+
+#data
+* { flex-flow: invalid !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: 1 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: wrap 0 !important; }
+#errors
+#expected
+| *
+#reset
+
+#data
+* { flex-flow: inherit !important; }
+#errors
+#expected
+| *
+| flex-direction: inherit !important
+| flex-wrap: inherit !important
+#reset
+
+#data
+* { flex-flow: row !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: column !important; }
+#errors
+#expected
+| *
+| flex-direction: column !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: row-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: column-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: column-reverse !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: nowrap !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: wrap !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+| flex-wrap: wrap !important
+#reset
+
+#data
+* { flex-flow: wrap-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+| flex-wrap: wrap-reverse !important
+#reset
+
+#data
+* { flex-flow: column wrap !important; }
+#errors
+#expected
+| *
+| flex-direction: column !important
+| flex-wrap: wrap !important
+#reset
+
+#data
+* { flex-flow: row-reverse wrap-reverse !important; }
+#errors
+#expected
+| *
+| flex-direction: row-reverse !important
+| flex-wrap: wrap-reverse !important
+#reset
+
+#data
+* { flex-flow: row nowrap !important; }
+#errors
+#expected
+| *
+| flex-direction: row !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { flex-flow: column nowrap !important; }
+#errors
+#expected
+| *
+| flex-direction: column !important
+| flex-wrap: nowrap !important
+#reset
+
+#data
+* { display: flex; }
+#errors
+#expected
+| *
+| display: flex
+#reset
+
+#data
+* { display: inline-flex; }
+#errors
+#expected
+| *
+| display: inline-flex
+#reset
+
+#data
+* { display: flex !important; }
+#errors
+#expected
+| *
+| display: flex !important
+#reset
+
+#data
+* { display: inline-flex !important; }
+#errors
+#expected
+| *
+| display: inline-flex !important
+#reset
+
+#data
+* { min-width: auto; min-height: auto; }
+#errors
+#expected
+| *
+| min-width: auto
+| min-height: auto
+#reset
+
+#data
+* { min-width: auto !important; min-height: auto !important; }
+#errors
+#expected
+| *
+| min-width: auto !important
+| min-height: auto !important
+#reset
diff --git a/test/dump.h b/test/dump.h
index 0159b19..64cad32 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -479,6 +479,16 @@ static const char *opcode_names[] = {
"writing-mode",
"overflow-y",
"box-sizing",
+ "align-content",
+ "align-items",
+ "align-self",
+ "flex-basis",
+ "flex-direction",
+ "flex-grow",
+ "flex-shrink",
+ "flex-wrap",
+ "justify-content",
+ "order",
};
static void dump_css_fixed(css_fixed f, char **ptr)
@@ -752,6 +762,72 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
value = getValue(opv);
switch (op) {
+ case CSS_PROP_ALIGN_CONTENT:
+ switch (value) {
+ case ALIGN_CONTENT_STRETCH:
+ *ptr += sprintf(*ptr, "stretch");
+ break;
+ case ALIGN_CONTENT_FLEX_START:
+ *ptr += sprintf(*ptr, "flex-start");
+ break;
+ case ALIGN_CONTENT_FLEX_END:
+ *ptr += sprintf(*ptr, "flex-end");
+ break;
+ case ALIGN_CONTENT_CENTER:
+ *ptr += sprintf(*ptr, "center");
+ break;
+ case ALIGN_CONTENT_SPACE_BETWEEN:
+ *ptr += sprintf(*ptr, "space-between");
+ break;
+ case ALIGN_CONTENT_SPACE_AROUND:
+ *ptr += sprintf(*ptr, "space-around");
+ break;
+ case ALIGN_CONTENT_SPACE_EVENLY:
+ *ptr += sprintf(*ptr, "space-evenly");
+ break;
+ }
+ break;
+ case CSS_PROP_ALIGN_ITEMS:
+ switch (value) {
+ case ALIGN_ITEMS_STRETCH:
+ *ptr += sprintf(*ptr, "stretch");
+ break;
+ case ALIGN_ITEMS_FLEX_START:
+ *ptr += sprintf(*ptr, "flex-start");
+ break;
+ case ALIGN_ITEMS_FLEX_END:
+ *ptr += sprintf(*ptr, "flex-end");
+ break;
+ case ALIGN_ITEMS_CENTER:
+ *ptr += sprintf(*ptr, "center");
+ break;
+ case ALIGN_ITEMS_BASELINE:
+ *ptr += sprintf(*ptr, "baseline");
+ break;
+ }
+ break;
+ case CSS_PROP_ALIGN_SELF:
+ switch (value) {
+ case ALIGN_SELF_STRETCH:
+ *ptr += sprintf(*ptr, "stretch");
+ break;
+ case ALIGN_SELF_FLEX_START:
+ *ptr += sprintf(*ptr, "flex-start");
+ break;
+ case ALIGN_SELF_FLEX_END:
+ *ptr += sprintf(*ptr, "flex-end");
+ break;
+ case ALIGN_SELF_CENTER:
+ *ptr += sprintf(*ptr, "center");
+ break;
+ case ALIGN_SELF_BASELINE:
+ *ptr += sprintf(*ptr, "baseline");
+ break;
+ case ALIGN_SELF_AUTO:
+ *ptr += sprintf(*ptr, "auto");
+ break;
+ }
+ break;
case CSS_PROP_AZIMUTH:
switch (value & ~AZIMUTH_BEHIND) {
case AZIMUTH_ANGLE:
@@ -1658,6 +1734,12 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
case DISPLAY_NONE:
*ptr += sprintf(*ptr, "none");
break;
+ case DISPLAY_FLEX:
+ *ptr += sprintf(*ptr, "flex");
+ break;
+ case DISPLAY_INLINE_FLEX:
+ *ptr += sprintf(*ptr, "inline-flex");
+ break;
}
break;
case CSS_PROP_ELEVATION:
@@ -1699,6 +1781,77 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_FLEX_BASIS:
+ switch (value) {
+ case FLEX_BASIS_AUTO:
+ *ptr += sprintf(*ptr, "auto");
+ break;
+ case FLEX_BASIS_CONTENT:
+ *ptr += sprintf(*ptr, "content");
+ break;
+ case FLEX_BASIS_SET:
+ {
+ uint32_t unit;
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ unit = *((uint32_t *) bytecode);
+ ADVANCE(sizeof(unit));
+ dump_unit(val, unit, ptr);
+ }
+ break;
+ }
+ break;
+ case CSS_PROP_FLEX_DIRECTION:
+ switch (value) {
+ case FLEX_DIRECTION_ROW:
+ *ptr += sprintf(*ptr, "row");
+ break;
+ case FLEX_DIRECTION_COLUMN:
+ *ptr += sprintf(*ptr, "column");
+ break;
+ case FLEX_DIRECTION_ROW_REVERSE:
+ *ptr += sprintf(*ptr, "row-reverse");
+ break;
+ case FLEX_DIRECTION_COLUMN_REVERSE:
+ *ptr += sprintf(*ptr, "column-reverse");
+ break;
+ }
+ break;
+ case CSS_PROP_FLEX_GROW:
+ switch (value) {
+ case FLEX_GROW_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
+ case CSS_PROP_FLEX_SHRINK:
+ switch (value) {
+ case FLEX_SHRINK_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
+ case CSS_PROP_FLEX_WRAP:
+ switch (value) {
+ case FLEX_WRAP_NOWRAP:
+ *ptr += sprintf(*ptr, "nowrap");
+ break;
+ case FLEX_WRAP_WRAP:
+ *ptr += sprintf(*ptr, "wrap");
+ break;
+ case FLEX_WRAP_WRAP_REVERSE:
+ *ptr += sprintf(*ptr, "wrap-reverse");
+ break;
+ }
+ break;
case CSS_PROP_FLOAT:
switch (value) {
case FLOAT_LEFT:
@@ -1858,6 +2011,29 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_JUSTIFY_CONTENT:
+ switch (value) {
+ case JUSTIFY_CONTENT_FLEX_START:
+ *ptr += sprintf(*ptr, "flex-start");
+ break;
+ case JUSTIFY_CONTENT_FLEX_END:
+ *ptr += sprintf(*ptr, "flex-end");
+ break;
+ case JUSTIFY_CONTENT_CENTER:
+ *ptr += sprintf(*ptr, "center");
+ break;
+ case JUSTIFY_CONTENT_SPACE_BETWEEN:
+ *ptr += sprintf(*ptr, "space-between");
+ break;
+ case JUSTIFY_CONTENT_SPACE_AROUND:
+ *ptr += sprintf(*ptr, "space-around");
+ break;
+ case JUSTIFY_CONTENT_SPACE_EVENLY:
+ *ptr += sprintf(*ptr, "space-evenly");
+ break;
+ }
+ break;
+
case CSS_PROP_LETTER_SPACING:
case CSS_PROP_WORD_SPACING:
assert(LETTER_SPACING_SET ==
@@ -1991,6 +2167,31 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_MIN_HEIGHT:
+ case CSS_PROP_MIN_WIDTH:
+ assert(MIN_HEIGHT_SET ==
+ (enum op_min_height)
+ MIN_WIDTH_SET);
+ assert(MIN_HEIGHT_AUTO ==
+ (enum op_min_height)
+ MIN_WIDTH_AUTO);
+
+ switch (value) {
+ case MIN_HEIGHT_SET:
+ {
+ uint32_t unit;
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ unit = *((uint32_t *) bytecode);
+ ADVANCE(sizeof(unit));
+ dump_unit(val, unit, ptr);
+ }
+ break;
+ case MIN_HEIGHT_AUTO:
+ *ptr += sprintf(*ptr, "auto");
+ break;
+ }
+ break;
case CSS_PROP_OPACITY:
switch (value) {
case OPACITY_SET:
@@ -2002,33 +2203,36 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_ORDER:
+ switch (value) {
+ case ORDER_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
case CSS_PROP_PADDING_TOP:
case CSS_PROP_PADDING_RIGHT:
case CSS_PROP_PADDING_BOTTOM:
case CSS_PROP_PADDING_LEFT:
- case CSS_PROP_MIN_HEIGHT:
- case CSS_PROP_MIN_WIDTH:
case CSS_PROP_PAUSE_AFTER:
case CSS_PROP_PAUSE_BEFORE:
case CSS_PROP_TEXT_INDENT:
- assert(MIN_HEIGHT_SET ==
- (enum op_min_height)
- MIN_WIDTH_SET);
- assert(MIN_HEIGHT_SET ==
- (enum op_min_height)
+ assert(TEXT_INDENT_SET ==
+ (enum op_text_indent)
PADDING_SET);
- assert(MIN_HEIGHT_SET ==
- (enum op_min_height)
+ assert(TEXT_INDENT_SET ==
+ (enum op_text_indent)
PAUSE_AFTER_SET);
- assert(MIN_HEIGHT_SET ==
- (enum op_min_height)
+ assert(TEXT_INDENT_SET ==
+ (enum op_text_indent)
PAUSE_BEFORE_SET);
- assert(MIN_HEIGHT_SET ==
- (enum op_min_height)
- TEXT_INDENT_SET);
switch (value) {
- case MIN_HEIGHT_SET:
+ case TEXT_INDENT_SET:
{
uint32_t unit;
css_fixed val = *((css_fixed *) bytecode);
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=1bada65849e099e9e7cc...
commit 1bada65849e099e9e7cc579d53cc5a364869c28b
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
Selection: Logic for the flexbox properties.
diff --git a/src/parse/properties/flex_flow.c b/src/parse/properties/flex_flow.c
index 40a42d9..6a83e15 100644
--- a/src/parse/properties/flex_flow.c
+++ b/src/parse/properties/flex_flow.c
@@ -1,4 +1,4 @@
-*
+/*
* This file is part of LibCSS.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile
index 288eda9..6c6cf84 100644
--- a/src/select/properties/Makefile
+++ b/src/select/properties/Makefile
@@ -1,5 +1,8 @@
# Sources
DIR_SOURCES := helpers.c \
+align_content.c \
+align_items.c \
+align_self.c \
azimuth.c \
background_attachment.c \
background_color.c \
@@ -47,6 +50,11 @@ direction.c \
display.c \
elevation.c \
empty_cells.c \
+flex_basis.c \
+flex_direction.c \
+flex_grow.c \
+flex_shrink.c \
+flex_wrap.c \
float.c \
font_family.c \
font_size.c \
@@ -54,6 +62,7 @@ font_style.c \
font_variant.c \
font_weight.c \
height.c \
+justify_content.c \
left.c \
letter_spacing.c \
line_height.c \
@@ -69,6 +78,7 @@ max_width.c \
min_height.c \
min_width.c \
opacity.c \
+order.c \
orphans.c \
outline_color.c \
outline_style.c \
diff --git a/src/select/properties/align_content.c b/src/select/properties/align_content.c
new file mode 100644
index 0000000..f43cd8e
--- /dev/null
+++ b/src/select/properties/align_content.c
@@ -0,0 +1,81 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_align_content(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_ALIGN_CONTENT_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case ALIGN_CONTENT_STRETCH:
+ value = CSS_ALIGN_CONTENT_STRETCH;
+ break;
+ case ALIGN_CONTENT_FLEX_START:
+ value = CSS_ALIGN_CONTENT_FLEX_START;
+ break;
+ case ALIGN_CONTENT_FLEX_END:
+ value = CSS_ALIGN_CONTENT_FLEX_END;
+ break;
+ case ALIGN_CONTENT_CENTER:
+ value = CSS_ALIGN_CONTENT_CENTER;
+ break;
+ case ALIGN_CONTENT_SPACE_BETWEEN:
+ value = CSS_ALIGN_CONTENT_SPACE_BETWEEN;
+ break;
+ case ALIGN_CONTENT_SPACE_AROUND:
+ value = CSS_ALIGN_CONTENT_SPACE_AROUND;
+ break;
+ case ALIGN_CONTENT_SPACE_EVENLY:
+ value = CSS_ALIGN_CONTENT_SPACE_EVENLY;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_align_content(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_align_content_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_align_content(style, hint->status);
+}
+
+css_error css__initial_align_content(css_select_state *state)
+{
+ return set_align_content(state->computed, CSS_ALIGN_CONTENT_STRETCH);
+}
+
+css_error css__compose_align_content(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_align_content(child);
+
+ if (type == CSS_ALIGN_CONTENT_INHERIT) {
+ type = get_align_content(parent);
+ }
+
+ return set_align_content(result, type);
+}
+
diff --git a/src/select/properties/align_items.c b/src/select/properties/align_items.c
new file mode 100644
index 0000000..ad69c81
--- /dev/null
+++ b/src/select/properties/align_items.c
@@ -0,0 +1,75 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_align_items(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_ALIGN_ITEMS_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case ALIGN_ITEMS_STRETCH:
+ value = CSS_ALIGN_ITEMS_STRETCH;
+ break;
+ case ALIGN_ITEMS_FLEX_START:
+ value = CSS_ALIGN_ITEMS_FLEX_START;
+ break;
+ case ALIGN_ITEMS_FLEX_END:
+ value = CSS_ALIGN_ITEMS_FLEX_END;
+ break;
+ case ALIGN_ITEMS_CENTER:
+ value = CSS_ALIGN_ITEMS_CENTER;
+ break;
+ case ALIGN_ITEMS_BASELINE:
+ value = CSS_ALIGN_ITEMS_BASELINE;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_align_items(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_align_items_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_align_items(style, hint->status);
+}
+
+css_error css__initial_align_items(css_select_state *state)
+{
+ return set_align_items(state->computed, CSS_ALIGN_ITEMS_STRETCH);
+}
+
+css_error css__compose_align_items(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_align_items(child);
+
+ if (type == CSS_ALIGN_ITEMS_INHERIT) {
+ type = get_align_items(parent);
+ }
+
+ return set_align_items(result, type);
+}
+
diff --git a/src/select/properties/align_self.c b/src/select/properties/align_self.c
new file mode 100644
index 0000000..e8e469e
--- /dev/null
+++ b/src/select/properties/align_self.c
@@ -0,0 +1,78 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_align_self(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_ALIGN_SELF_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case ALIGN_SELF_STRETCH:
+ value = CSS_ALIGN_SELF_STRETCH;
+ break;
+ case ALIGN_SELF_FLEX_START:
+ value = CSS_ALIGN_SELF_FLEX_START;
+ break;
+ case ALIGN_SELF_FLEX_END:
+ value = CSS_ALIGN_SELF_FLEX_END;
+ break;
+ case ALIGN_SELF_CENTER:
+ value = CSS_ALIGN_SELF_CENTER;
+ break;
+ case ALIGN_SELF_BASELINE:
+ value = CSS_ALIGN_SELF_BASELINE;
+ break;
+ case ALIGN_SELF_AUTO:
+ value = CSS_ALIGN_SELF_AUTO;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_align_self(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_align_self_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_align_self(style, hint->status);
+}
+
+css_error css__initial_align_self(css_select_state *state)
+{
+ return set_align_self(state->computed, CSS_ALIGN_SELF_AUTO);
+}
+
+css_error css__compose_align_self(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_align_self(child);
+
+ if (type == CSS_ALIGN_SELF_INHERIT) {
+ type = get_align_self(parent);
+ }
+
+ return set_align_self(result, type);
+}
+
diff --git a/src/select/properties/display.c b/src/select/properties/display.c
index 40c2e3e..510d24a 100644
--- a/src/select/properties/display.c
+++ b/src/select/properties/display.c
@@ -71,6 +71,12 @@ css_error css__cascade_display(uint32_t opv, css_style *style,
case DISPLAY_NONE:
value = CSS_DISPLAY_NONE;
break;
+ case DISPLAY_FLEX:
+ value = CSS_DISPLAY_FLEX;
+ break;
+ case DISPLAY_INLINE_FLEX:
+ value = CSS_DISPLAY_INLINE_FLEX;
+ break;
}
}
diff --git a/src/select/properties/flex_basis.c b/src/select/properties/flex_basis.c
new file mode 100644
index 0000000..1a92a6b
--- /dev/null
+++ b/src/select/properties/flex_basis.c
@@ -0,0 +1,79 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_flex_basis(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FLEX_BASIS_INHERIT;
+ css_fixed length = 0;
+ uint32_t unit = UNIT_PX;
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case FLEX_BASIS_AUTO:
+ value = CSS_FLEX_BASIS_AUTO;
+ break;
+ case FLEX_BASIS_CONTENT:
+ value = CSS_FLEX_BASIS_CONTENT;
+ break;
+ case FLEX_BASIS_SET:
+ value = CSS_FLEX_BASIS_SET;
+ length = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(length));
+ unit = *((uint32_t *) style->bytecode);
+ advance_bytecode(style, sizeof(unit));
+ break;
+ }
+ }
+
+ unit = css__to_css_unit(unit);
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_flex_basis(state->computed, value, length, unit);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_flex_basis_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_flex_basis(style, hint->status,
+ hint->data.length.value, hint->data.length.unit);
+}
+
+css_error css__initial_flex_basis(css_select_state *state)
+{
+ return set_flex_basis(state->computed, CSS_FLEX_BASIS_AUTO, 0,
+ CSS_UNIT_PX);
+}
+
+css_error css__compose_flex_basis(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed length = 0;
+ css_unit unit = CSS_UNIT_PX;
+ uint8_t type = get_flex_basis(child, &length, &unit);
+
+ if (type == CSS_FLEX_BASIS_INHERIT) {
+ type = get_flex_basis(parent, &length, &unit);
+ }
+
+ return set_flex_basis(result, type, length, unit);
+}
+
diff --git a/src/select/properties/flex_direction.c b/src/select/properties/flex_direction.c
new file mode 100644
index 0000000..79703be
--- /dev/null
+++ b/src/select/properties/flex_direction.c
@@ -0,0 +1,72 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_flex_direction(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FLEX_DIRECTION_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case FLEX_DIRECTION_ROW:
+ value = CSS_FLEX_DIRECTION_ROW;
+ break;
+ case FLEX_DIRECTION_ROW_REVERSE:
+ value = CSS_FLEX_DIRECTION_ROW_REVERSE;
+ break;
+ case FLEX_DIRECTION_COLUMN:
+ value = CSS_FLEX_DIRECTION_COLUMN;
+ break;
+ case FLEX_DIRECTION_COLUMN_REVERSE:
+ value = CSS_FLEX_DIRECTION_COLUMN_REVERSE;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_flex_direction(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_flex_direction_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_flex_direction(style, hint->status);
+}
+
+css_error css__initial_flex_direction(css_select_state *state)
+{
+ return set_flex_direction(state->computed, CSS_FLEX_DIRECTION_ROW);
+}
+
+css_error css__compose_flex_direction(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_flex_direction(child);
+
+ if (type == CSS_FLEX_DIRECTION_INHERIT) {
+ type = get_flex_direction(parent);
+ }
+
+ return set_flex_direction(result, type);
+}
+
diff --git a/src/select/properties/flex_grow.c b/src/select/properties/flex_grow.c
new file mode 100644
index 0000000..7f37cfe
--- /dev/null
+++ b/src/select/properties/flex_grow.c
@@ -0,0 +1,62 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_flex_grow(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FLEX_GROW_INHERIT;
+ css_fixed flex_grow = 0;
+
+ if (isInherit(opv) == false) {
+ value = CSS_FLEX_GROW_SET;
+
+ flex_grow = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(flex_grow));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_flex_grow(state->computed, value, flex_grow);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_flex_grow_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_flex_grow(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_flex_grow(css_select_state *state)
+{
+ return set_flex_grow(state->computed, CSS_FLEX_GROW_SET, INTTOFIX(0));
+}
+
+css_error css__compose_flex_grow(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed flex_grow = 0;
+ uint8_t type = get_flex_grow(child, &flex_grow);
+
+ if (type == CSS_FLEX_GROW_INHERIT) {
+ type = get_flex_grow(parent, &flex_grow);
+ }
+
+ return set_flex_grow(result, type, flex_grow);
+}
+
diff --git a/src/select/properties/flex_shrink.c b/src/select/properties/flex_shrink.c
new file mode 100644
index 0000000..d1acd2a
--- /dev/null
+++ b/src/select/properties/flex_shrink.c
@@ -0,0 +1,62 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_flex_shrink(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FLEX_SHRINK_INHERIT;
+ css_fixed flex_shrink = 0;
+
+ if (isInherit(opv) == false) {
+ value = CSS_FLEX_SHRINK_SET;
+
+ flex_shrink = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(flex_shrink));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_flex_shrink(state->computed, value, flex_shrink);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_flex_shrink_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_flex_shrink(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_flex_shrink(css_select_state *state)
+{
+ return set_flex_shrink(state->computed, CSS_FLEX_SHRINK_SET, INTTOFIX(1));
+}
+
+css_error css__compose_flex_shrink(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed flex_shrink = 0;
+ uint8_t type = get_flex_shrink(child, &flex_shrink);
+
+ if (type == CSS_FLEX_SHRINK_INHERIT) {
+ type = get_flex_shrink(parent, &flex_shrink);
+ }
+
+ return set_flex_shrink(result, type, flex_shrink);
+}
+
diff --git a/src/select/properties/flex_wrap.c b/src/select/properties/flex_wrap.c
new file mode 100644
index 0000000..688a9b6
--- /dev/null
+++ b/src/select/properties/flex_wrap.c
@@ -0,0 +1,69 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_flex_wrap(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FLEX_WRAP_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case FLEX_WRAP_NOWRAP:
+ value = CSS_FLEX_WRAP_NOWRAP;
+ break;
+ case FLEX_WRAP_WRAP:
+ value = CSS_FLEX_WRAP_WRAP;
+ break;
+ case FLEX_WRAP_WRAP_REVERSE:
+ value = CSS_FLEX_WRAP_WRAP_REVERSE;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_flex_wrap(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_flex_wrap_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_flex_wrap(style, hint->status);
+}
+
+css_error css__initial_flex_wrap(css_select_state *state)
+{
+ return set_flex_wrap(state->computed, CSS_FLEX_WRAP_NOWRAP);
+}
+
+css_error css__compose_flex_wrap(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_flex_wrap(child);
+
+ if (type == CSS_FLEX_WRAP_INHERIT) {
+ type = get_flex_wrap(parent);
+ }
+
+ return set_flex_wrap(result, type);
+}
+
diff --git a/src/select/properties/justify_content.c b/src/select/properties/justify_content.c
new file mode 100644
index 0000000..2e17ca5
--- /dev/null
+++ b/src/select/properties/justify_content.c
@@ -0,0 +1,79 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_justify_content(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_JUSTIFY_CONTENT_INHERIT;
+
+ UNUSED(style);
+
+ if (isInherit(opv) == false) {
+ switch (getValue(opv)) {
+ case JUSTIFY_CONTENT_FLEX_START:
+ value = CSS_JUSTIFY_CONTENT_FLEX_START;
+ break;
+ case JUSTIFY_CONTENT_FLEX_END:
+ value = CSS_JUSTIFY_CONTENT_FLEX_END;
+ break;
+ case JUSTIFY_CONTENT_CENTER:
+ value = CSS_JUSTIFY_CONTENT_CENTER;
+ break;
+ case JUSTIFY_CONTENT_SPACE_BETWEEN:
+ value = CSS_JUSTIFY_CONTENT_SPACE_BETWEEN;
+ break;
+ case JUSTIFY_CONTENT_SPACE_AROUND:
+ value = CSS_JUSTIFY_CONTENT_SPACE_AROUND;
+ break;
+ case JUSTIFY_CONTENT_SPACE_EVENLY:
+ value = CSS_JUSTIFY_CONTENT_SPACE_EVENLY;
+ break;
+ }
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_justify_content(state->computed, value);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_justify_content_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_justify_content(style, hint->status);
+}
+
+css_error css__initial_justify_content(css_select_state *state)
+{
+ return set_justify_content(state->computed,
+ CSS_JUSTIFY_CONTENT_FLEX_START);
+}
+
+css_error css__compose_justify_content(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ uint8_t type = get_justify_content(child);
+
+ if (type == CSS_JUSTIFY_CONTENT_INHERIT) {
+ type = get_justify_content(parent);
+ }
+
+ return set_justify_content(result, type);
+}
+
diff --git a/src/select/properties/min_height.c b/src/select/properties/min_height.c
index 687d8a1..a5389ce 100644
--- a/src/select/properties/min_height.c
+++ b/src/select/properties/min_height.c
@@ -17,7 +17,7 @@
css_error css__cascade_min_height(uint32_t opv, css_style *style,
css_select_state *state)
{
- return css__cascade_length(opv, style, state, set_min_height);
+ return css__cascade_length_auto(opv, style, state, set_min_height);
}
css_error css__set_min_height_from_hint(const css_hint *hint,
@@ -29,7 +29,7 @@ css_error css__set_min_height_from_hint(const css_hint *hint,
css_error css__initial_min_height(css_select_state *state)
{
- return set_min_height(state->computed, CSS_MIN_HEIGHT_SET,
+ return set_min_height(state->computed, CSS_MIN_HEIGHT_AUTO,
0, CSS_UNIT_PX);
}
diff --git a/src/select/properties/min_width.c b/src/select/properties/min_width.c
index 5365588..8460e01 100644
--- a/src/select/properties/min_width.c
+++ b/src/select/properties/min_width.c
@@ -17,7 +17,7 @@
css_error css__cascade_min_width(uint32_t opv, css_style *style,
css_select_state *state)
{
- return css__cascade_length(opv, style, state, set_min_width);
+ return css__cascade_length_auto(opv, style, state, set_min_width);
}
css_error css__set_min_width_from_hint(const css_hint *hint,
@@ -29,7 +29,8 @@ css_error css__set_min_width_from_hint(const css_hint *hint,
css_error css__initial_min_width(css_select_state *state)
{
- return set_min_width(state->computed, CSS_MIN_WIDTH_SET, 0, CSS_UNIT_PX);
+ return set_min_width(state->computed, CSS_MIN_WIDTH_AUTO,
+ 0, CSS_UNIT_PX);
}
css_error css__compose_min_width(const css_computed_style *parent,
diff --git a/src/select/properties/order.c b/src/select/properties/order.c
new file mode 100644
index 0000000..0366537
--- /dev/null
+++ b/src/select/properties/order.c
@@ -0,0 +1,62 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_order(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_ORDER_INHERIT;
+ css_fixed order = 0;
+
+ if (isInherit(opv) == false) {
+ value = CSS_ORDER_SET;
+
+ order = FIXTOINT(*((css_fixed *) style->bytecode));
+ advance_bytecode(style, sizeof(order));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ isInherit(opv))) {
+ return set_order(state->computed, value, order);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_order_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_order(style, hint->status, hint->data.integer);
+}
+
+css_error css__initial_order(css_select_state *state)
+{
+ return set_order(state->computed, CSS_ORDER_SET, 0);
+}
+
+css_error css__compose_order(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ int32_t order = 0;
+ uint8_t type = get_order(child, &order);
+
+ if (type == CSS_ORDER_INHERIT) {
+ type = get_order(parent, &order);
+ }
+
+ return set_order(result, type, order);
+}
+
diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h
index a1ab49f..6eac397 100644
--- a/src/select/properties/properties.h
+++ b/src/select/properties/properties.h
@@ -21,6 +21,9 @@
css_error css__compose_##pname (const css_computed_style *parent, const css_computed_style *child, css_computed_style *result); \
uint32_t destroy_##pname (void *bytecode)
+PROPERTY_FUNCS(align_content);
+PROPERTY_FUNCS(align_items);
+PROPERTY_FUNCS(align_self);
PROPERTY_FUNCS(azimuth);
PROPERTY_FUNCS(background_attachment);
PROPERTY_FUNCS(background_color);
@@ -68,6 +71,11 @@ PROPERTY_FUNCS(direction);
PROPERTY_FUNCS(display);
PROPERTY_FUNCS(elevation);
PROPERTY_FUNCS(empty_cells);
+PROPERTY_FUNCS(flex_basis);
+PROPERTY_FUNCS(flex_direction);
+PROPERTY_FUNCS(flex_grow);
+PROPERTY_FUNCS(flex_shrink);
+PROPERTY_FUNCS(flex_wrap);
PROPERTY_FUNCS(float);
PROPERTY_FUNCS(font_family);
PROPERTY_FUNCS(font_size);
@@ -75,6 +83,7 @@ PROPERTY_FUNCS(font_style);
PROPERTY_FUNCS(font_variant);
PROPERTY_FUNCS(font_weight);
PROPERTY_FUNCS(height);
+PROPERTY_FUNCS(justify_content);
PROPERTY_FUNCS(left);
PROPERTY_FUNCS(letter_spacing);
PROPERTY_FUNCS(line_height);
@@ -90,6 +99,7 @@ PROPERTY_FUNCS(max_width);
PROPERTY_FUNCS(min_height);
PROPERTY_FUNCS(min_width);
PROPERTY_FUNCS(opacity);
+PROPERTY_FUNCS(order);
PROPERTY_FUNCS(orphans);
PROPERTY_FUNCS(outline_color);
PROPERTY_FUNCS(outline_style);
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=44a822f89696cf4be975...
commit 44a822f89696cf4be97531286b47a16a9e2f7f46
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
Selection: Add support for the flexbox properties.
diff --git a/include/libcss/computed.h b/include/libcss/computed.h
index e15d0b0..af40abf 100644
--- a/include/libcss/computed.h
+++ b/include/libcss/computed.h
@@ -439,6 +439,41 @@ uint8_t css_computed_widows(
const css_computed_style *style,
int32_t *widows);
+uint8_t css_computed_align_content(
+ const css_computed_style *style);
+
+uint8_t css_computed_align_items(
+ const css_computed_style *style);
+
+uint8_t css_computed_align_self(
+ const css_computed_style *style);
+
+uint8_t css_computed_flex_basis(
+ const css_computed_style *style,
+ css_fixed *length,
+ css_unit *unit);
+
+uint8_t css_computed_flex_direction(
+ const css_computed_style *style);
+
+uint8_t css_computed_flex_grow(
+ const css_computed_style *style,
+ css_fixed *number);
+
+uint8_t css_computed_flex_shrink(
+ const css_computed_style *style,
+ css_fixed *number);
+
+uint8_t css_computed_flex_wrap(
+ const css_computed_style *style);
+
+uint8_t css_computed_justify_content(
+ const css_computed_style *style);
+
+uint8_t css_computed_order(
+ const css_computed_style *style,
+ int32_t *order);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/select/computed.c b/src/select/computed.c
index 03e7c15..ebb2b29 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -749,13 +749,39 @@ uint8_t css_computed_font_style(const css_computed_style *style)
uint8_t css_computed_min_height(const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
- return get_min_height(style, length, unit);
+ uint8_t min_height = get_min_height(style, length, unit);
+
+ if (min_height == CSS_MIN_HEIGHT_AUTO) {
+ uint8_t display = get_display(style);
+
+ if (display != CSS_DISPLAY_FLEX &&
+ display != CSS_DISPLAY_INLINE_FLEX) {
+ min_height = CSS_MIN_HEIGHT_SET;
+ *length = 0;
+ *unit = CSS_UNIT_PX;
+ }
+ }
+
+ return min_height;
}
uint8_t css_computed_min_width(const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
- return get_min_width(style, length, unit);
+ uint8_t min_width = get_min_width(style, length, unit);
+
+ if (min_width == CSS_MIN_WIDTH_AUTO) {
+ uint8_t display = get_display(style);
+
+ if (display != CSS_DISPLAY_FLEX &&
+ display != CSS_DISPLAY_INLINE_FLEX) {
+ min_width = CSS_MIN_WIDTH_SET;
+ *length = 0;
+ *unit = CSS_UNIT_PX;
+ }
+ }
+
+ return min_width;
}
uint8_t css_computed_background_repeat(const css_computed_style *style)
@@ -927,6 +953,8 @@ uint8_t css_computed_display(const css_computed_style *style,
root /* 4. */) {
if (display == CSS_DISPLAY_INLINE_TABLE) {
return CSS_DISPLAY_TABLE;
+ } else if (display == CSS_DISPLAY_INLINE_FLEX) {
+ return CSS_DISPLAY_FLEX;
} else if (display == CSS_DISPLAY_INLINE ||
display == CSS_DISPLAY_RUN_IN ||
display == CSS_DISPLAY_TABLE_ROW_GROUP ||
@@ -1054,6 +1082,59 @@ uint8_t css_computed_widows(const css_computed_style *style,
return get_widows(style, widows);
}
+uint8_t css_computed_align_content(const css_computed_style *style)
+{
+ return get_align_content(style);
+}
+
+uint8_t css_computed_align_items(const css_computed_style *style)
+{
+ return get_align_items(style);
+}
+
+uint8_t css_computed_align_self(const css_computed_style *style)
+{
+ return get_align_self(style);
+}
+
+uint8_t css_computed_flex_basis(const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ return get_flex_basis(style, length, unit);
+}
+
+uint8_t css_computed_flex_direction(const css_computed_style *style)
+{
+ return get_flex_direction(style);
+}
+
+uint8_t css_computed_flex_grow(const css_computed_style *style,
+ css_fixed *number)
+{
+ return get_flex_grow(style, number);
+}
+
+uint8_t css_computed_flex_shrink(const css_computed_style *style,
+ css_fixed *number)
+{
+ return get_flex_shrink(style, number);
+}
+
+uint8_t css_computed_flex_wrap(const css_computed_style *style)
+{
+ return get_flex_wrap(style);
+}
+
+uint8_t css_computed_justify_content(const css_computed_style *style)
+{
+ return get_justify_content(style);
+}
+
+uint8_t css_computed_order(const css_computed_style *style,
+ int32_t *order)
+{
+ return get_order(style, order);
+}
/******************************************************************************
* Library internals *
@@ -1205,6 +1286,12 @@ css_error css__compute_absolute_values(const css_computed_style *parent,
if (error != CSS_OK)
return error;
+ /* Fix up flex-basis */
+ error = compute_absolute_length(style, &ex_size.data.length,
+ get_flex_basis, set_flex_basis);
+ if (error != CSS_OK)
+ return error;
+
/* Uncommon properties */
if (style->i.uncommon != NULL) {
/* Fix up border-spacing */
diff --git a/src/select/computed.h b/src/select/computed.h
index 9f2abdd..a8934b1 100644
--- a/src/select/computed.h
+++ b/src/select/computed.h
@@ -160,8 +160,14 @@ struct css_computed_style_i {
* visibility 2
* white_space 3
* box_sizing 2
+ * align_content 3
+ * align_items 3
+ * align_self 3
+ * flex_direction 3
+ * flex_wrap 2
+ * justify_content 3
* ---
- * 86 bits
+ * 103 bits
*
* Colours are 32bits of AARRGGBB
* Dimensions are encoded as a fixed point value + 4 bits of unit data
@@ -192,8 +198,8 @@ struct css_computed_style_i {
* margin_left 2 + 4 4
* max_height 2 + 4 4
* max_width 2 + 4 4
- * min_height 1 + 4 4
- * min_width 1 + 4 4
+ * min_height 2 + 4 4
+ * min_width 2 + 4 4
* padding_top 1 + 4 4
* padding_right 1 + 4 4
* padding_bottom 1 + 4 4
@@ -202,8 +208,12 @@ struct css_computed_style_i {
* vertical_align 4 + 4 4
* width 2 + 4 4
* z_index 2 4
+ * flex_basis 2 + 4 4
+ * flex_grow 1 4
+ * flex_shrink 1 4
+ * order 1 4
* --- ---
- * 181 bits 140 + 2sizeof(ptr) bytes
+ * 196 bits 156 + 2sizeof(ptr) bytes
*
* Encode font family as an array of string objects, terminated with a
* blank entry.
@@ -219,11 +229,11 @@ struct css_computed_style_i {
* 1 bit sizeof(ptr) bytes
*
* ___ ___
- * 269 bits 140 + 4sizeof(ptr) bytes
+ * 303 bits 156 + 4sizeof(ptr) bytes
*
- * 34 bytes 140 + 4sizeof(ptr) bytes
+ * 38 bytes 156 + 4sizeof(ptr) bytes
* ===================
- * 174 + 4sizeof(ptr) bytes
+ * 194 + 4sizeof(ptr) bytes
*
* Bit allocations:
*
@@ -247,8 +257,8 @@ struct css_computed_style_i {
* 17 mmmmmmee max-height | empty-cells
* 18 mmmmmmff max-width | float
* 19 wwwwwwff width | font-style
- * 20 mmmmmbbb min-height | background-repeat
- * 21 mmmmmccc min-width | clear
+ * 20 mmmmmmff min-height | flex-wrap
+ * 21 mmmmmmsg min-width | flex-shrink | flex_grow
* 22 tttttxxx padding-top | overflow-x
* 23 rrrrrppp padding-right | position
* 24 bbbbboss padding-bottom | opacity | box-sizing
@@ -262,9 +272,12 @@ struct css_computed_style_i {
* 32 ffffllll font-weight | list-style-type
* 33 oooottuu outline-style | table-layout | unicode-bidi
* 34 vvlltttt visibility | list-style-position | text-align
- * 35 yyy..... overflow-y | <unused>
+ * 35 yyybbbaa overflow-y | background-repeat | align-content1
+ * 36 bbbbbbaj flex-basis | align-content2 | justify_content1
+ * 37 fffcccjj flex-direction | clear | justify_content2
+ * 38 iiissso. align-items | align-self | order
*/
- uint8_t bits[35];
+ uint8_t bits[38];
uint8_t unused[1];
@@ -310,6 +323,14 @@ struct css_computed_style_i {
int32_t z_index;
+ css_fixed flex_basis;
+
+ css_fixed flex_grow;
+
+ css_fixed flex_shrink;
+
+ int32_t order;
+
css_computed_uncommon *uncommon;/**< Uncommon properties */
void *aural; /**< Aural properties */
};
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index 7af9000..3ab4c96 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -587,5 +587,55 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
PROPERTY_FUNCS(box_sizing),
0,
GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(align_content),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(align_items),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(align_self),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(flex_basis),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(flex_direction),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(flex_grow),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(flex_shrink),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(flex_wrap),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(justify_content),
+ 0,
+ GROUP_NORMAL
+ },
+ {
+ PROPERTY_FUNCS(order),
+ 0,
+ GROUP_NORMAL
}
};
diff --git a/src/select/propget.h b/src/select/propget.h
index 6719443..737dcd4 100644
--- a/src/select/propget.h
+++ b/src/select/propget.h
@@ -1268,7 +1268,7 @@ static inline uint8_t get_background_attachment(
#undef BACKGROUND_ATTACHMENT_SHIFT
#undef BACKGROUND_ATTACHMENT_INDEX
-#define BOX_SIZING_INDEX 34
+#define BOX_SIZING_INDEX 23
#define BOX_SIZING_SHIFT 0
#define BOX_SIZING_MASK 0x3
static inline uint8_t get_box_sizing(
@@ -1457,8 +1457,8 @@ static inline uint8_t get_font_style(
#undef FONT_STYLE_INDEX
#define MIN_HEIGHT_INDEX 19
-#define MIN_HEIGHT_SHIFT 3
-#define MIN_HEIGHT_MASK 0xf8
+#define MIN_HEIGHT_SHIFT 2
+#define MIN_HEIGHT_MASK 0xfc
static inline uint8_t get_min_height(
const css_computed_style *style,
css_fixed *length, css_unit *unit)
@@ -1467,21 +1467,21 @@ static inline uint8_t get_min_height(
bits &= MIN_HEIGHT_MASK;
bits >>= MIN_HEIGHT_SHIFT;
- /* 5bits: uuuut : units | type */
- if ((bits & 0x1) == CSS_MIN_HEIGHT_SET) {
+ /* 6bits: uuuutt : units | type */
+ if ((bits & 0x3) == CSS_MIN_HEIGHT_SET) {
*length = style->i.min_height;
- *unit = bits >> 1;
+ *unit = bits >> 2;
}
- return (bits & 0x1);
+ return (bits & 0x3);
}
#undef MIN_HEIGHT_MASK
#undef MIN_HEIGHT_SHIFT
#undef MIN_HEIGHT_INDEX
#define MIN_WIDTH_INDEX 20
-#define MIN_WIDTH_SHIFT 3
-#define MIN_WIDTH_MASK 0xf8
+#define MIN_WIDTH_SHIFT 2
+#define MIN_WIDTH_MASK 0xfc
static inline uint8_t get_min_width(
const css_computed_style *style,
css_fixed *length, css_unit *unit)
@@ -1490,21 +1490,21 @@ static inline uint8_t get_min_width(
bits &= MIN_WIDTH_MASK;
bits >>= MIN_WIDTH_SHIFT;
- /* 5bits: uuuut : units | type */
- if ((bits & 0x1) == CSS_MIN_WIDTH_SET) {
+ /* 6bits: uuuutt : units | type */
+ if ((bits & 0x3) == CSS_MIN_WIDTH_SET) {
*length = style->i.min_width;
- *unit = bits >> 1;
+ *unit = bits >> 2;
}
- return (bits & 0x1);
+ return (bits & 0x3);
}
#undef MIN_WIDTH_MASK
#undef MIN_WIDTH_SHIFT
#undef MIN_WIDTH_INDEX
-#define BACKGROUND_REPEAT_INDEX 19
-#define BACKGROUND_REPEAT_SHIFT 0
-#define BACKGROUND_REPEAT_MASK 0x7
+#define BACKGROUND_REPEAT_INDEX 34
+#define BACKGROUND_REPEAT_SHIFT 2
+#define BACKGROUND_REPEAT_MASK 0x1c
static inline uint8_t get_background_repeat(
const css_computed_style *style)
{
@@ -1519,9 +1519,9 @@ static inline uint8_t get_background_repeat(
#undef BACKGROUND_REPEAT_SHIFT
#undef BACKGROUND_REPEAT_INDEX
-#define CLEAR_INDEX 20
-#define CLEAR_SHIFT 0
-#define CLEAR_MASK 0x7
+#define CLEAR_INDEX 36
+#define CLEAR_SHIFT 2
+#define CLEAR_MASK 0x1c
static inline uint8_t get_clear(
const css_computed_style *style)
{
@@ -2189,4 +2189,220 @@ static inline uint8_t get_widows(
#undef WIDOWS_SHIFT
#undef WIDOWS_INDEX
+#define ALIGN_CONTENT_INDEX_A 34
+#define ALIGN_CONTENT_SHIFT_A 0
+#define ALIGN_CONTENT_MASK_A 0x3
+#define ALIGN_CONTENT_INDEX_B 35
+#define ALIGN_CONTENT_SHIFT_B 1
+#define ALIGN_CONTENT_MASK_B 0x2
+static inline uint8_t get_align_content(
+ const css_computed_style *style)
+{
+ uint8_t bits_a = style->i.bits[ALIGN_CONTENT_INDEX_A];
+ bits_a &= ALIGN_CONTENT_MASK_A;
+ bits_a >>= ALIGN_CONTENT_SHIFT_A;
+
+ uint8_t bits_b = style->i.bits[ALIGN_CONTENT_INDEX_B];
+ bits_b &= ALIGN_CONTENT_MASK_B;
+ bits_b >>= ALIGN_CONTENT_SHIFT_B;
+ /* Most significant bit out of three */
+ bits_b <<= 2;
+
+ uint8_t bits = bits_a | bits_b;
+
+ /* 3bits: type */
+ return bits;
+}
+#undef ALIGN_CONTENT_MASK_A
+#undef ALIGN_CONTENT_SHIFT_A
+#undef ALIGN_CONTENT_INDEX_A
+#undef ALIGN_CONTENT_MASK_B
+#undef ALIGN_CONTENT_SHIFT_B
+#undef ALIGN_CONTENT_INDEX_B
+
+#define FLEX_WRAP_INDEX 19
+#define FLEX_WRAP_SHIFT 0
+#define FLEX_WRAP_MASK 0x3
+static inline uint8_t get_flex_wrap(
+ const css_computed_style *style)
+{
+ uint8_t bits = style->i.bits[FLEX_WRAP_INDEX];
+ bits &= FLEX_WRAP_MASK;
+ bits >>= FLEX_WRAP_SHIFT;
+
+ /* 2bits: type */
+ return bits;
+}
+#undef FLEX_WRAP_MASK
+#undef FLEX_WRAP_SHIFT
+#undef FLEX_WRAP_INDEX
+
+#define FLEX_BASIS_INDEX 35
+#define FLEX_BASIS_SHIFT 2
+#define FLEX_BASIS_MASK 0xfc
+static inline uint8_t get_flex_basis(
+ const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ uint8_t bits = style->i.bits[FLEX_BASIS_INDEX];
+ bits &= FLEX_BASIS_MASK;
+ bits >>= FLEX_BASIS_SHIFT;
+
+ /* 6bits: uuuutt : units | type */
+ if ((bits & 0x3) == CSS_FLEX_BASIS_SET) {
+ *length = style->i.flex_basis;
+ *unit = bits >> 2;
+ }
+
+ return (bits & 0x3);
+}
+#undef FLEX_BASIS_MASK
+#undef FLEX_BASIS_SHIFT
+#undef FLEX_BASIS_INDEX
+
+#define FLEX_SHRINK_INDEX 20
+#define FLEX_SHRINK_SHIFT 1
+#define FLEX_SHRINK_MASK 0x2
+static inline uint8_t get_flex_shrink(
+ const css_computed_style *style, css_fixed *number)
+{
+ uint8_t bits = style->i.bits[FLEX_SHRINK_INDEX];
+ bits &= FLEX_SHRINK_MASK;
+ bits >>= FLEX_SHRINK_SHIFT;
+
+ /* 1bit: type */
+ if ((bits & 0x1) == CSS_FLEX_SHRINK_SET) {
+ *number = style->i.flex_shrink;
+ }
+
+ return (bits & 0x1);
+}
+#undef FLEX_SHRINK_MASK
+#undef FLEX_SHRINK_SHIFT
+#undef FLEX_SHRINK_INDEX
+
+#define FLEX_GROW_INDEX 20
+#define FLEX_GROW_SHIFT 0
+#define FLEX_GROW_MASK 0x1
+static inline uint8_t get_flex_grow(
+ const css_computed_style *style, css_fixed *number)
+{
+ uint8_t bits = style->i.bits[FLEX_GROW_INDEX];
+ bits &= FLEX_GROW_MASK;
+ bits >>= FLEX_GROW_SHIFT;
+
+ /* 1bit: type */
+ if ((bits & 0x1) == CSS_FLEX_GROW_SET) {
+ *number = style->i.flex_grow;
+ }
+
+ return (bits & 0x1);
+}
+#undef FLEX_GROW_MASK
+#undef FLEX_GROW_SHIFT
+#undef FLEX_GROW_INDEX
+
+#define FLEX_DIRECTION_INDEX 36
+#define FLEX_DIRECTION_SHIFT 5
+#define FLEX_DIRECTION_MASK 0xe0
+static inline uint8_t get_flex_direction(
+ const css_computed_style *style)
+{
+ uint8_t bits = style->i.bits[FLEX_DIRECTION_INDEX];
+ bits &= FLEX_DIRECTION_MASK;
+ bits >>= FLEX_DIRECTION_SHIFT;
+
+ /* 3bits: type */
+ return bits;
+}
+#undef FLEX_DIRECTION_MASK
+#undef FLEX_DIRECTION_SHIFT
+#undef FLEX_DIRECTION_INDEX
+
+#define JUSTIFY_CONTENT_INDEX_A 35
+#define JUSTIFY_CONTENT_SHIFT_A 0
+#define JUSTIFY_CONTENT_MASK_A 0x1
+#define JUSTIFY_CONTENT_INDEX_B 36
+#define JUSTIFY_CONTENT_SHIFT_B 0
+#define JUSTIFY_CONTENT_MASK_B 0x3
+static inline uint8_t get_justify_content(
+ const css_computed_style *style)
+{
+ uint8_t bits_a = style->i.bits[JUSTIFY_CONTENT_INDEX_A];
+ bits_a &= JUSTIFY_CONTENT_MASK_A;
+ bits_a >>= JUSTIFY_CONTENT_SHIFT_A;
+
+ uint8_t bits_b = style->i.bits[JUSTIFY_CONTENT_INDEX_B];
+ bits_b &= JUSTIFY_CONTENT_MASK_B;
+ bits_b >>= JUSTIFY_CONTENT_SHIFT_B;
+ /* Most significant two bits out of three */
+ bits_b <<= 1;
+
+ uint8_t bits = bits_a | bits_b;
+
+ /* 3bits: type */
+ return bits;
+}
+#undef JUSTIFY_CONTENT_MASK_A
+#undef JUSTIFY_CONTENT_SHIFT_A
+#undef JUSTIFY_CONTENT_INDEX_A
+#undef JUSTIFY_CONTENT_MASK_B
+#undef JUSTIFY_CONTENT_SHIFT_B
+#undef JUSTIFY_CONTENT_INDEX_B
+
+#define ORDER_INDEX 37
+#define ORDER_SHIFT 1
+#define ORDER_MASK 0x2
+static inline uint8_t get_order(
+ const css_computed_style *style, int32_t *number)
+{
+ uint8_t bits = style->i.bits[ORDER_INDEX];
+ bits &= ORDER_MASK;
+ bits >>= ORDER_SHIFT;
+
+ /* 1bit: type */
+ if ((bits & 0x1) == CSS_ORDER_SET) {
+ *number = style->i.order;
+ }
+
+ return (bits & 0x1);
+}
+#undef ORDER_MASK
+#undef ORDER_SHIFT
+#undef ORDER_INDEX
+
+#define ALIGN_ITEMS_INDEX 37
+#define ALIGN_ITEMS_SHIFT 5
+#define ALIGN_ITEMS_MASK 0xe0
+static inline uint8_t get_align_items(
+ const css_computed_style *style)
+{
+ uint8_t bits = style->i.bits[ALIGN_ITEMS_INDEX];
+ bits &= ALIGN_ITEMS_MASK;
+ bits >>= ALIGN_ITEMS_SHIFT;
+
+ /* 3bits: type */
+ return bits;
+}
+#undef ALIGN_ITEMS_MASK
+#undef ALIGN_ITEMS_SHIFT
+#undef ALIGN_ITEMS_INDEX
+
+#define ALIGN_SELF_INDEX 37
+#define ALIGN_SELF_SHIFT 2
+#define ALIGN_SELF_MASK 0x1c
+static inline uint8_t get_align_self(
+ const css_computed_style *style)
+{
+ uint8_t bits = style->i.bits[ALIGN_SELF_INDEX];
+ bits &= ALIGN_SELF_MASK;
+ bits >>= ALIGN_SELF_SHIFT;
+
+ /* 3bits: type */
+ return bits;
+}
+#undef ALIGN_SELF_MASK
+#undef ALIGN_SELF_SHIFT
+#undef ALIGN_SELF_INDEX
+
#endif
diff --git a/src/select/propset.h b/src/select/propset.h
index 3f4038c..ea7ca48 100644
--- a/src/select/propset.h
+++ b/src/select/propset.h
@@ -908,7 +908,7 @@ static inline css_error set_background_image(
((type & 0x1) << BACKGROUND_IMAGE_SHIFT);
if (url != NULL) {
- style->i.background_image = lwc_string_ref(url);
+ style->i.background_image = lwc_string_ref(url);
} else {
style->i.background_image = NULL;
}
@@ -1361,7 +1361,7 @@ static inline css_error set_background_attachment(
#undef BACKGROUND_ATTACHMENT_SHIFT
#undef BACKGROUND_ATTACHMENT_INDEX
-#define BOX_SIZING_INDEX 34
+#define BOX_SIZING_INDEX 23
#define BOX_SIZING_SHIFT 0
#define BOX_SIZING_MASK 0x3
static inline css_error set_box_sizing(
@@ -1551,17 +1551,17 @@ static inline css_error set_font_style(
#undef FONT_STYLE_INDEX
#define MIN_HEIGHT_INDEX 19
-#define MIN_HEIGHT_SHIFT 3
-#define MIN_HEIGHT_MASK 0xf8
+#define MIN_HEIGHT_SHIFT 2
+#define MIN_HEIGHT_MASK 0xfc
static inline css_error set_min_height(
css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->i.bits[MIN_HEIGHT_INDEX];
- /* 5bits: uuuut : units | type */
+ /* 6bits: uuuutt : units | type */
*bits = (*bits & ~MIN_HEIGHT_MASK) |
- (((type & 0x1) | (unit << 1)) << MIN_HEIGHT_SHIFT);
+ (((type & 0x3) | (unit << 2)) << MIN_HEIGHT_SHIFT);
style->i.min_height = length;
@@ -1572,17 +1572,17 @@ static inline css_error set_min_height(
#undef MIN_HEIGHT_INDEX
#define MIN_WIDTH_INDEX 20
-#define MIN_WIDTH_SHIFT 3
-#define MIN_WIDTH_MASK 0xf8
+#define MIN_WIDTH_SHIFT 2
+#define MIN_WIDTH_MASK 0xfc
static inline css_error set_min_width(
css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->i.bits[MIN_WIDTH_INDEX];
- /* 5bits: uuuut : units | type */
+ /* 6bits: uuuutt : units | type */
*bits = (*bits & ~MIN_WIDTH_MASK) |
- (((type & 0x1) | (unit << 1)) << MIN_WIDTH_SHIFT);
+ (((type & 0x3) | (unit << 2)) << MIN_WIDTH_SHIFT);
style->i.min_width = length;
@@ -1592,9 +1592,9 @@ static inline css_error set_min_width(
#undef MIN_WIDTH_SHIFT
#undef MIN_WIDTH_INDEX
-#define BACKGROUND_REPEAT_INDEX 19
-#define BACKGROUND_REPEAT_SHIFT 0
-#define BACKGROUND_REPEAT_MASK 0x7
+#define BACKGROUND_REPEAT_INDEX 34
+#define BACKGROUND_REPEAT_SHIFT 2
+#define BACKGROUND_REPEAT_MASK 0x1c
static inline css_error set_background_repeat(
css_computed_style *style, uint8_t type)
{
@@ -1610,9 +1610,9 @@ static inline css_error set_background_repeat(
#undef BACKGROUND_REPEAT_SHIFT
#undef BACKGROUND_REPEAT_INDEX
-#define CLEAR_INDEX 20
-#define CLEAR_SHIFT 0
-#define CLEAR_MASK 0x7
+#define CLEAR_INDEX 36
+#define CLEAR_SHIFT 2
+#define CLEAR_MASK 0x1c
static inline css_error set_clear(
css_computed_style *style, uint8_t type)
{
@@ -2325,4 +2325,222 @@ static inline css_error set_widows(
#undef WIDOWS_SHIFT
#undef WIDOWS_MASK
+#define ALIGN_CONTENT_INDEX_A 34
+#define ALIGN_CONTENT_SHIFT_A 0
+#define ALIGN_CONTENT_MASK_A 0x3
+#define ALIGN_CONTENT_INDEX_B 35
+#define ALIGN_CONTENT_SHIFT_B 1
+#define ALIGN_CONTENT_MASK_B 0x2
+static inline css_error set_align_content(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits_a = &style->i.bits[ALIGN_CONTENT_INDEX_A];
+ uint8_t *bits_b = &style->i.bits[ALIGN_CONTENT_INDEX_B];
+
+ /* type is 3bits: assigning the least significant two */
+ *bits_a = (*bits_a & ~ALIGN_CONTENT_MASK_A) |
+ ((type & 0x3) << ALIGN_CONTENT_SHIFT_A);
+
+ /* type is 3bits: assigning the most significant one */
+ *bits_b = (*bits_b & ~ALIGN_CONTENT_MASK_B) |
+ (((type & 0x4) >> 2) << ALIGN_CONTENT_SHIFT_B);
+
+ return CSS_OK;
+}
+#undef ALIGN_CONTENT_MASK_A
+#undef ALIGN_CONTENT_SHIFT_A
+#undef ALIGN_CONTENT_INDEX_A
+#undef ALIGN_CONTENT_MASK_B
+#undef ALIGN_CONTENT_SHIFT_B
+#undef ALIGN_CONTENT_INDEX_B
+
+#define FLEX_WRAP_INDEX 19
+#define FLEX_WRAP_SHIFT 0
+#define FLEX_WRAP_MASK 0x3
+static inline css_error set_flex_wrap(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits = &style->i.bits[FLEX_WRAP_INDEX];
+
+ /* 2bits: type */
+ *bits = (*bits & ~FLEX_WRAP_MASK) |
+ ((type & 0x3) << FLEX_WRAP_SHIFT);
+
+ return CSS_OK;
+}
+#undef FLEX_WRAP_MASK
+#undef FLEX_WRAP_SHIFT
+#undef FLEX_WRAP_INDEX
+
+#define FLEX_BASIS_INDEX 35
+#define FLEX_BASIS_SHIFT 2
+#define FLEX_BASIS_MASK 0xfc
+static inline css_error set_flex_basis(
+ css_computed_style *style, uint8_t type,
+ css_fixed length, css_unit unit)
+{
+ uint8_t *bits = &style->i.bits[FLEX_BASIS_INDEX];
+
+ /* 6bits: uuuutt : units | type */
+ *bits = (*bits & ~FLEX_BASIS_MASK) |
+ (((type & 0x3) | (unit << 2)) << FLEX_BASIS_SHIFT);
+
+ style->i.flex_basis = length;
+
+ return CSS_OK;
+}
+
+#undef FLEX_BASIS_MASK
+#undef FLEX_BASIS_SHIFT
+#undef FLEX_BASIS_INDEX
+
+#define FLEX_SHRINK_INDEX 20
+#define FLEX_SHRINK_SHIFT 1
+#define FLEX_SHRINK_MASK 0x2
+static inline css_error set_flex_shrink(
+ css_computed_style *style, uint8_t type,
+ css_fixed number)
+{
+ uint8_t *bits = &style->i.bits[FLEX_SHRINK_INDEX];
+
+ /* 1bit: type */
+ *bits = (*bits & ~FLEX_SHRINK_MASK) |
+ ((type & 0x1) << FLEX_SHRINK_SHIFT);
+
+ style->i.flex_shrink = number;
+
+ return CSS_OK;
+}
+
+#undef FLEX_SHRINK_MASK
+#undef FLEX_SHRINK_SHIFT
+#undef FLEX_SHRINK_INDEX
+
+#define FLEX_GROW_INDEX 20
+#define FLEX_GROW_SHIFT 0
+#define FLEX_GROW_MASK 0x1
+static inline css_error set_flex_grow(
+ css_computed_style *style, uint8_t type,
+ css_fixed number)
+{
+ uint8_t *bits = &style->i.bits[FLEX_GROW_INDEX];
+
+ /* 1bit: type */
+ *bits = (*bits & ~FLEX_GROW_MASK) |
+ ((type & 0x1) << FLEX_GROW_SHIFT);
+
+ style->i.flex_grow = number;
+
+ return CSS_OK;
+}
+
+#undef FLEX_GROW_MASK
+#undef FLEX_GROW_SHIFT
+#undef FLEX_GROW_INDEX
+
+#define FLEX_DIRECTION_INDEX 36
+#define FLEX_DIRECTION_SHIFT 5
+#define FLEX_DIRECTION_MASK 0xe0
+static inline css_error set_flex_direction(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits = &style->i.bits[FLEX_DIRECTION_INDEX];
+
+ /* 3bits: type */
+ *bits = (*bits & ~FLEX_DIRECTION_MASK) |
+ ((type & 0x7) << FLEX_DIRECTION_SHIFT);
+
+ return CSS_OK;
+}
+#undef FLEX_DIRECTION_MASK
+#undef FLEX_DIRECTION_SHIFT
+#undef FLEX_DIRECTION_INDEX
+
+#define JUSTIFY_CONTENT_INDEX_A 35
+#define JUSTIFY_CONTENT_SHIFT_A 0
+#define JUSTIFY_CONTENT_MASK_A 0x1
+#define JUSTIFY_CONTENT_INDEX_B 36
+#define JUSTIFY_CONTENT_SHIFT_B 0
+#define JUSTIFY_CONTENT_MASK_B 0x3
+static inline css_error set_justify_content(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits_a = &style->i.bits[JUSTIFY_CONTENT_INDEX_A];
+ uint8_t *bits_b = &style->i.bits[JUSTIFY_CONTENT_INDEX_B];
+
+ /* type is 3bits: assigning the least significant one */
+ *bits_a = (*bits_a & ~JUSTIFY_CONTENT_MASK_A) |
+ ((type & 0x1) << JUSTIFY_CONTENT_SHIFT_A);
+
+ /* type is 3bits: assigning the most significant two */
+ *bits_b = (*bits_b & ~JUSTIFY_CONTENT_MASK_B) |
+ (((type & 0x6) >> 1) << JUSTIFY_CONTENT_SHIFT_B);
+
+ return CSS_OK;
+}
+#undef JUSTIFY_CONTENT_MASK_A
+#undef JUSTIFY_CONTENT_SHIFT_A
+#undef JUSTIFY_CONTENT_INDEX_A
+#undef JUSTIFY_CONTENT_MASK_B
+#undef JUSTIFY_CONTENT_SHIFT_B
+#undef JUSTIFY_CONTENT_INDEX_B
+
+#define ORDER_INDEX 37
+#define ORDER_SHIFT 1
+#define ORDER_MASK 0x2
+static inline css_error set_order(
+ css_computed_style *style, uint8_t type,
+ int32_t number)
+{
+ uint8_t *bits = &style->i.bits[ORDER_INDEX];
+
+ /* 1bit: type */
+ *bits = (*bits & ~ORDER_MASK) |
+ ((type & 0x1) << ORDER_SHIFT);
+
+ style->i.order = number;
+
+ return CSS_OK;
+}
+
+#undef ORDER_MASK
+#undef ORDER_SHIFT
+#undef ORDER_INDEX
+
+#define ALIGN_ITEMS_INDEX 37
+#define ALIGN_ITEMS_SHIFT 5
+#define ALIGN_ITEMS_MASK 0xe0
+static inline css_error set_align_items(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits = &style->i.bits[ALIGN_ITEMS_INDEX];
+
+ /* 3bits: type */
+ *bits = (*bits & ~ALIGN_ITEMS_MASK) |
+ ((type & 0x7) << ALIGN_ITEMS_SHIFT);
+
+ return CSS_OK;
+}
+#undef ALIGN_ITEMS_MASK
+#undef ALIGN_ITEMS_SHIFT
+#undef ALIGN_ITEMS_INDEX
+
+#define ALIGN_SELF_INDEX 37
+#define ALIGN_SELF_SHIFT 2
+#define ALIGN_SELF_MASK 0x1c
+static inline css_error set_align_self(
+ css_computed_style *style, uint8_t type)
+{
+ uint8_t *bits = &style->i.bits[ALIGN_SELF_INDEX];
+
+ /* 3bits: type */
+ *bits = (*bits & ~ALIGN_SELF_MASK) |
+ ((type & 0x7) << ALIGN_SELF_SHIFT);
+
+ return CSS_OK;
+}
+#undef ALIGN_SELF_MASK
+#undef ALIGN_SELF_SHIFT
+#undef ALIGN_SELF_INDEX
+
#endif
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=d351b7c543912294bb08...
commit d351b7c543912294bb0815b744153cd92dba8e3b
Author: Lucas Neves <lcneves(a)gmail.com>
Commit: Lucas Neves <lcneves(a)gmail.com>
parsing: Add support for parsing the flexbox properties.
diff --git a/src/parse/important.c b/src/parse/important.c
index ca4d60c..e0e8620 100644
--- a/src/parse/important.c
+++ b/src/parse/important.c
@@ -258,6 +258,21 @@ void css__make_style_important(css_style *style)
offset += 2; /* length + units */
break;
+ case CSS_PROP_FLEX_BASIS:
+ if (value == FLEX_BASIS_SET)
+ offset += 2; /* length + units */
+ break;
+
+ case CSS_PROP_FLEX_GROW:
+ if (value == FLEX_GROW_SET)
+ offset++; /* value */
+ break;
+
+ case CSS_PROP_FLEX_SHRINK:
+ if (value == FLEX_SHRINK_SET)
+ offset++; /* value */
+ break;
+
case CSS_PROP_FONT_FAMILY:
while (value != FONT_FAMILY_END) {
switch (value) {
@@ -331,6 +346,11 @@ void css__make_style_important(css_style *style)
offset++; /* value */
break;
+ case CSS_PROP_ORDER:
+ if (value == ORDER_SET)
+ offset++; /* value */
+ break;
+
case CSS_PROP_ORPHANS:
case CSS_PROP_PITCH_RANGE:
case CSS_PROP_RICHNESS:
diff --git a/src/parse/properties/Makefile b/src/parse/properties/Makefile
index 6d6cff0..6461dda 100644
--- a/src/parse/properties/Makefile
+++ b/src/parse/properties/Makefile
@@ -45,6 +45,8 @@ DIR_SOURCES := \
cue.c \
cursor.c \
elevation.c \
+ flex.c \
+ flex_flow.c \
font.c \
font_family.c \
font_weight.c \
diff --git a/src/parse/properties/flex.c b/src/parse/properties/flex.c
new file mode 100644
index 0000000..9e284d9
--- /dev/null
+++ b/src/parse/properties/flex.c
@@ -0,0 +1,213 @@
+/*
+ * This file is part of LibCSS.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "parse/properties/properties.h"
+#include "parse/properties/utils.h"
+
+/**
+ * Parse list-style
+ *
+ * \param c Parsing context
+ * \param vector Vector of tokens to process
+ * \param ctx Pointer to vector iteration context
+ * \param result Pointer to location to receive resulting style
+ * \return CSS_OK on success,
+ * CSS_NOMEM on memory exhaustion,
+ * CSS_INVALID if the input is not valid
+ *
+ * Post condition: \a *ctx is updated with the next token to process
+ * If the input is invalid, then \a *ctx remains unchanged.
+ */
+
+css_error css__parse_flex(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result)
+{
+ int orig_ctx = *ctx;
+ int prev_ctx;
+ const css_token *token;
+ css_error error;
+ bool grow = true;
+ bool shrink = true;
+ bool basis = true;
+ css_style *grow_style;
+ css_style *shrink_style;
+ css_style *basis_style;
+ bool short_auto = false;
+ bool short_none = false;
+ bool match;
+
+ /* Firstly, handle inherit */
+ token = parserutils_vector_peek(vector, *ctx);
+ if (token == NULL)
+ return CSS_INVALID;
+
+ if (is_css_inherit(c, token)) {
+ error = css_stylesheet_style_inherit(result,
+ CSS_PROP_FLEX_GROW);
+ if (error != CSS_OK)
+ return error;
+
+ error = css_stylesheet_style_inherit(result,
+ CSS_PROP_FLEX_SHRINK);
+
+ if (error != CSS_OK)
+ return error;
+
+ error = css_stylesheet_style_inherit(result,
+ CSS_PROP_FLEX_BASIS);
+
+ if (error == CSS_OK)
+ parserutils_vector_iterate(vector, ctx);
+
+ return error;
+ }
+
+ /* allocate styles */
+ error = css__stylesheet_style_create(c->sheet, &grow_style);
+ if (error != CSS_OK)
+ return error;
+
+ error = css__stylesheet_style_create(c->sheet, &shrink_style);
+ if (error != CSS_OK) {
+ css__stylesheet_style_destroy(grow_style);
+ return error;
+ }
+
+ error = css__stylesheet_style_create(c->sheet, &basis_style);
+ if (error != CSS_OK) {
+ css__stylesheet_style_destroy(grow_style);
+ css__stylesheet_style_destroy(shrink_style);
+ return error;
+ }
+
+ /* Handle shorthand none, equivalent of flex: 0 0 auto; */
+ if ((token->type == CSS_TOKEN_IDENT) &&
+ (lwc_string_caseless_isequal(
+ token->idata, c->strings[NONE],
+ &match) == lwc_error_ok && match)) {
+ short_none = true;
+ parserutils_vector_iterate(vector, ctx);
+
+ } else if ((token->type == CSS_TOKEN_IDENT) &&
+ (lwc_string_caseless_isequal(
+ token->idata, c->strings[AUTO],
+ &match) == lwc_error_ok && match)) {
+ /* Handle shorthand auto, equivalent of flex: 1 1 auto; */
+ short_auto = true;
+ parserutils_vector_iterate(vector, ctx);
+
+ } else do {
+ /* Attempt to parse the various longhand properties */
+ prev_ctx = *ctx;
+ error = CSS_OK;
+
+ /* Ensure that we're not about to parse another inherit */
+ token = parserutils_vector_peek(vector, *ctx);
+ if (token != NULL && is_css_inherit(c, token)) {
+ error = CSS_INVALID;
+ goto css__parse_flex_cleanup;
+ }
+
+ if ((grow) &&
+ (error = css__parse_flex_grow(c, vector,
+ ctx, grow_style)) == CSS_OK) {
+ grow = false;
+ } else if ((basis) &&
+ (error = css__parse_flex_basis(c, vector,
+ ctx, basis_style)) == CSS_OK) {
+ basis = false;
+ } else if ((shrink) &&
+ (error = css__parse_flex_shrink(c, vector,
+ ctx, shrink_style)) == CSS_OK) {
+ shrink = false;
+ }
+
+ if (error == CSS_OK) {
+ consumeWhitespace(vector, ctx);
+ token = parserutils_vector_peek(vector, *ctx);
+ } else {
+ /* Forcibly cause loop to exit */
+ token = NULL;
+ }
+ } while (*ctx != prev_ctx && token != NULL);
+
+ /* defaults */
+ if (grow) {
+ error = css__stylesheet_style_appendOPV(grow_style,
+ CSS_PROP_FLEX_GROW, 0, FLEX_GROW_SET);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ css_fixed grow_num = short_auto ? INTTOFIX(1) : 0;
+ error = css__stylesheet_style_append(grow_style, grow_num);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+ }
+
+ if (shrink) {
+ error = css__stylesheet_style_appendOPV(shrink_style,
+ CSS_PROP_FLEX_SHRINK, 0, FLEX_SHRINK_SET);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ css_fixed shrink_num = short_none ? 0 : INTTOFIX(1);
+ error = css__stylesheet_style_append(shrink_style, shrink_num);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+ }
+
+ if (basis) {
+ /* Default is auto, but zero if grow or shrink are set */
+ if (!grow || !shrink) {
+ error = css__stylesheet_style_appendOPV(basis_style,
+ CSS_PROP_FLEX_BASIS, 0,
+ FLEX_BASIS_SET);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ error = css__stylesheet_style_vappend(
+ basis_style, 2, 0, UNIT_PX);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ } else {
+ error = css__stylesheet_style_appendOPV(basis_style,
+ CSS_PROP_FLEX_BASIS, 0,
+ FLEX_BASIS_AUTO);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+ }
+ }
+
+ error = css__stylesheet_merge_style(result, grow_style);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ error = css__stylesheet_merge_style(result, shrink_style);
+ if (error != CSS_OK)
+ goto css__parse_flex_cleanup;
+
+ error = css__stylesheet_merge_style(result, basis_style);
+
+css__parse_flex_cleanup:
+
+ css__stylesheet_style_destroy(basis_style);
+ css__stylesheet_style_destroy(shrink_style);
+ css__stylesheet_style_destroy(grow_style);
+
+ if (error != CSS_OK)
+ *ctx = orig_ctx;
+
+ return error;
+}
+
diff --git a/src/parse/properties/flex_flow.c b/src/parse/properties/flex_flow.c
new file mode 100644
index 0000000..40a42d9
--- /dev/null
+++ b/src/parse/properties/flex_flow.c
@@ -0,0 +1,137 @@
+*
+ * This file is part of LibCSS.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2017 Lucas Neves <lcneves(a)gmail.com>
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "parse/properties/properties.h"
+#include "parse/properties/utils.h"
+
+/**
+ * Parse flex-flow
+ *
+ * \param c Parsing context
+ * \param vector Vector of tokens to process
+ * \param ctx Pointer to vector iteration context
+ * \param result Pointer to location to receive resulting style
+ * \return CSS_OK on success,
+ * CSS_NOMEM on memory exhaustion,
+ * CSS_INVALID if the input is not valid
+ *
+ * Post condition: \a *ctx is updated with the next token to process
+ * If the input is invalid, then \a *ctx remains unchanged.
+ */
+
+css_error css__parse_flex_flow(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result)
+{
+ int orig_ctx = *ctx;
+ int prev_ctx;
+ const css_token *token;
+ css_error error;
+ bool direction = true;
+ bool wrap = true;
+ css_style *direction_style;
+ css_style *wrap_style;
+
+ /* Firstly, handle inherit */
+ token = parserutils_vector_peek(vector, *ctx);
+ if (token == NULL)
+ return CSS_INVALID;
+
+ if (is_css_inherit(c, token)) {
+ error = css_stylesheet_style_inherit(result,
+ CSS_PROP_FLEX_DIRECTION);
+ if (error != CSS_OK)
+ return error;
+
+ error = css_stylesheet_style_inherit(result,
+ CSS_PROP_FLEX_WRAP);
+
+ if (error == CSS_OK)
+ parserutils_vector_iterate(vector, ctx);
+
+ return error;
+ }
+
+ /* allocate styles */
+ error = css__stylesheet_style_create(c->sheet, &direction_style);
+ if (error != CSS_OK)
+ return error;
+
+ error = css__stylesheet_style_create(c->sheet, &wrap_style);
+ if (error != CSS_OK) {
+ css__stylesheet_style_destroy(direction_style);
+ return error;
+ }
+
+ /* Attempt to parse the various longhand properties */
+ do {
+ prev_ctx = *ctx;
+ error = CSS_OK;
+
+ /* Ensure that we're not about to parse another inherit */
+ token = parserutils_vector_peek(vector, *ctx);
+ if (token != NULL && is_css_inherit(c, token)) {
+ error = CSS_INVALID;
+ goto css__parse_flex_flow_cleanup;
+ }
+
+ if ((wrap) &&
+ (error = css__parse_flex_wrap(c, vector,
+ ctx, wrap_style)) == CSS_OK) {
+ wrap = false;
+ } else if ((direction) &&
+ (error = css__parse_flex_direction(c, vector,
+ ctx, direction_style)) == CSS_OK) {
+ direction = false;
+ }
+
+ if (error == CSS_OK) {
+ consumeWhitespace(vector, ctx);
+
+ token = parserutils_vector_peek(vector, *ctx);
+ } else {
+ /* Forcibly cause loop to exit */
+ token = NULL;
+ }
+ } while (*ctx != prev_ctx && token != NULL);
+
+
+ /* defaults */
+ if (direction) {
+ error = css__stylesheet_style_appendOPV(direction_style,
+ CSS_PROP_FLEX_DIRECTION,
+ 0, FLEX_DIRECTION_ROW);
+ }
+
+ if (wrap) {
+ error = css__stylesheet_style_appendOPV(wrap_style,
+ CSS_PROP_FLEX_WRAP,
+ 0, FLEX_WRAP_NOWRAP);
+ }
+
+ error = css__stylesheet_merge_style(result, direction_style);
+ if (error != CSS_OK)
+ goto css__parse_flex_flow_cleanup;
+
+ error = css__stylesheet_merge_style(result, wrap_style);
+
+css__parse_flex_flow_cleanup:
+
+ css__stylesheet_style_destroy(wrap_style);
+ css__stylesheet_style_destroy(direction_style);
+
+ if (error != CSS_OK)
+ *ctx = orig_ctx;
+
+ return error;
+}
+
diff --git a/src/parse/properties/properties.c b/src/parse/properties/properties.c
index f32e374..3f374fa 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -12,6 +12,9 @@
*/
const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
{
+ css__parse_align_content,
+ css__parse_align_items,
+ css__parse_align_self,
css__parse_azimuth,
css__parse_background,
css__parse_background_attachment,
@@ -71,6 +74,13 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_display,
css__parse_elevation,
css__parse_empty_cells,
+ css__parse_flex,
+ css__parse_flex_basis,
+ css__parse_flex_direction,
+ css__parse_flex_flow,
+ css__parse_flex_grow,
+ css__parse_flex_shrink,
+ css__parse_flex_wrap,
css__parse_float,
css__parse_font,
css__parse_font_family,
@@ -79,6 +89,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_font_variant,
css__parse_font_weight,
css__parse_height,
+ css__parse_justify_content,
css__parse_left,
css__parse_letter_spacing,
css__parse_line_height,
@@ -96,6 +107,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_min_height,
css__parse_min_width,
css__parse_opacity,
+ css__parse_order,
css__parse_orphans,
css__parse_outline,
css__parse_outline_color,
@@ -146,4 +158,3 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_writing_mode,
css__parse_z_index
};
-
diff --git a/src/parse/properties/properties.gen b/src/parse/properties/properties.gen
index 60d5536..61dcd5e 100644
--- a/src/parse/properties/properties.gen
+++ b/src/parse/properties/properties.gen
@@ -16,7 +16,7 @@ cue_before:CSS_PROP_CUE_BEFORE IDENT:( INHERIT: NONE:0,CUE_BEFORE_NONE IDENT:) U
direction:CSS_PROP_DIRECTION IDENT:( INHERIT: LTR:0,DIRECTION_LTR RTL:0,DIRECTION_RTL IDENT:)
-display:CSS_PROP_DISPLAY IDENT:( INHERIT: INLINE:0,DISPLAY_INLINE BLOCK:0,DISPLAY_BLOCK LIST_ITEM:0,DISPLAY_LIST_ITEM RUN_IN:0,DISPLAY_RUN_IN INLINE_BLOCK:0,DISPLAY_INLINE_BLOCK TABLE:0,DISPLAY_TABLE INLINE_TABLE:0,DISPLAY_INLINE_TABLE TABLE_ROW_GROUP:0,DISPLAY_TABLE_ROW_GROUP TABLE_HEADER_GROUP:0,DISPLAY_TABLE_HEADER_GROUP TABLE_FOOTER_GROUP:0,DISPLAY_TABLE_FOOTER_GROUP TABLE_ROW:0,DISPLAY_TABLE_ROW TABLE_COLUMN_GROUP:0,DISPLAY_TABLE_COLUMN_GROUP TABLE_COLUMN:0,DISPLAY_TABLE_COLUMN TABLE_CELL:0,DISPLAY_TABLE_CELL TABLE_CAPTION:0,DISPLAY_TABLE_CAPTION NONE:0,DISPLAY_NONE IDENT:)
+display:CSS_PROP_DISPLAY IDENT:( INHERIT: INLINE:0,DISPLAY_INLINE BLOCK:0,DISPLAY_BLOCK LIST_ITEM:0,DISPLAY_LIST_ITEM RUN_IN:0,DISPLAY_RUN_IN INLINE_BLOCK:0,DISPLAY_INLINE_BLOCK TABLE:0,DISPLAY_TABLE INLINE_TABLE:0,DISPLAY_INLINE_TABLE TABLE_ROW_GROUP:0,DISPLAY_TABLE_ROW_GROUP TABLE_HEADER_GROUP:0,DISPLAY_TABLE_HEADER_GROUP TABLE_FOOTER_GROUP:0,DISPLAY_TABLE_FOOTER_GROUP TABLE_ROW:0,DISPLAY_TABLE_ROW TABLE_COLUMN_GROUP:0,DISPLAY_TABLE_COLUMN_GROUP TABLE_COLUMN:0,DISPLAY_TABLE_COLUMN TABLE_CELL:0,DISPLAY_TABLE_CELL TABLE_CAPTION:0,DISPLAY_TABLE_CAPTION NONE:0,DISPLAY_NONE FLEX:0,DISPLAY_FLEX INLINE_FLEX:0,DISPLAY_INLINE_FLEX IDENT:)
empty_cells:CSS_PROP_EMPTY_CELLS IDENT:( INHERIT: SHOW:0,EMPTY_CELLS_SHOW HIDE:0,EMPTY_CELLS_HIDE IDENT:)
@@ -43,9 +43,9 @@ max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:) L
max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:) LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
-min_height:CSS_PROP_MIN_HEIGHT IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:) LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
-min_width:CSS_PROP_MIN_WIDTH IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:) LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
color:CSS_PROP_COLOR IDENT:INHERIT COLOR:COLOR_SET
@@ -217,3 +217,23 @@ column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO IDE
writing_mode:CSS_PROP_WRITING_MODE IDENT:( INHERIT: HORIZONTAL_TB:0,WRITING_MODE_HORIZONTAL_TB VERTICAL_RL:0,WRITING_MODE_VERTICAL_RL VERTICAL_LR:0,WRITING_MODE_VERTICAL_LR IDENT:)
box_sizing:CSS_PROP_BOX_SIZING IDENT:( INHERIT: CONTENT_BOX:0,BOX_SIZING_CONTENT_BOX BORDER_BOX:0,BOX_SIZING_BORDER_BOX IDENT:)
+
+align_content:CSS_PROP_ALIGN_CONTENT IDENT:( INHERIT: STRETCH:0,ALIGN_CONTENT_STRETCH FLEX_START:0,ALIGN_CONTENT_FLEX_START FLEX_END:0,ALIGN_CONTENT_FLEX_END CENTER:0,ALIGN_CONTENT_CENTER SPACE_BETWEEN:0,ALIGN_CONTENT_SPACE_BETWEEN SPACE_AROUND:0,ALIGN_CONTENT_SPACE_AROUND SPACE_EVENLY:0,ALIGN_CONTENT_SPACE_EVENLY IDENT:)
+
+align_items:CSS_PROP_ALIGN_ITEMS IDENT:( INHERIT: STRETCH:0,ALIGN_ITEMS_STRETCH FLEX_START:0,ALIGN_ITEMS_FLEX_START FLEX_END:0,ALIGN_ITEMS_FLEX_END CENTER:0,ALIGN_ITEMS_CENTER BASELINE:0,ALIGN_ITEMS_BASELINE IDENT:)
+
+align_self:CSS_PROP_ALIGN_SELF IDENT:( INHERIT: STRETCH:0,ALIGN_SELF_STRETCH FLEX_START:0,ALIGN_SELF_FLEX_START FLEX_END:0,ALIGN_SELF_FLEX_END CENTER:0,ALIGN_SELF_CENTER BASELINE:0,ALIGN_SELF_BASELINE AUTO:0,ALIGN_SELF_AUTO IDENT:)
+
+flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+
+flex_direction:CSS_PROP_FLEX_DIRECTION IDENT:( INHERIT: ROW:0,FLEX_DIRECTION_ROW ROW_REVERSE:0,FLEX_DIRECTION_ROW_REVERSE COLUMN:0,FLEX_DIRECTION_COLUMN COLUMN_REVERSE:0,FLEX_DIRECTION_COLUMN_REVERSE IDENT:)
+
+flex_grow:CSS_PROP_FLEX_GROW IDENT:INHERIT NUMBER:( false:FLEX_GROW_SET RANGE:num<0 NUMBER:)
+
+flex_shrink:CSS_PROP_FLEX_SHRINK IDENT:INHERIT NUMBER:( false:FLEX_SHRINK_SET RANGE:num<0 NUMBER:)
+
+flex_wrap:CSS_PROP_FLEX_WRAP IDENT:( INHERIT: NOWRAP:0,FLEX_WRAP_NOWRAP WRAP_STRING:0,FLEX_WRAP_WRAP WRAP_REVERSE:0,FLEX_WRAP_WRAP_REVERSE IDENT:)
+
+justify_content:CSS_PROP_JUSTIFY_CONTENT IDENT:( INHERIT: FLEX_START:0,JUSTIFY_CONTENT_FLEX_START FLEX_END:0,JUSTIFY_CONTENT_FLEX_END CENTER:0,JUSTIFY_CONTENT_CENTER SPACE_BETWEEN:0,JUSTIFY_CONTENT_SPACE_BETWEEN SPACE_AROUND:0,JUSTIFY_CONTENT_SPACE_AROUND SPACE_EVENLY:0,JUSTIFY_CONTENT_SPACE_EVENLY IDENT:)
+
+order:CSS_PROP_ORDER IDENT:INHERIT NUMBER:( true:ORDER_SET NUMBER:)
diff --git a/src/parse/properties/properties.h b/src/parse/properties/properties.h
index 4517515..1e085c5 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -22,6 +22,15 @@ typedef css_error (*css_prop_handler)(css_language *c,
extern const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP];
+css_error css__parse_align_content(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_align_items(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_align_self(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
css_error css__parse_azimuth(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
@@ -199,6 +208,27 @@ css_error css__parse_elevation(css_language *c,
css_error css__parse_empty_cells(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
+css_error css__parse_flex(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_basis(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_direction(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_flow(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_grow(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_shrink(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
+css_error css__parse_flex_wrap(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
css_error css__parse_float(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
@@ -223,6 +253,9 @@ css_error css__parse_font_weight(css_language *c,
css_error css__parse_height(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
+css_error css__parse_justify_content(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
css_error css__parse_left(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
@@ -274,6 +307,9 @@ css_error css__parse_min_width(css_language *c,
css_error css__parse_opacity(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
+css_error css__parse_order(css_language *c,
+ const parserutils_vector *vector, int *ctx,
+ css_style *result);
css_error css__parse_orphans(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
@@ -423,4 +459,3 @@ css_error css__parse_z_index(css_language *c,
css_style *result);
#endif
-
diff --git a/src/parse/propstrings.c b/src/parse/propstrings.c
index dd6bee4..bfd2965 100644
--- a/src/parse/propstrings.c
+++ b/src/parse/propstrings.c
@@ -82,6 +82,9 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "before", SLEN("before") },
{ "after", SLEN("after") },
+ { "align-content", SLEN("align-content") },
+ { "align-items", SLEN("align-items") },
+ { "align-self", SLEN("align-self") },
{ "azimuth", SLEN("azimuth") },
{ "background", SLEN("background") },
{ "background-attachment", SLEN("background-attachment") },
@@ -141,6 +144,13 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "display", SLEN("display") },
{ "elevation", SLEN("elevation") },
{ "empty-cells", SLEN("empty-cells") },
+ { "flex", SLEN("flex") },
+ { "flex-basis", SLEN("flex-basis") },
+ { "flex-direction", SLEN("flex-direction") },
+ { "flex-flow", SLEN("flex-flow") },
+ { "flex-grow", SLEN("flex-grow") },
+ { "flex-shrink", SLEN("flex-shrink") },
+ { "flex-wrap", SLEN("flex-wrap") },
{ "float", SLEN("float") },
{ "font", SLEN("font") },
{ "font-family", SLEN("font-family") },
@@ -149,6 +159,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "font-variant", SLEN("font-variant") },
{ "font-weight", SLEN("font-weight") },
{ "height", SLEN("height") },
+ { "justify-content", SLEN("justify-content") },
{ "left", SLEN("left") },
{ "letter-spacing", SLEN("letter-spacing") },
{ "line-height", SLEN("line-height") },
@@ -166,6 +177,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "min-height", SLEN("min-height") },
{ "min-width", SLEN("min-width") },
{ "opacity", SLEN("opacity") },
+ { "order", SLEN("order") },
{ "orphans", SLEN("orphans") },
{ "outline", SLEN("outline") },
{ "outline-color", SLEN("outline-color") },
@@ -415,6 +427,18 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "vertical-lr", SLEN("vertical-lr") },
{ "content-box", SLEN("content-box") },
{ "border-box", SLEN("border-box") },
+ { "stretch", SLEN("stretch") },
+ { "inline-flex", SLEN("inline-flex") },
+ { "flex-start", SLEN("flex-start") },
+ { "flex-end", SLEN("flex-end") },
+ { "space-between", SLEN("space-between") },
+ { "space-around", SLEN("space-around") },
+ { "space-evenly", SLEN("space-evenly") },
+ { "row", SLEN("row") },
+ { "row-reverse", SLEN("row-reverse") },
+ { "column-reverse", SLEN("column-reverse") },
+ { "wrap", SLEN("wrap") },
+ { "wrap-reverse", SLEN("wrap-reverse") },
{ "aliceblue", SLEN("aliceblue") },
{ "antiquewhite", SLEN("antiquewhite") },
@@ -621,5 +645,3 @@ void css__propstrings_unref(void)
lwc_string_unref(css__propstrings.strings[i]);
}
}
-
-
diff --git a/src/parse/propstrings.h b/src/parse/propstrings.h
index e0d16e2..67eaa5f 100644
--- a/src/parse/propstrings.h
+++ b/src/parse/propstrings.h
@@ -38,12 +38,12 @@ enum {
/* Properties */
FIRST_PROP,
- AZIMUTH = FIRST_PROP, BACKGROUND, BACKGROUND_ATTACHMENT,
- BACKGROUND_COLOR, BACKGROUND_IMAGE, BACKGROUND_POSITION,
- BACKGROUND_REPEAT, BORDER, BORDER_BOTTOM, BORDER_BOTTOM_COLOR,
- BORDER_BOTTOM_STYLE, BORDER_BOTTOM_WIDTH, BORDER_COLLAPSE,
- BORDER_COLOR, BORDER_LEFT, BORDER_LEFT_COLOR, BORDER_LEFT_STYLE,
- BORDER_LEFT_WIDTH, BORDER_RIGHT, BORDER_RIGHT_COLOR,
+ ALIGN_CONTENT = FIRST_PROP, ALIGN_ITEMS, ALIGN_SELF, AZIMUTH,
+ BACKGROUND, BACKGROUND_ATTACHMENT, BACKGROUND_COLOR, BACKGROUND_IMAGE,
+ BACKGROUND_POSITION, BACKGROUND_REPEAT, BORDER, BORDER_BOTTOM,
+ BORDER_BOTTOM_COLOR, BORDER_BOTTOM_STYLE, BORDER_BOTTOM_WIDTH,
+ BORDER_COLLAPSE, BORDER_COLOR, BORDER_LEFT, BORDER_LEFT_COLOR,
+ BORDER_LEFT_STYLE, BORDER_LEFT_WIDTH, BORDER_RIGHT, BORDER_RIGHT_COLOR,
BORDER_RIGHT_STYLE, BORDER_RIGHT_WIDTH, BORDER_SPACING,
BORDER_STYLE, BORDER_TOP, BORDER_TOP_COLOR, BORDER_TOP_STYLE,
BORDER_TOP_WIDTH, BORDER_WIDTH, BOTTOM, BOX_SIZING, BREAK_AFTER,
@@ -51,21 +51,22 @@ enum {
COLUMN_COUNT, COLUMN_FILL, COLUMN_GAP, COLUMN_RULE, COLUMN_RULE_COLOR,
COLUMN_RULE_STYLE, COLUMN_RULE_WIDTH, COLUMN_SPAN, COLUMN_WIDTH,
CONTENT, COUNTER_INCREMENT, COUNTER_RESET, CUE, CUE_AFTER, CUE_BEFORE,
- CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, LIBCSS_FLOAT, FONT,
- FONT_FAMILY, FONT_SIZE, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, HEIGHT,
- LEFT, LETTER_SPACING, LINE_HEIGHT, LIST_STYLE, LIST_STYLE_IMAGE,
- LIST_STYLE_POSITION, LIST_STYLE_TYPE, MARGIN, MARGIN_BOTTOM,
- MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MAX_HEIGHT, MAX_WIDTH,
- MIN_HEIGHT, MIN_WIDTH, OPACITY, ORPHANS, OUTLINE, OUTLINE_COLOR,
- OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW, OVERFLOW_X, OVERFLOW_Y, PADDING,
- PADDING_BOTTOM, PADDING_LEFT, PADDING_RIGHT, PADDING_TOP,
- PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE, PAGE_BREAK_INSIDE, PAUSE,
- PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH, PLAY_DURING, POSITION,
- QUOTES, RICHNESS, RIGHT, SPEAK_HEADER, SPEAK_NUMERAL, SPEAK_PUNCTUATION,
- SPEAK, SPEECH_RATE, STRESS, TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION,
- TEXT_INDENT, TEXT_TRANSFORM, TOP, UNICODE_BIDI, VERTICAL_ALIGN,
- VISIBILITY, VOICE_FAMILY, VOLUME, WHITE_SPACE, WIDOWS, WIDTH,
- WORD_SPACING, WRITING_MODE, Z_INDEX,
+ CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FLEX, FLEX_BASIS,
+ FLEX_DIRECTION, FLEX_FLOW, FLEX_GROW, FLEX_SHRINK, FLEX_WRAP,
+ LIBCSS_FLOAT, FONT, FONT_FAMILY, FONT_SIZE, FONT_STYLE, FONT_VARIANT,
+ FONT_WEIGHT, HEIGHT, JUSTIFY_CONTENT, LEFT, LETTER_SPACING, LINE_HEIGHT,
+ LIST_STYLE, LIST_STYLE_IMAGE, LIST_STYLE_POSITION, LIST_STYLE_TYPE,
+ MARGIN, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP,
+ MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH, OPACITY, ORDER, ORPHANS,
+ OUTLINE, OUTLINE_COLOR, OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW,
+ OVERFLOW_X, OVERFLOW_Y, PADDING, PADDING_BOTTOM, PADDING_LEFT,
+ PADDING_RIGHT, PADDING_TOP, PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE,
+ PAGE_BREAK_INSIDE, PAUSE, PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH,
+ PLAY_DURING, POSITION, QUOTES, RICHNESS, RIGHT, SPEAK_HEADER,
+ SPEAK_NUMERAL, SPEAK_PUNCTUATION, SPEAK, SPEECH_RATE, STRESS,
+ TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM,
+ TOP, UNICODE_BIDI, VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME,
+ WHITE_SPACE, WIDOWS, WIDTH, WORD_SPACING, WRITING_MODE, Z_INDEX,
LAST_PROP = Z_INDEX,
@@ -98,7 +99,9 @@ enum {
LIBCSS_RIGHT, CURRENTCOLOR, ODD, EVEN, SRC, LOCAL, INITIAL,
FORMAT, WOFF, TRUETYPE, OPENTYPE, EMBEDDED_OPENTYPE, SVG, COLUMN,
AVOID_PAGE, AVOID_COLUMN, BALANCE, HORIZONTAL_TB, VERTICAL_RL,
- VERTICAL_LR, CONTENT_BOX, BORDER_BOX,
+ VERTICAL_LR, CONTENT_BOX, BORDER_BOX, STRETCH, INLINE_FLEX, FLEX_START,
+ FLEX_END, SPACE_BETWEEN, SPACE_AROUND, SPACE_EVENLY, ROW, ROW_REVERSE,
+ COLUMN_REVERSE, WRAP_STRING, WRAP_REVERSE,
/* Named colours */
FIRST_COLOUR,
@@ -138,4 +141,3 @@ css_error css__propstrings_get(lwc_string ***strings);
void css__propstrings_unref(void);
#endif
-
-----------------------------------------------------------------------
Summary of changes:
src/parse/properties/flex_flow.c | 4 +-
test/dump_computed.h | 122 +++++++++++++++++++-------------------
2 files changed, 63 insertions(+), 63 deletions(-)
diff --git a/src/parse/properties/flex_flow.c b/src/parse/properties/flex_flow.c
index 80f2558..6a83e15 100644
--- a/src/parse/properties/flex_flow.c
+++ b/src/parse/properties/flex_flow.c
@@ -108,13 +108,13 @@ css_error css__parse_flex_flow(css_language *c,
/* defaults */
if (direction) {
error = css__stylesheet_style_appendOPV(direction_style,
- CSS_PROP_FLEX_DIRECTION,
+ CSS_PROP_FLEX_DIRECTION,
0, FLEX_DIRECTION_ROW);
}
if (wrap) {
error = css__stylesheet_style_appendOPV(wrap_style,
- CSS_PROP_FLEX_WRAP,
+ CSS_PROP_FLEX_WRAP,
0, FLEX_WRAP_NOWRAP);
}
diff --git a/test/dump_computed.h b/test/dump_computed.h
index c33704a..2a8b009 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -283,8 +283,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* background-image */
val = css_computed_background_image(style, &url);
- if (val == CSS_BACKGROUND_IMAGE_INHERIT) {
- wrote = snprintf(ptr, *len, "background-image: inherit\n");
+ if (val == CSS_BACKGROUND_IMAGE_INHERIT) {
+ wrote = snprintf(ptr, *len, "background-image: inherit\n");
} else if (val == CSS_BACKGROUND_IMAGE_IMAGE && url != NULL) {
wrote = snprintf(ptr, *len, "background-image: url('%.*s')\n",
(int) lwc_string_length(url),
@@ -301,10 +301,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
val = css_computed_background_position(style, &len1, &unit1,
&len2, &unit2);
if (val == CSS_BACKGROUND_POSITION_INHERIT) {
- wrote = snprintf(ptr, *len, "background-position: inherit\n");
- ptr += wrote;
- *len -= wrote;
- } else if (val == CSS_BACKGROUND_POSITION_SET) {
+ wrote = snprintf(ptr, *len, "background-position: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
+ } else if (val == CSS_BACKGROUND_POSITION_SET) {
wrote = snprintf(ptr, *len, "background-position: ");
ptr += wrote;
*len -= wrote;
@@ -372,10 +372,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* border-spacing */
val = css_computed_border_spacing(style, &len1, &unit1, &len2, &unit2);
- if (val == CSS_BORDER_SPACING_INHERIT) {
- wrote = snprintf(ptr, *len, "border-spacing: inherit\n");
- ptr += wrote;
- *len -= wrote;
+ if (val == CSS_BORDER_SPACING_INHERIT) {
+ wrote = snprintf(ptr, *len, "border-spacing: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
} else if (val == CSS_BORDER_SPACING_SET) {
wrote = snprintf(ptr, *len, "border-spacing: ");
ptr += wrote;
@@ -1035,13 +1035,13 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* color */
val = css_computed_color(style, &color);
- if (val == CSS_COLOR_INHERIT) {
- wrote = snprintf(ptr, *len, "color: inherit\n");
+ if (val == CSS_COLOR_INHERIT) {
+ wrote = snprintf(ptr, *len, "color: inherit\n");
} else if (val == CSS_COLOR_COLOR) {
wrote = snprintf(ptr, *len, "color: #%08x\n", color);
}
- ptr += wrote;
- *len -= wrote;
+ ptr += wrote;
+ *len -= wrote;
/* column-count */
val = css_computed_column_count(style, &integer);
@@ -1122,8 +1122,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
color);
break;
}
- ptr += wrote;
- *len -= wrote;
+ ptr += wrote;
+ *len -= wrote;
/* column-rule-style */
val = css_computed_column_rule_style(style);
@@ -1357,9 +1357,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* counter-increment */
val = css_computed_counter_increment(style, &counter);
- if (val == CSS_COUNTER_INCREMENT_INHERIT) {
- wrote = snprintf(ptr, *len, "counter-increment: inherit\n");
- } else if (counter == NULL) {
+ if (val == CSS_COUNTER_INCREMENT_INHERIT) {
+ wrote = snprintf(ptr, *len, "counter-increment: inherit\n");
+ } else if (counter == NULL) {
wrote = snprintf(ptr, *len, "counter-increment: none\n");
} else {
wrote = snprintf(ptr, *len, "counter-increment:");
@@ -1387,8 +1387,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* counter-reset */
val = css_computed_counter_reset(style, &counter);
- if (val == CSS_COUNTER_RESET_INHERIT) {
- wrote = snprintf(ptr, *len, "counter-reset: inherit\n");
+ if (val == CSS_COUNTER_RESET_INHERIT) {
+ wrote = snprintf(ptr, *len, "counter-reset: inherit\n");
} else if (counter == NULL) {
wrote = snprintf(ptr, *len, "counter-reset: none\n");
} else {
@@ -1657,9 +1657,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* flex-grow */
val = css_computed_flex_grow(style, &len1);
switch (val) {
- case CSS_FLEX_GROW_INHERIT:
- wrote = snprintf(ptr, *len, "flex-grow: inherit\n");
- break;
+ case CSS_FLEX_GROW_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-grow: inherit\n");
+ break;
case CSS_FLEX_GROW_SET:
wrote = snprintf(ptr, *len, "flex-grow: ");
ptr += wrote;
@@ -1681,9 +1681,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* flex-shrink */
val = css_computed_flex_shrink(style, &len1);
switch (val) {
- case CSS_FLEX_SHRINK_INHERIT:
- wrote = snprintf(ptr, *len, "flex-shrink: inherit\n");
- break;
+ case CSS_FLEX_SHRINK_INHERIT:
+ wrote = snprintf(ptr, *len, "flex-shrink: inherit\n");
+ break;
case CSS_FLEX_SHRINK_SET:
wrote = snprintf(ptr, *len, "flex-shrink: ");
ptr += wrote;
@@ -1749,10 +1749,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* font-family */
val = css_computed_font_family(style, &string_list);
if (val == CSS_FONT_FAMILY_INHERIT) {
- wrote = snprintf(ptr, *len, "font-family: inherit\n");
- ptr += wrote;
- *len -= wrote;
- } else {
+ wrote = snprintf(ptr, *len, "font-family: inherit\n");
+ ptr += wrote;
+ *len -= wrote;
+ } else {
wrote = snprintf(ptr, *len, "font-family:");
ptr += wrote;
*len -= wrote;
@@ -2085,8 +2085,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* list-style-image */
val = css_computed_list_style_image(style, &url);
- if (val == CSS_LIST_STYLE_IMAGE_INHERIT) {
- wrote = snprintf(ptr, *len, "list-style-image: inherit\n");
+ if (val == CSS_LIST_STYLE_IMAGE_INHERIT) {
+ wrote = snprintf(ptr, *len, "list-style-image: inherit\n");
} else if (url != NULL) {
wrote = snprintf(ptr, *len, "list-style-image: url('%.*s')\n",
(int) lwc_string_length(url),
@@ -2344,10 +2344,10 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
switch (val) {
case CSS_MIN_HEIGHT_INHERIT:
wrote = snprintf(ptr, *len, "min-height: inherit\n");
- break;
+ break;
case CSS_MIN_HEIGHT_AUTO:
wrote = snprintf(ptr, *len, "min-height: auto\n");
- break;
+ break;
case CSS_MIN_HEIGHT_SET:
wrote = snprintf(ptr, *len, "min-height: ");
ptr += wrote;
@@ -2369,12 +2369,12 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* min-width */
val = css_computed_min_width(style, &len1, &unit1);
switch (val) {
- case CSS_MIN_WIDTH_INHERIT:
- wrote = snprintf(ptr, *len, "min-width: inherit\n");
- break;
- case CSS_MIN_WIDTH_AUTO:
- wrote = snprintf(ptr, *len, "min-width: auto\n");
- break;
+ case CSS_MIN_WIDTH_INHERIT:
+ wrote = snprintf(ptr, *len, "min-width: inherit\n");
+ break;
+ case CSS_MIN_WIDTH_AUTO:
+ wrote = snprintf(ptr, *len, "min-width: auto\n");
+ break;
case CSS_MIN_WIDTH_SET:
wrote = snprintf(ptr, *len, "min-width: ");
ptr += wrote;
@@ -2396,9 +2396,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* opacity */
val = css_computed_opacity(style, &len1);
switch (val) {
- case CSS_OPACITY_INHERIT:
- wrote = snprintf(ptr, *len, "opacity: inherit\n");
- break;
+ case CSS_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "opacity: inherit\n");
+ break;
case CSS_OPACITY_SET:
wrote = snprintf(ptr, *len, "opacity: ");
ptr += wrote;
@@ -2578,9 +2578,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-top */
val = css_computed_padding_top(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-top: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-top: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-top: ");
ptr += wrote;
@@ -2602,9 +2602,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-right */
val = css_computed_padding_right(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-right: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-right: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-right: ");
ptr += wrote;
@@ -2626,9 +2626,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-bottom */
val = css_computed_padding_bottom(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-bottom: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-bottom: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-bottom: ");
ptr += wrote;
@@ -2650,9 +2650,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* padding-left */
val = css_computed_padding_left(style, &len1, &unit1);
switch (val) {
- case CSS_PADDING_INHERIT:
- wrote = snprintf(ptr, *len, "padding-left: inherit\n");
- break;
+ case CSS_PADDING_INHERIT:
+ wrote = snprintf(ptr, *len, "padding-left: inherit\n");
+ break;
case CSS_PADDING_SET:
wrote = snprintf(ptr, *len, "padding-left: ");
ptr += wrote;
@@ -2815,8 +2815,8 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* text-decoration */
val = css_computed_text_decoration(style);
- if (val == CSS_TEXT_DECORATION_INHERIT) {
- wrote = snprintf(ptr, *len, "text-decoration: inherit\n");
+ if (val == CSS_TEXT_DECORATION_INHERIT) {
+ wrote = snprintf(ptr, *len, "text-decoration: inherit\n");
ptr += wrote;
*len -= wrote;
} else if (val == CSS_TEXT_DECORATION_NONE) {
@@ -2857,9 +2857,9 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
/* text-indent */
val = css_computed_text_indent(style, &len1, &unit1);
switch (val) {
- case CSS_TEXT_INDENT_INHERIT:
- wrote = snprintf(ptr, *len, "text-indent: inherit\n");
- break;
+ case CSS_TEXT_INDENT_INHERIT:
+ wrote = snprintf(ptr, *len, "text-indent: inherit\n");
+ break;
case CSS_TEXT_INDENT_SET:
wrote = snprintf(ptr, *len, "text-indent: ");
ptr += wrote;
--
Cascading Style Sheets library