layoutcss_parser/components/
extender.rs

1use std::collections::HashSet;
2const EXTENDER_STYLE: &str = r#"
3  extender-l{
4    display:block;
5    width: calc(100% + var(--pr) + var(--pl));
6    margin-inline-start: calc(0px - var(--pl));
7    margin-inline-end: calc(0px - var(--pr));
8  }
9"#;
10
11const EXTENDER_SCREEN_STYLE: &str = r#"
12  extender-l[layout~=screen]{
13    width: 100cqw;
14    position: relative;
15    margin-left: -50cqw;
16    margin-right: -50cqw;
17    left: 50%;
18    right: 50%;
19  }
20  "#;
21
22const EXTENDER_KEEP_CENTER_STYLE: &str = r#"
23  extender-l[layout~="keep-center"] > *{
24    box-sizing: content-box;
25    max-inline-size: var(--center-max-width);
26    margin-inline: auto;
27  }
28  "#;
29
30const EXTENDER_KEEP_P_STYLE: &str = r#"
31  extender-l[layout~="keep-p"] {
32    padding-right: var(--pr);
33    padding-left: var(--pl);
34  }
35"#;
36
37const EXTENDER_KEEP_PL_STYLE: &str = r#"
38  extender-l[layout~="keep-pl"] {
39    padding-left: var(--pl);
40    padding-right: unset;
41  }
42"#;
43
44const EXTENDER_KEEP_PR_STYLE: &str = r#"
45  extender-l[layout~="keep-pr"] {
46    padding-right: var(--pr);
47    padding-left: unset;
48  }
49"#;
50
51pub fn extender_css(
52    screen: bool,
53    keep_center: bool,
54    keep_p: bool,
55    keep_pl: bool,
56    keep_pr: bool,
57    set: &mut HashSet<String>,
58) {
59    set.insert(EXTENDER_STYLE.to_string());
60    if screen {
61        set.insert(EXTENDER_SCREEN_STYLE.to_string());
62    }
63    if keep_center {
64        set.insert(EXTENDER_KEEP_CENTER_STYLE.to_string());
65    }
66    if keep_p {
67        set.insert(EXTENDER_KEEP_P_STYLE.to_string());
68    }
69    if keep_pl {
70        set.insert(EXTENDER_KEEP_PL_STYLE.to_string());
71    }
72    if keep_pr {
73        set.insert(EXTENDER_KEEP_PR_STYLE.to_string());
74    }
75}