layoutcss_parser/components/
extender.rs1use 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}