#[cfg(feature = "expander")]
use {crate::expander::Expander, iced_core::Element};
#[cfg(feature = "ribbon")]
use {
crate::ribbon::{self, Group, Ribbon},
iced_widget::{button, svg, text},
};
#[cfg(feature = "selector_bar")]
use crate::selector_bar::{
self, SelectorBar,
item::{self, Item as SelectorBarItem},
};
#[cfg(feature = "ribbon")]
#[must_use]
pub fn ribbon<'a, Id, Message, Theme, Renderer>(
groups: impl IntoIterator<Item = Group<'a, Id, Message, Theme, Renderer>>,
) -> Ribbon<'a, Id, Message, Theme, Renderer>
where
Id: Clone + Eq,
Message: 'a + Clone,
Theme: 'a + ribbon::Catalog + button::Catalog + svg::Catalog + text::Catalog,
<Theme as text::Catalog>::Class<'a>: From<text::StyleFn<'a, Theme>>,
Renderer: 'a + iced_core::Renderer + iced_core::svg::Renderer + iced_core::text::Renderer,
<Renderer as iced_core::text::Renderer>::Font: From<iced_core::Font>,
<Renderer as iced_core::text::Renderer>::Paragraph: Clone,
{
Ribbon::new(groups)
}
#[cfg(feature = "selector_bar")]
#[must_use]
pub fn selector_bar<'a, Id, Message, Theme, Renderer>(
items: impl IntoIterator<Item = SelectorBarItem<'a, Id, Message, Theme, Renderer>>,
selected_id: Id,
on_select: impl Fn(Id) -> Message + 'a,
) -> SelectorBar<'a, Id, Message, Theme, Renderer>
where
Id: Eq,
Theme: selector_bar::Catalog + item::Catalog,
{
SelectorBar::new(items, selected_id, on_select)
}
#[cfg(feature = "expander")]
#[must_use]
pub fn expander<'a, H, C, Message, Theme, Renderer>(
header: H,
content: C,
is_expanded: bool,
) -> Expander<'a, Message, Theme, Renderer>
where
H: Into<Element<'a, Message, Theme, Renderer>>,
C: Into<Element<'a, Message, Theme, Renderer>>,
{
Expander::new(header, content, is_expanded)
}