summaryrefslogtreecommitdiff
path: root/crates/typst-library/src/layout/hide.rs
blob: c6e83e0c2b15a3ed5ab3b0117ee3b159839b55e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use crate::prelude::*;

/// Hides content without affecting layout.
///
/// The `hide` function allows you to hide content while the layout still 'sees'
/// it. This is useful to create whitespace that is exactly as large as some
/// content. It may also be useful to redact content because its arguments are
/// not included in the output.
///
/// ## Example { #example }
/// ```example
/// Hello Jane \
/// #hide[Hello] Joe
/// ```
///
/// Display: Hide
/// Category: layout
#[element(Show)]
pub struct HideElem {
    /// The content to hide.
    #[required]
    pub body: Content,
}

impl Show for HideElem {
    #[tracing::instrument(name = "HideElem::show", skip(self))]
    fn show(&self, _: &mut Vt, _: StyleChain) -> SourceResult<Content> {
        Ok(self.body().styled(MetaElem::set_data(vec![Meta::Hide])))
    }
}