use dioxus::prelude::*; use strum::EnumMessage; use crate::views::editor::dionotes_editor::{Editor, EditorShell, Home}; use crate::views::workspace_selector::selector::Selector; /// Alle Routen der App in einem Enum. /// /// Bewusst *ein* Router statt zweier: Zwei Routable-Enums teilen sich dieselbe /// History, und beide hatten `/` belegt — beim Umschalten hätte der Editor eine /// URL zu sehen bekommen, die er nicht kennt. #[derive(Debug, Clone, Routable, PartialEq, EnumMessage)] #[rustfmt::skip] pub enum Route { #[nest("/workspace")] #[layout(EditorShell)] #[route("/")] #[strum(message = "Home")] Home {}, #[route("/editor")] #[strum(message = "Editor")] Editor {}, #[end_layout] #[end_nest] #[route("/")] Selector {}, } impl Route { /// Die Einträge der Datei-Leiste im Editor. /// /// Explizit statt über `EnumIter`, weil das Enum jetzt auch den Selector /// enthält und der in dieser Leiste nichts zu suchen hat. Wermutstropfen: /// eine neue Editor-Route hier einzutragen erzwingt der Compiler nicht. pub const EDITOR_TABS: [Self; 2] = [Self::Home {}, Self::Editor {}]; }