FastWave2.0/frontend/src/diagram_panel.rs
2024-11-08 21:35:07 +01:00

41 lines
1.1 KiB
Rust

use zoon::*;
mod excalidraw_canvas;
use excalidraw_canvas::ExcalidrawCanvas;
pub use excalidraw_canvas::ExcalidrawController;
#[derive(Clone)]
pub struct DiagramPanel {
canvas_controller: Mutable<Mutable<Option<SendWrapper<ExcalidrawController>>>>,
}
impl DiagramPanel {
pub fn new(
canvas_controller: Mutable<Mutable<Option<SendWrapper<ExcalidrawController>>>>,
) -> impl Element {
Self { canvas_controller }.root()
}
fn root(&self) -> impl Element {
Column::new()
.s(Padding::all(20))
.s(Scrollbars::y_and_clip_x())
.s(Width::fill())
.s(Height::fill())
.s(Gap::new().y(20))
.item(self.canvas())
}
fn canvas(&self) -> impl Element {
let canvas_controller = self.canvas_controller.clone();
ExcalidrawCanvas::new()
.s(Align::new().top())
.s(Width::fill())
.s(Height::fill())
.task_with_controller(move |controller| {
canvas_controller.set(controller.clone());
async {}
})
}
}