//! A text selection API built around `iced`'s [`Paragraph`]. //! //! [`Paragraph`]: https://docs.iced.rs/iced_graphics/text/paragraph/struct.Paragraph.html pub mod markdown; pub mod selection; pub mod text; use iced_widget::core; use iced_widget::graphics::text::Paragraph; pub use markdown::view as markdown; #[doc(no_inline)] pub use text::Text; /// Creates a new [`Text`] widget with the provided content. #[macro_export] macro_rules! text { ($($arg:tt)*) => { $crate::Text::new(format!($($arg)*)) }; } /// Creates some [`Rich`] text with the given spans. /// /// [`Rich`]: crate::text::Rich #[macro_export] macro_rules! rich_text { () => ( $crate::text::Rich::new() ); ($($x:expr),+ $(,)?) => ( $crate::text::Rich::from_iter([$($crate::text::Span::from($x)),+]) ); } /// Creates a new [`Text`] widget with the provided content. pub fn text<'a, Theme, Renderer>( text: impl text::IntoFragment<'a>, ) -> Text<'a, Theme, Renderer> where Theme: text::Catalog + 'a, Renderer: core::text::Renderer, { Text::new(text) } /// Creates some [`Rich`] text with the given spans. /// /// [`Rich`]: crate::text::Rich pub fn rich_text<'a, Link, Message, Theme, Renderer>( spans: impl AsRef<[text::Span<'a, Link, core::Font>]> + 'a, ) -> text::Rich<'a, Link, Message, Theme, Renderer> where Link: Clone + 'static, Theme: text::Catalog + 'a, Renderer: core::text::Renderer, { text::Rich::with_spans(spans) } /// Creates a new [`Span`] of text with the provided content. /// /// A [`Span`] is a fragment of some [`Rich`] text. /// /// [`Rich`]: crate::text::Rich /// [`Span`]: crate::text::Span pub fn span<'a, Link>( text: impl text::IntoFragment<'a>, ) -> text::Span<'a, Link, core::Font> { text::Span::new(text) }