1use azul_css::{
67 css::CssPropertyValue,
68 props::{
69 basic::{
70 font::StyleFontWeight, length::PercentageValue, pixel::PixelValue, ColorU,
71 StyleFontSize,
72 },
73 layout::{
74 dimensions::{LayoutHeight, LayoutWidth},
75 display::LayoutDisplay,
76 fragmentation::{BreakInside, PageBreak},
77 spacing::{
78 LayoutMarginBottom, LayoutMarginLeft, LayoutMarginRight, LayoutMarginTop,
79 LayoutPaddingBottom, LayoutPaddingInlineEnd, LayoutPaddingInlineStart,
80 LayoutPaddingLeft, LayoutPaddingRight, LayoutPaddingTop,
81 },
82 },
83 property::{CssProperty, CssPropertyType},
84 style::{
85 border::{BorderStyle, LayoutBorderTopWidth, StyleBorderTopColor, StyleBorderTopStyle},
86 content::CounterReset,
87 effects::StyleCursor,
88 lists::StyleListStyleType,
89 text::StyleTextDecoration,
90 StyleTextAlign, StyleVerticalAlign,
91 },
92 },
93};
94
95use crate::dom::NodeType;
96
97static WIDTH_100_PERCENT: CssProperty = CssProperty::Width(CssPropertyValue::Exact(
99 LayoutWidth::Px(PixelValue::const_percent(100)),
100));
101
102static HEIGHT_100_PERCENT: CssProperty = CssProperty::Height(CssPropertyValue::Exact(
104 LayoutHeight::Px(PixelValue::const_percent(100)),
105));
106
107static DISPLAY_BLOCK: CssProperty =
109 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::Block));
110
111static DISPLAY_INLINE: CssProperty =
113 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::Inline));
114
115static DISPLAY_INLINE_BLOCK: CssProperty =
117 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::InlineBlock));
118
119static DISPLAY_NONE: CssProperty =
121 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::None));
122
123static DISPLAY_TABLE: CssProperty =
125 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::Table));
126
127static DISPLAY_TABLE_ROW: CssProperty =
129 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableRow));
130
131static DISPLAY_TABLE_CELL: CssProperty =
133 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableCell));
134
135static DISPLAY_TABLE_HEADER_GROUP: CssProperty =
137 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableHeaderGroup));
138
139static DISPLAY_TABLE_ROW_GROUP: CssProperty =
141 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableRowGroup));
142
143static DISPLAY_TABLE_FOOTER_GROUP: CssProperty =
145 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableFooterGroup));
146
147static DISPLAY_TABLE_CAPTION: CssProperty =
149 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableCaption));
150
151static DISPLAY_TABLE_COLUMN_GROUP: CssProperty =
153 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableColumnGroup));
154
155static DISPLAY_TABLE_COLUMN: CssProperty =
157 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::TableColumn));
158
159static DISPLAY_LIST_ITEM: CssProperty =
161 CssProperty::Display(CssPropertyValue::Exact(LayoutDisplay::ListItem));
162
163static CURSOR_POINTER: CssProperty =
165 CssProperty::Cursor(CssPropertyValue::Exact(StyleCursor::Pointer));
166
167static CURSOR_TEXT: CssProperty =
169 CssProperty::Cursor(CssPropertyValue::Exact(StyleCursor::Text));
170
171static MARGIN_TOP_ZERO: CssProperty =
173 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
174 inner: PixelValue::const_px(0),
175 }));
176
177static MARGIN_BOTTOM_ZERO: CssProperty =
179 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
180 inner: PixelValue::const_px(0),
181 }));
182
183static MARGIN_LEFT_ZERO: CssProperty =
185 CssProperty::MarginLeft(CssPropertyValue::Exact(LayoutMarginLeft {
186 inner: PixelValue::const_px(0),
187 }));
188
189static MARGIN_RIGHT_ZERO: CssProperty =
191 CssProperty::MarginRight(CssPropertyValue::Exact(LayoutMarginRight {
192 inner: PixelValue::const_px(0),
193 }));
194
195static MARGIN_TOP_8PX: CssProperty =
198 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
199 inner: PixelValue::const_px(8),
200 }));
201
202static MARGIN_BOTTOM_8PX: CssProperty =
204 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
205 inner: PixelValue::const_px(8),
206 }));
207
208static MARGIN_LEFT_8PX: CssProperty =
210 CssProperty::MarginLeft(CssPropertyValue::Exact(LayoutMarginLeft {
211 inner: PixelValue::const_px(8),
212 }));
213
214static MARGIN_RIGHT_8PX: CssProperty =
216 CssProperty::MarginRight(CssPropertyValue::Exact(LayoutMarginRight {
217 inner: PixelValue::const_px(8),
218 }));
219
220static FONT_SIZE_2EM: CssProperty = CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
222 inner: PixelValue::const_em(2),
223}));
224
225static FONT_SIZE_1_5EM: CssProperty =
227 CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
228 inner: PixelValue::const_em_fractional(1, 5),
229 }));
230
231static FONT_SIZE_1_17EM: CssProperty =
233 CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
234 inner: PixelValue::const_em_fractional(1, 17),
235 }));
236
237static FONT_SIZE_1EM: CssProperty = CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
239 inner: PixelValue::const_em(1),
240}));
241
242static FONT_SIZE_0_83EM: CssProperty =
244 CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
245 inner: PixelValue::const_em_fractional(0, 83),
246 }));
247
248static FONT_SIZE_0_67EM: CssProperty =
250 CssProperty::FontSize(CssPropertyValue::Exact(StyleFontSize {
251 inner: PixelValue::const_em_fractional(0, 67),
252 }));
253
254static MARGIN_TOP_1EM: CssProperty =
256 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
257 inner: PixelValue::const_em(1),
258 }));
259
260static MARGIN_BOTTOM_1EM: CssProperty =
262 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
263 inner: PixelValue::const_em(1),
264 }));
265
266static MARGIN_TOP_0_67EM: CssProperty =
268 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
269 inner: PixelValue::const_em_fractional(0, 67),
270 }));
271
272static MARGIN_BOTTOM_0_67EM: CssProperty =
274 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
275 inner: PixelValue::const_em_fractional(0, 67),
276 }));
277
278static MARGIN_TOP_0_83EM: CssProperty =
280 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
281 inner: PixelValue::const_em_fractional(0, 83),
282 }));
283
284static MARGIN_BOTTOM_0_83EM: CssProperty =
286 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
287 inner: PixelValue::const_em_fractional(0, 83),
288 }));
289
290static MARGIN_TOP_1_33EM: CssProperty =
292 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
293 inner: PixelValue::const_em_fractional(1, 33),
294 }));
295
296static MARGIN_BOTTOM_1_33EM: CssProperty =
298 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
299 inner: PixelValue::const_em_fractional(1, 33),
300 }));
301
302static MARGIN_TOP_1_67EM: CssProperty =
304 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
305 inner: PixelValue::const_em_fractional(1, 67),
306 }));
307
308static MARGIN_BOTTOM_1_67EM: CssProperty =
310 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
311 inner: PixelValue::const_em_fractional(1, 67),
312 }));
313
314static MARGIN_TOP_2_33EM: CssProperty =
316 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
317 inner: PixelValue::const_em_fractional(2, 33),
318 }));
319
320static MARGIN_BOTTOM_2_33EM: CssProperty =
322 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
323 inner: PixelValue::const_em_fractional(2, 33),
324 }));
325
326static FONT_WEIGHT_BOLD: CssProperty =
328 CssProperty::FontWeight(CssPropertyValue::Exact(StyleFontWeight::Bold));
329
330static FONT_WEIGHT_BOLDER: CssProperty =
332 CssProperty::FontWeight(CssPropertyValue::Exact(StyleFontWeight::Bolder));
333
334static PADDING_1PX: CssProperty =
336 CssProperty::PaddingTop(CssPropertyValue::Exact(LayoutPaddingTop {
337 inner: PixelValue::const_px(1),
338 }));
339
340static PADDING_TOP_1PX: CssProperty =
341 CssProperty::PaddingTop(CssPropertyValue::Exact(LayoutPaddingTop {
342 inner: PixelValue::const_px(1),
343 }));
344
345static PADDING_BOTTOM_1PX: CssProperty =
346 CssProperty::PaddingBottom(CssPropertyValue::Exact(LayoutPaddingBottom {
347 inner: PixelValue::const_px(1),
348 }));
349
350static PADDING_LEFT_1PX: CssProperty =
351 CssProperty::PaddingLeft(CssPropertyValue::Exact(LayoutPaddingLeft {
352 inner: PixelValue::const_px(1),
353 }));
354
355static PADDING_RIGHT_1PX: CssProperty =
356 CssProperty::PaddingRight(CssPropertyValue::Exact(LayoutPaddingRight {
357 inner: PixelValue::const_px(1),
358 }));
359
360static TEXT_ALIGN_CENTER: CssProperty =
362 CssProperty::TextAlign(CssPropertyValue::Exact(StyleTextAlign::Center));
363
364static VERTICAL_ALIGN_MIDDLE: CssProperty =
366 CssProperty::VerticalAlign(CssPropertyValue::Exact(StyleVerticalAlign::Middle));
367
368static LIST_STYLE_TYPE_DISC: CssProperty =
370 CssProperty::ListStyleType(CssPropertyValue::Exact(StyleListStyleType::Disc));
371
372static LIST_STYLE_TYPE_DECIMAL: CssProperty =
374 CssProperty::ListStyleType(CssPropertyValue::Exact(StyleListStyleType::Decimal));
375
376static MARGIN_TOP_0_5EM: CssProperty =
381 CssProperty::MarginTop(CssPropertyValue::Exact(LayoutMarginTop {
382 inner: PixelValue::const_em_fractional(0, 5),
383 }));
384
385static MARGIN_BOTTOM_0_5EM: CssProperty =
387 CssProperty::MarginBottom(CssPropertyValue::Exact(LayoutMarginBottom {
388 inner: PixelValue::const_em_fractional(0, 5),
389 }));
390
391static BORDER_TOP_STYLE_INSET: CssProperty =
393 CssProperty::BorderTopStyle(CssPropertyValue::Exact(StyleBorderTopStyle {
394 inner: BorderStyle::Inset,
395 }));
396
397static BORDER_TOP_WIDTH_1PX: CssProperty =
399 CssProperty::BorderTopWidth(CssPropertyValue::Exact(LayoutBorderTopWidth {
400 inner: PixelValue::const_px(1),
401 }));
402
403static BORDER_TOP_COLOR_GRAY: CssProperty =
405 CssProperty::BorderTopColor(CssPropertyValue::Exact(StyleBorderTopColor {
406 inner: ColorU {
407 r: 128,
408 g: 128,
409 b: 128,
410 a: 255,
411 },
412 }));
413
414static HEIGHT_ZERO: CssProperty = CssProperty::Height(CssPropertyValue::Exact(LayoutHeight::Px(
416 PixelValue::const_px(0),
417)));
418
419static COUNTER_RESET_LIST_ITEM: CssProperty =
422 CssProperty::CounterReset(CssPropertyValue::Exact(CounterReset::list_item()));
423
424static BREAK_INSIDE_AVOID: CssProperty = CssProperty::break_inside(BreakInside::Avoid);
433
434static BREAK_BEFORE_PAGE: CssProperty = CssProperty::break_before(PageBreak::Page);
437
438static BREAK_AFTER_PAGE: CssProperty = CssProperty::break_after(PageBreak::Page);
441
442static BREAK_BEFORE_AVOID: CssProperty = CssProperty::break_before(PageBreak::Avoid);
445
446static BREAK_AFTER_AVOID: CssProperty = CssProperty::break_after(PageBreak::Avoid);
449
450static PADDING_INLINE_START_40PX: CssProperty =
463 CssProperty::PaddingLeft(CssPropertyValue::Exact(LayoutPaddingLeft {
464 inner: PixelValue::const_px(40),
465 }));
466
467static TEXT_DECORATION_UNDERLINE: CssProperty = CssProperty::TextDecoration(
469 CssPropertyValue::Exact(StyleTextDecoration::Underline),
470);
471
472pub fn get_ua_property(
494 node_type: &NodeType,
495 property_type: CssPropertyType,
496) -> Option<&'static CssProperty> {
497 use CssPropertyType as PT;
498 use NodeType as NT;
499
500 let result = match (node_type, property_type) {
501 (NT::Body, PT::Display) => Some(&DISPLAY_BLOCK),
506 (NT::Body, PT::MarginTop) => Some(&MARGIN_TOP_8PX),
509 (NT::Body, PT::MarginBottom) => Some(&MARGIN_BOTTOM_8PX),
510 (NT::Body, PT::MarginLeft) => Some(&MARGIN_LEFT_8PX),
511 (NT::Body, PT::MarginRight) => Some(&MARGIN_RIGHT_8PX),
512
513 (NT::Div, PT::Display) => Some(&DISPLAY_BLOCK),
519 (NT::P, PT::Display) => Some(&DISPLAY_BLOCK),
520 (NT::P, PT::MarginTop) => Some(&MARGIN_TOP_1EM),
525 (NT::P, PT::MarginBottom) => Some(&MARGIN_BOTTOM_1EM),
526 (NT::Main, PT::Display) => Some(&DISPLAY_BLOCK),
527 (NT::Header, PT::Display) => Some(&DISPLAY_BLOCK),
528 (NT::Footer, PT::Display) => Some(&DISPLAY_BLOCK),
529 (NT::Section, PT::Display) => Some(&DISPLAY_BLOCK),
530 (NT::Article, PT::Display) => Some(&DISPLAY_BLOCK),
531 (NT::Aside, PT::Display) => Some(&DISPLAY_BLOCK),
532 (NT::Nav, PT::Display) => Some(&DISPLAY_BLOCK),
533
534 (NT::H1, PT::Display) => Some(&DISPLAY_BLOCK),
538 (NT::H1, PT::FontSize) => Some(&FONT_SIZE_2EM),
539 (NT::H1, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
540 (NT::H1, PT::MarginTop) => Some(&MARGIN_TOP_0_67EM),
541 (NT::H1, PT::MarginBottom) => Some(&MARGIN_BOTTOM_0_67EM),
542 (NT::H1, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
543 (NT::H1, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
544
545 (NT::H2, PT::Display) => Some(&DISPLAY_BLOCK),
546 (NT::H2, PT::FontSize) => Some(&FONT_SIZE_1_5EM),
547 (NT::H2, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
548 (NT::H2, PT::MarginTop) => Some(&MARGIN_TOP_0_83EM),
549 (NT::H2, PT::MarginBottom) => Some(&MARGIN_BOTTOM_0_83EM),
550 (NT::H2, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
551 (NT::H2, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
552
553 (NT::H3, PT::Display) => Some(&DISPLAY_BLOCK),
554 (NT::H3, PT::FontSize) => Some(&FONT_SIZE_1_17EM),
555 (NT::H3, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
556 (NT::H3, PT::MarginTop) => Some(&MARGIN_TOP_1EM),
557 (NT::H3, PT::MarginBottom) => Some(&MARGIN_BOTTOM_1EM),
558 (NT::H3, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
559 (NT::H3, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
560
561 (NT::H4, PT::Display) => Some(&DISPLAY_BLOCK),
562 (NT::H4, PT::FontSize) => Some(&FONT_SIZE_1EM),
563 (NT::H4, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
564 (NT::H4, PT::MarginTop) => Some(&MARGIN_TOP_1_33EM),
565 (NT::H4, PT::MarginBottom) => Some(&MARGIN_BOTTOM_1_33EM),
566 (NT::H4, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
567 (NT::H4, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
568
569 (NT::H5, PT::Display) => Some(&DISPLAY_BLOCK),
570 (NT::H5, PT::FontSize) => Some(&FONT_SIZE_0_83EM),
571 (NT::H5, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
572 (NT::H5, PT::MarginTop) => Some(&MARGIN_TOP_1_67EM),
573 (NT::H5, PT::MarginBottom) => Some(&MARGIN_BOTTOM_1_67EM),
574 (NT::H5, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
575 (NT::H5, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
576
577 (NT::H6, PT::Display) => Some(&DISPLAY_BLOCK),
578 (NT::H6, PT::FontSize) => Some(&FONT_SIZE_0_67EM),
579 (NT::H6, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
580 (NT::H6, PT::MarginTop) => Some(&MARGIN_TOP_2_33EM),
581 (NT::H6, PT::MarginBottom) => Some(&MARGIN_BOTTOM_2_33EM),
582 (NT::H6, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
583 (NT::H6, PT::BreakAfter) => Some(&BREAK_AFTER_AVOID),
584
585 (NT::Ul, PT::Display) => Some(&DISPLAY_BLOCK),
587 (NT::Ul, PT::ListStyleType) => Some(&LIST_STYLE_TYPE_DISC),
588 (NT::Ul, PT::CounterReset) => Some(&COUNTER_RESET_LIST_ITEM),
589 (NT::Ul, PT::PaddingLeft) => Some(&PADDING_INLINE_START_40PX),
590 (NT::Ol, PT::Display) => Some(&DISPLAY_BLOCK),
591 (NT::Ol, PT::ListStyleType) => Some(&LIST_STYLE_TYPE_DECIMAL),
592 (NT::Ol, PT::CounterReset) => Some(&COUNTER_RESET_LIST_ITEM),
593 (NT::Ol, PT::PaddingLeft) => Some(&PADDING_INLINE_START_40PX),
594 (NT::Li, PT::Display) => Some(&DISPLAY_LIST_ITEM),
595 (NT::Dl, PT::Display) => Some(&DISPLAY_BLOCK),
596 (NT::Dt, PT::Display) => Some(&DISPLAY_BLOCK),
597 (NT::Dd, PT::Display) => Some(&DISPLAY_BLOCK),
598
599 (NT::Span, PT::Display) => Some(&DISPLAY_INLINE),
601 (NT::A, PT::Display) => Some(&DISPLAY_INLINE),
602 (NT::A, PT::TextDecoration) => Some(&TEXT_DECORATION_UNDERLINE),
603 (NT::Strong, PT::Display) => Some(&DISPLAY_INLINE),
604 (NT::Strong, PT::FontWeight) => Some(&FONT_WEIGHT_BOLDER),
605 (NT::Em, PT::Display) => Some(&DISPLAY_INLINE),
606 (NT::B, PT::Display) => Some(&DISPLAY_INLINE),
607 (NT::B, PT::FontWeight) => Some(&FONT_WEIGHT_BOLDER),
608 (NT::I, PT::Display) => Some(&DISPLAY_INLINE),
609 (NT::U, PT::Display) => Some(&DISPLAY_INLINE),
610 (NT::U, PT::TextDecoration) => Some(&TEXT_DECORATION_UNDERLINE),
611 (NT::Small, PT::Display) => Some(&DISPLAY_INLINE),
612 (NT::Code, PT::Display) => Some(&DISPLAY_INLINE),
613 (NT::Kbd, PT::Display) => Some(&DISPLAY_INLINE),
614 (NT::Samp, PT::Display) => Some(&DISPLAY_INLINE),
615 (NT::Sub, PT::Display) => Some(&DISPLAY_INLINE),
616 (NT::Sup, PT::Display) => Some(&DISPLAY_INLINE),
617
618 (NT::Pre, PT::Display) => Some(&DISPLAY_BLOCK),
620 (NT::BlockQuote, PT::Display) => Some(&DISPLAY_BLOCK),
621 (NT::Hr, PT::Display) => Some(&DISPLAY_BLOCK),
622 (NT::Hr, PT::Width) => Some(&WIDTH_100_PERCENT),
623 (NT::Hr, PT::Height) => Some(&HEIGHT_ZERO),
624 (NT::Hr, PT::MarginTop) => Some(&MARGIN_TOP_0_5EM),
625 (NT::Hr, PT::MarginBottom) => Some(&MARGIN_BOTTOM_0_5EM),
626 (NT::Hr, PT::BorderTopStyle) => Some(&BORDER_TOP_STYLE_INSET),
627 (NT::Hr, PT::BorderTopWidth) => Some(&BORDER_TOP_WIDTH_1PX),
628 (NT::Hr, PT::BorderTopColor) => Some(&BORDER_TOP_COLOR_GRAY),
629
630 (NT::Table, PT::Display) => Some(&DISPLAY_TABLE),
634 (NT::THead, PT::Display) => Some(&DISPLAY_TABLE_HEADER_GROUP),
636 (NT::THead, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
637 (NT::THead, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
638 (NT::TBody, PT::Display) => Some(&DISPLAY_TABLE_ROW_GROUP),
639 (NT::TBody, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
640 (NT::TFoot, PT::Display) => Some(&DISPLAY_TABLE_FOOTER_GROUP),
642 (NT::TFoot, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
643 (NT::TFoot, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
644 (NT::Tr, PT::Display) => Some(&DISPLAY_TABLE_ROW),
645 (NT::Tr, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
646 (NT::Tr, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
647 (NT::Th, PT::Display) => Some(&DISPLAY_TABLE_CELL),
648 (NT::Th, PT::TextAlign) => Some(&TEXT_ALIGN_CENTER),
649 (NT::Th, PT::FontWeight) => Some(&FONT_WEIGHT_BOLD),
650 (NT::Th, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
651 (NT::Th, PT::PaddingTop) => Some(&PADDING_TOP_1PX),
652 (NT::Th, PT::PaddingBottom) => Some(&PADDING_BOTTOM_1PX),
653 (NT::Th, PT::PaddingLeft) => Some(&PADDING_LEFT_1PX),
654 (NT::Th, PT::PaddingRight) => Some(&PADDING_RIGHT_1PX),
655 (NT::Td, PT::Display) => Some(&DISPLAY_TABLE_CELL),
656 (NT::Td, PT::VerticalAlign) => Some(&VERTICAL_ALIGN_MIDDLE),
657 (NT::Td, PT::PaddingTop) => Some(&PADDING_TOP_1PX),
658 (NT::Td, PT::PaddingBottom) => Some(&PADDING_BOTTOM_1PX),
659 (NT::Td, PT::PaddingLeft) => Some(&PADDING_LEFT_1PX),
660 (NT::Td, PT::PaddingRight) => Some(&PADDING_RIGHT_1PX),
661
662 (NT::Form, PT::Display) => Some(&DISPLAY_BLOCK),
664 (NT::Input, PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
665 (NT::Button, PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
666 (NT::Button, PT::Cursor) => Some(&CURSOR_POINTER),
667 (NT::Text(_), PT::Cursor) => Some(&CURSOR_TEXT),
671 (NT::Select, PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
672 (NT::TextArea, PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
673 (NT::TextArea, PT::Cursor) => Some(&CURSOR_TEXT),
675 (NT::Label, PT::Display) => Some(&DISPLAY_INLINE),
676 (NT::Head, PT::Display) => Some(&DISPLAY_NONE),
678 (NT::Title, PT::Display) => Some(&DISPLAY_NONE),
679 (NT::Script, PT::Display) => Some(&DISPLAY_NONE),
680 (NT::Style, PT::Display) => Some(&DISPLAY_NONE),
681 (NT::Link, PT::Display) => Some(&DISPLAY_NONE),
682
683 (NT::Br, PT::Display) => Some(&DISPLAY_BLOCK),
685 (NT::Image(_), PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
687
688 (NT::Video, PT::Display) => Some(&DISPLAY_INLINE),
690 (NT::Audio, PT::Display) => Some(&DISPLAY_INLINE),
691 (NT::Canvas, PT::Display) => Some(&DISPLAY_INLINE),
692 (NT::Svg, PT::Display) => Some(&DISPLAY_INLINE),
693 (NT::IFrame(_), PT::Display) => Some(&DISPLAY_INLINE),
694
695 (NT::Icon(_), PT::Display) => Some(&DISPLAY_INLINE_BLOCK),
697
698 (NT::Input, PT::Display) => Some(&DISPLAY_INLINE),
700 (NT::Button, PT::Display) => Some(&DISPLAY_INLINE),
701 (NT::Select, PT::Display) => Some(&DISPLAY_INLINE),
702 (NT::TextArea, PT::Display) => Some(&DISPLAY_INLINE),
703 (NT::SelectOption, PT::Display) => Some(&DISPLAY_NONE),
704 (NT::OptGroup, PT::Display) => Some(&DISPLAY_NONE),
705
706 (NT::Abbr, PT::Display) => Some(&DISPLAY_INLINE),
708 (NT::Cite, PT::Display) => Some(&DISPLAY_INLINE),
709 (NT::Del, PT::Display) => Some(&DISPLAY_INLINE),
710 (NT::Ins, PT::Display) => Some(&DISPLAY_INLINE),
711 (NT::Mark, PT::Display) => Some(&DISPLAY_INLINE),
712 (NT::Q, PT::Display) => Some(&DISPLAY_INLINE),
713 (NT::Dfn, PT::Display) => Some(&DISPLAY_INLINE),
714 (NT::Var, PT::Display) => Some(&DISPLAY_INLINE),
715 (NT::Time, PT::Display) => Some(&DISPLAY_INLINE),
716 (NT::Data, PT::Display) => Some(&DISPLAY_INLINE),
717 (NT::Wbr, PT::Display) => Some(&DISPLAY_INLINE),
718 (NT::Bdi, PT::Display) => Some(&DISPLAY_INLINE),
719 (NT::Bdo, PT::Display) => Some(&DISPLAY_INLINE),
720 (NT::Rp, PT::Display) => Some(&DISPLAY_INLINE),
721 (NT::Rt, PT::Display) => Some(&DISPLAY_INLINE),
722 (NT::Rtc, PT::Display) => Some(&DISPLAY_INLINE),
723 (NT::Ruby, PT::Display) => Some(&DISPLAY_INLINE),
724
725 (NT::FieldSet, PT::Display) => Some(&DISPLAY_BLOCK),
728 (NT::Figure, PT::Display) => Some(&DISPLAY_BLOCK),
729 (NT::Figure, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
730 (NT::FigCaption, PT::Display) => Some(&DISPLAY_BLOCK),
731 (NT::FigCaption, PT::BreakInside) => Some(&BREAK_INSIDE_AVOID),
732 (NT::Details, PT::Display) => Some(&DISPLAY_BLOCK),
733 (NT::Summary, PT::Display) => Some(&DISPLAY_BLOCK),
734 (NT::Dialog, PT::Display) => Some(&DISPLAY_BLOCK),
735
736 (NT::Caption, PT::Display) => Some(&DISPLAY_TABLE_CAPTION),
738 (NT::ColGroup, PT::Display) => Some(&DISPLAY_TABLE_COLUMN_GROUP),
739 (NT::Col, PT::Display) => Some(&DISPLAY_TABLE_COLUMN),
740
741 (NT::Menu, PT::Display) => Some(&DISPLAY_BLOCK),
743 (NT::Dir, PT::Display) => Some(&DISPLAY_BLOCK),
744
745 (NT::Html, PT::Display) => Some(&DISPLAY_BLOCK),
756 (NT::Html, PT::Height) => Some(&HEIGHT_100_PERCENT),
757
758 (_, PT::Display) => Some(&DISPLAY_INLINE),
762
763 _ => None,
765 };
766
767 result
768}