use reflexo::typst::TypstDocument;
use reflexo_typst2vec::ir::{Abs, LayoutRegion, LayoutRegionNode, MultiVecDocument};
use reflexo_typst2vec::pass::Typst2VecPass;
#[derive(Default)]
pub struct DynamicLayoutSvgExporter {
pub typst2vec: Typst2VecPass,
pub layouts: Vec<(Abs, LayoutRegionNode)>,
}
impl DynamicLayoutSvgExporter {
pub fn render(&mut self, output: &TypstDocument) -> LayoutRegionNode {
self.typst2vec.reset();
let pages = self.typst2vec.doc(output);
LayoutRegionNode::new_pages(pages)
}
pub fn finalize(self) -> MultiVecDocument {
let module = self.typst2vec.finalize();
MultiVecDocument {
module,
layouts: vec![LayoutRegion::new_by_scalar("width".into(), self.layouts)],
}
}
}