2023-10-29 21:29:16 +00:00
|
|
|
use super::macros::iselector;
|
2023-10-27 22:59:40 +00:00
|
|
|
use super::registry::Registry;
|
2023-10-27 17:05:34 +00:00
|
|
|
use super::IHeading;
|
|
|
|
use super::ISection;
|
2023-10-29 21:29:16 +00:00
|
|
|
use crate::error::CustomError;
|
2023-10-27 22:59:40 +00:00
|
|
|
use futures::future::{BoxFuture, FutureExt};
|
2023-10-27 17:05:34 +00:00
|
|
|
|
2023-10-29 19:36:15 +00:00
|
|
|
#[derive(Debug, Clone)]
|
2023-10-27 17:05:34 +00:00
|
|
|
pub(crate) enum IDocumentElement {
|
|
|
|
Heading(IHeading),
|
|
|
|
Section(ISection),
|
|
|
|
}
|
2023-10-27 22:59:40 +00:00
|
|
|
|
2023-10-29 21:29:16 +00:00
|
|
|
iselector!(
|
|
|
|
IDocumentElement,
|
|
|
|
DocumentElement,
|
|
|
|
|registry, original| async {
|
|
|
|
match &original {
|
|
|
|
organic::types::DocumentElement::Heading(inner) => Ok(IDocumentElement::Heading(
|
|
|
|
IHeading::new(registry, inner).await?,
|
|
|
|
)),
|
|
|
|
organic::types::DocumentElement::Section(inner) => Ok(IDocumentElement::Section(
|
|
|
|
ISection::new(registry, inner).await?,
|
|
|
|
)),
|
2023-10-27 22:59:40 +00:00
|
|
|
}
|
|
|
|
}
|
2023-10-29 21:29:16 +00:00
|
|
|
);
|