encre_css/plugins/layout/overflow/
mod.rs

1#![doc = include_str!("README.md")]
2#![doc(alias = "layout")]
3use crate::prelude::build_plugin::*;
4
5#[derive(Debug)]
6pub(crate) struct PluginDefinition;
7
8impl Plugin for PluginDefinition {
9    fn can_handle(&self, context: ContextCanHandle) -> bool {
10        matches!(
11            context.modifier,
12            Modifier::Builtin {
13                value: "auto"
14                    | "x-auto"
15                    | "y-auto"
16                    | "hidden"
17                    | "x-hidden"
18                    | "y-hidden"
19                    | "visible"
20                    | "x-visible"
21                    | "y-visible"
22                    | "scroll"
23                    | "x-scroll"
24                    | "y-scroll",
25                ..
26            }
27        )
28    }
29
30    fn handle(&self, context: &mut ContextHandle) {
31        match context.modifier {
32            Modifier::Builtin { value, .. } => match *value {
33                "auto" => context.buffer.line("overflow: auto;"),
34                "x-auto" => context.buffer.line("overflow-x: auto;"),
35                "y-auto" => context.buffer.line("overflow-y: auto;"),
36                "hidden" => context.buffer.line("overflow: hidden;"),
37                "x-hidden" => context.buffer.line("overflow-x: hidden;"),
38                "y-hidden" => context.buffer.line("overflow-y: hidden;"),
39                "visible" => context.buffer.line("overflow: visible;"),
40                "x-visible" => context.buffer.line("overflow-x: visible;"),
41                "y-visible" => context.buffer.line("overflow-y: visible;"),
42                "scroll" => context.buffer.line("overflow: scroll;"),
43                "x-scroll" => context.buffer.line("overflow-x: scroll;"),
44                "y-scroll" => context.buffer.line("overflow-y: scroll;"),
45                _ => unreachable!(),
46            },
47            Modifier::Arbitrary { .. } => unreachable!(),
48        }
49    }
50}